report read limit violations on EventDisconnected via ErrReadLimit sentinel

This commit is contained in:
Jay
2026-08-10 16:02:57 -04:00
parent 19810798a7
commit 7851d22c22
4 changed files with 91 additions and 6 deletions
+31
View File
@@ -80,6 +80,37 @@ func TestSession(t *testing.T) {
}, "expected EventConnected")
})
t.Run("EventDisconnected carries ErrReadLimit when read limit exceeded", func(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
mockSocket := honeybeetest.NewMockSocket()
mockSocket.ReadMessageFunc = func() (int, []byte, error) {
return 0, nil, websocket.ErrReadLimit
}
config, _ := NewSessionConfig(
WithRetryDisabled(), WithReconnectDelay(0))
w := makeSession(t, mockSocket, config, ctx, cancel)
_, events, pool := makeSessionContext(t)
var wg sync.WaitGroup
wg.Go(func() {
w.Start(pool)
})
honeybeetest.Eventually(t, func() bool {
select {
case e := <-events:
return e.Kind == EventDisconnected &&
e.Err != nil &&
errors.Is(e.Err, ErrReadLimit)
default:
return false
}
}, "expected EventDisconnected with Err matching ErrReadLimit")
})
t.Run("dial failure exhausted - session exits cleanly, no connected/disconnected events", func(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()