add loging and bump timers to avoid races

Change-Id: I6da35b6fb33c939f3f92f8ebf4c6a18bdf1644e4

Kubernetes-commit: 40618b765ccb1a0e75f7063534f9645d1df57f7a
This commit is contained in:
Antonio Ojea 2023-09-15 08:23:58 +00:00 committed by Kubernetes Publisher
parent 08f892964c
commit ea6e035481

View File

@ -36,7 +36,7 @@ import (
gwebsocket "github.com/gorilla/websocket" gwebsocket "github.com/gorilla/websocket"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/httpstream/wsstream" "k8s.io/apimachinery/pkg/util/httpstream/wsstream"
@ -1054,7 +1054,13 @@ func TestWebSocketClient_HeartbeatSucceeds(t *testing.T) {
t.Fatalf("unable to upgrade to create websocket connection: %v", err) t.Fatalf("unable to upgrade to create websocket connection: %v", err)
} }
defer conn.Close() defer conn.Close()
conn.ReadMessage() //nolint:errcheck for {
_, _, err := conn.ReadMessage()
if err != nil {
t.Logf("server err reading message: %v", err)
return
}
}
})) }))
defer websocketServer.Close() defer websocketServer.Close()
// Create a raw websocket client, connecting to the websocket server. // Create a raw websocket client, connecting to the websocket server.
@ -1067,8 +1073,8 @@ func TestWebSocketClient_HeartbeatSucceeds(t *testing.T) {
// Create a heartbeat using the client websocket connection, and start it. // Create a heartbeat using the client websocket connection, and start it.
// "period" is less than "deadline", so ping/pong heartbeat will succceed. // "period" is less than "deadline", so ping/pong heartbeat will succceed.
var expectedMsg = "test heartbeat message" var expectedMsg = "test heartbeat message"
var period = 10 * time.Millisecond var period = 100 * time.Millisecond
var deadline = 20 * time.Millisecond var deadline = 200 * time.Millisecond
heartbeat := newHeartbeat(client, period, deadline) heartbeat := newHeartbeat(client, period, deadline)
heartbeat.setMessage(expectedMsg) heartbeat.setMessage(expectedMsg)
// Add a channel to the handler to retrieve the "pong" message. // Add a channel to the handler to retrieve the "pong" message.
@ -1079,7 +1085,16 @@ func TestWebSocketClient_HeartbeatSucceeds(t *testing.T) {
return pongHandler(msg) return pongHandler(msg)
}) })
go heartbeat.start() go heartbeat.start()
go client.ReadMessage() //nolint:errcheck go func() {
for {
_, _, err := client.ReadMessage()
if err != nil {
t.Logf("client err reading message: %v", err)
return
}
}
}()
select { select {
case actualMsg := <-pongMsgCh: case actualMsg := <-pongMsgCh:
close(heartbeat.closer) close(heartbeat.closer)