fix(test): fix a flaky pubsub test
This commit was moved from ipfs/interface-go-ipfs-core@00de46e290cf0a47bb78a9e8aa264f4b6ce941cd This commit was moved from ipfs/boxo@125f06e6af82e7502de7596d9cfb5a3b560df4e5
Steven Allen committed
Sep 27, 2019 at 16:21 UTC
58df273d66f263915aad240a414df15ac538a0e2
1 file changed
+15
-1
core/coreiface/tests/pubsub.go
+15
-1
@@ -34,13 +34,20 @@ func (tp *TestSuite) TestBasicPubSub(t *testing.T) {
34
t.Fatal(err)
35
}
36
37
+ done := make(chan struct{})
38
go func() {
39
+ defer close(done)
40
+
41
ticker := time.NewTicker(100 * time.Millisecond)
42
defer ticker.Stop()
43
44
for {
45
err := apis[1].PubSub().Publish(ctx, "testch", []byte("hello world"))
43
- if err != nil {
46
+ switch err {
47
+ case nil:
48
+ case context.Canceled:
49
+ return
50
+ default:
51
t.Error(err)
52
cancel()
53
return
@@ -53,6 +60,13 @@ func (tp *TestSuite) TestBasicPubSub(t *testing.T) {
60
}
61
}()
62
63
+ // Wait for the sender to finish before we return.
64
+ // Otherwise, we can get random errors as publish fails.
65
+ defer func() {
66
+ cancel()
67
+ <-done
68
+ }()
69
+
70
m, err := sub.Next(ctx)
71
if err != nil {
72
t.Fatal(err)