implemented ping-pong heartbeats. adjusted logs and defaults.
This commit is contained in:
@@ -144,6 +144,39 @@ func TestRunReader(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestHeartbeatForwarder(t *testing.T) {
|
||||
t.Run("connection level heartbeat propagates", func(t *testing.T) {
|
||||
socket, _, _ := honeybeetest.SetupTestSocket(t)
|
||||
var pongHandler func(string) error
|
||||
socket.SetPongHandlerFunc = func(h func(string) error) { pongHandler = h }
|
||||
|
||||
conn, err := transport.NewConnectionFromSocket(socket, nil, nil)
|
||||
assert.NoError(t, err)
|
||||
|
||||
heartbeat := make(chan struct{}, 1)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
go RunHeartbeatForwarder(ctx, conn, heartbeat, nil)
|
||||
|
||||
honeybeetest.Eventually(t, func() bool {
|
||||
return pongHandler != nil
|
||||
}, "expected Connection to register PongHandler")
|
||||
|
||||
if pongHandler == nil {
|
||||
t.Fatal("pong handler was never set")
|
||||
}
|
||||
|
||||
pongHandler("") // Trigger pong
|
||||
|
||||
select {
|
||||
case <-heartbeat:
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("pong did not propagate to worker heartbeat")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestRunStopMonitor(t *testing.T) {
|
||||
t.Run("keepalive signal calls conn.Close and cancel", func(t *testing.T) {
|
||||
conn, _, _, _ := setupTestConnection(t)
|
||||
|
||||
Reference in New Issue
Block a user