Refactored connection shutdown logic.

This commit is contained in:
Jay
2026-04-19 09:29:12 -04:00
parent 72f0793047
commit 6998ccf701
7 changed files with 175 additions and 161 deletions
+5 -37
View File
@@ -58,15 +58,11 @@ func TestDisconnectedConnectionClose(t *testing.T) {
conn.Close()
assert.Eventually(t, func() bool {
select {
case _, ok := <-conn.Errors():
return !ok
default:
return false
}
}, honeybeetest.TestTimeout, honeybeetest.TestTick,
"errors channel should close")
assert.True(t, conn.closed)
_, ok := <-conn.incoming
assert.False(t, ok)
_, ok = <-conn.errors
assert.False(t, ok)
})
t.Run("send fails after close", func(t *testing.T) {
@@ -103,32 +99,4 @@ func TestConnectedConnectionClose(t *testing.T) {
conn.Close()
assert.Equal(t, StateClosed, conn.State())
})
t.Run("writer active during close exits cleanly", func(t *testing.T) {
conn, _, _, _ := setupTestConnection(t, nil)
for i := 0; i < 50; i++ {
conn.Send([]byte("message"))
}
conn.Close()
err := conn.Send([]byte("late"))
assert.Error(t, err, "Send should fail after close")
assert.ErrorContains(t, err, "connection closed")
})
t.Run("both goroutines active during close", func(t *testing.T) {
conn, _, incomingData, _ := setupTestConnection(t, nil)
for i := 0; i < 10; i++ {
incomingData <- honeybeetest.MockIncomingData{
MsgType: websocket.TextMessage,
Data: []byte(fmt.Sprintf("in-%d", i)),
}
conn.Send([]byte(fmt.Sprintf("out-%d", i)))
}
conn.Close()
})
}