diff --git a/pubsub/publisher_test.go b/pubsub/publisher_test.go index 5e99e46..d6b0a1d 100644 --- a/pubsub/publisher_test.go +++ b/pubsub/publisher_test.go @@ -96,6 +96,26 @@ func newTestSubscriber(p *Publisher) *testSubscriber { return ts } +// for testing with -race +func TestPubSubRace(t *testing.T) { + p := NewPublisher(0, 1024) + var subs [](*testSubscriber) + for j := 0; j < 50; j++ { + subs = append(subs, newTestSubscriber(p)) + } + for j := 0; j < 1000; j++ { + p.Publish(sampleText) + } + time.AfterFunc(1*time.Second, func() { + for _, s := range subs { + p.Evict(s.dataCh) + } + }) + for _, s := range subs { + s.Wait() + } +} + func BenchmarkPubSub(b *testing.B) { for i := 0; i < b.N; i++ { b.StopTimer()