query: test returns partial events on timeout

This commit is contained in:
Jay
2026-05-17 16:44:46 -04:00
parent 57e66e0281
commit 594f52cab5
+31 -6
View File
@@ -614,12 +614,37 @@ func TestRequestManager_Query(t *testing.T) {
}) })
t.Run("returns partial events on timeout", func(t *testing.T) { t.Run("returns partial events on timeout", func(t *testing.T) {
// connect the envoy p, envoy := newMockEnvoy(t)
// in a goroutine: inject two EVENTs then block (no EOSE, no CLOSED) p.connect()
// call Query with a short timeout Eventually(t, envoy.IsConnected, "envoy should be connected")
// assert Query returns after the timeout
// assert the returned slice contains exactly two events m := NewRequestManager(envoy)
// assert closed is nil t.Cleanup(func() { m.Close() })
filters := [][]byte{[]byte(`{}`)}
eventData := []byte(`{"id":"abc"}`)
const queryTimeout = 100 * time.Millisecond
go func() {
reqBytes := <-p.sent
subID, _, err := envelope.FindReq(reqBytes)
if err != nil {
t.Errorf("FindReq: %v", err)
return
}
for range 2 {
p.receive(envelope.EncloseSubscriptionEvent(subID, eventData))
}
// no EOSE, no CLOSED — Query must time out
}()
start := time.Now()
events, closed := m.Query(filters, queryTimeout)
elapsed := time.Since(start)
assert.GreaterOrEqual(t, elapsed, queryTimeout)
assert.Len(t, events, 2)
assert.Nil(t, closed)
}) })
t.Run("returns nil nil when disconnected", func(t *testing.T) { t.Run("returns nil nil when disconnected", func(t *testing.T) {