test: EventPublisher close cancels pending
This commit is contained in:
+38
-4
@@ -122,15 +122,17 @@ func TestEventPublisher(t *testing.T) {
|
|||||||
ch <- err
|
ch <- err
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
var err error
|
||||||
Eventually(t, func() bool {
|
Eventually(t, func() bool {
|
||||||
select {
|
select {
|
||||||
case err := <-ch:
|
case err = <-ch:
|
||||||
return err != nil
|
return err != nil
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}, "Publish did not return a timeout error")
|
}, "Publish did not return a timeout error")
|
||||||
|
|
||||||
|
assert.ErrorContains(t, err, "publish timeout")
|
||||||
assert.Len(t, EventsOf[PublishDispatched](obs), 1)
|
assert.Len(t, EventsOf[PublishDispatched](obs), 1)
|
||||||
assert.Len(t, EventsOf[PublishTimeout](obs), 1)
|
assert.Len(t, EventsOf[PublishTimeout](obs), 1)
|
||||||
})
|
})
|
||||||
@@ -409,9 +411,41 @@ func TestEventPublisher(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("close cancels pending", func(t *testing.T) {
|
t.Run("close cancels pending", func(t *testing.T) {
|
||||||
// go pub.Publish (blocks)
|
p, envoy := newMockEnvoy(t)
|
||||||
// pub.Close() before feeding OK
|
p.connect()
|
||||||
// assert caller receives cancellation error
|
|
||||||
|
pub := NewEventPublisher(envoy)
|
||||||
|
|
||||||
|
ch := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
_, _, err := pub.Publish(
|
||||||
|
"iiii9999", []byte(`{"id":"iiii9999"}`), TestTimeout)
|
||||||
|
ch <- err
|
||||||
|
}()
|
||||||
|
|
||||||
|
// wait for EVENT to be sent before closing
|
||||||
|
Eventually(t, func() bool {
|
||||||
|
select {
|
||||||
|
case <-p.sent:
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}, "EVENT envelope not sent")
|
||||||
|
|
||||||
|
pub.Close()
|
||||||
|
|
||||||
|
var err error
|
||||||
|
Eventually(t, func() bool {
|
||||||
|
select {
|
||||||
|
case err = <-ch:
|
||||||
|
return err != nil
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}, "Publish did not return a cancellation error")
|
||||||
|
|
||||||
|
assert.ErrorContains(t, err, "closed")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("unknown OK ignored", func(t *testing.T) {
|
t.Run("unknown OK ignored", func(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user