From 9e53371ddaaeab4083fde45e43c803071238e686 Mon Sep 17 00:00:00 2001 From: novahe Date: Tue, 11 Mar 2025 17:41:37 +0800 Subject: [PATCH] Fix test cases that may potentially cause a panic. --- pkg/client/tests/remotecommand_test.go | 1 + staging/src/k8s.io/apiserver/pkg/admission/audit_test.go | 2 ++ .../k8s.io/apiserver/pkg/util/proxy/streamtunnel_test.go | 6 ++++++ .../discovery/cached/disk/cached_discovery_test.go | 1 + .../client-go/discovery/cached/memory/memcache_test.go | 3 +++ .../k8s.io/client-go/discovery/discovery_client_test.go | 6 ++++++ .../tools/portforward/tunneling_connection_test.go | 8 ++++++++ .../client-go/transport/websocket/roundtripper_test.go | 3 +++ .../pkg/apiserver/handler_discovery_test.go | 3 +++ .../src/k8s.io/kubelet/pkg/cri/streaming/server_test.go | 1 + 10 files changed, 34 insertions(+) diff --git a/pkg/client/tests/remotecommand_test.go b/pkg/client/tests/remotecommand_test.go index ea9935b6e82..78b1cf387f5 100644 --- a/pkg/client/tests/remotecommand_test.go +++ b/pkg/client/tests/remotecommand_test.go @@ -124,6 +124,7 @@ func fakeServer(t *testing.T, requestReceived chan struct{}, testName string, ex opts, err := remotecommand.NewOptions(req) if err != nil { t.Errorf("unexpected error %v", err) + return } if exec { cmd := req.URL.Query()[api.ExecCommandParam] diff --git a/staging/src/k8s.io/apiserver/pkg/admission/audit_test.go b/staging/src/k8s.io/apiserver/pkg/admission/audit_test.go index dea5be2e0e8..e8bc2d8e087 100644 --- a/staging/src/k8s.io/apiserver/pkg/admission/audit_test.go +++ b/staging/src/k8s.io/apiserver/pkg/admission/audit_test.go @@ -202,10 +202,12 @@ func TestWithAuditConcurrency(t *testing.T) { mutator, ok := handler.(MutationInterface) if !ok { t.Error("handler is not an interface of type MutationInterface") + return } auditMutator, ok := auditHandler.(MutationInterface) if !ok { t.Error("handler is not an interface of type MutationInterface") + return } assert.Equal(t, mutator.Admit(ctx, a, nil), auditMutator.Admit(ctx, a, nil), "WithAudit decorator should not effect the return value") }() diff --git a/staging/src/k8s.io/apiserver/pkg/util/proxy/streamtunnel_test.go b/staging/src/k8s.io/apiserver/pkg/util/proxy/streamtunnel_test.go index 6d170cc38e4..7cf57f2d3c6 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/proxy/streamtunnel_test.go +++ b/staging/src/k8s.io/apiserver/pkg/util/proxy/streamtunnel_test.go @@ -59,11 +59,13 @@ func TestTunnelingHandler_UpgradeStreamingAndTunneling(t *testing.T) { _, err := httpstream.Handshake(req, w, []string{constants.PortForwardV1Name}) if err != nil { t.Errorf("unexpected error %v", err) + return } upgrader := spdy.NewResponseUpgrader() conn := upgrader.UpgradeResponse(w, req, justQueueStream(streamChan)) if conn == nil { t.Error("connect is unexpected nil") + return } defer conn.Close() //nolint:errcheck <-stopServerChan @@ -103,10 +105,12 @@ func TestTunnelingHandler_UpgradeStreamingAndTunneling(t *testing.T) { clientStream, err := spdyClient.CreateStream(http.Header{}) if err != nil { t.Errorf("unexpected error %v", err) + return } _, err = io.Copy(clientStream, bytes.NewReader(randomData)) if err != nil { t.Errorf("unexpected error %v", err) + return } clientStream.Close() //nolint:errcheck }() @@ -179,6 +183,7 @@ func TestTunnelingHandler_BadHandshakeError(t *testing.T) { _, err := httpstream.Handshake(req, w, []string{constants.PortForwardV1Name}) if err == nil { t.Errorf("handshake should have returned an error %v", err) + return } assert.ErrorContains(t, err, "unable to negotiate protocol") w.WriteHeader(http.StatusForbidden) @@ -235,6 +240,7 @@ func TestTunnelingHandler_UpstreamSPDYServerErrorPropagated(t *testing.T) { _, err := httpstream.Handshake(req, w, []string{constants.PortForwardV1Name}) if err != nil { t.Errorf("handshake should have succeeded %v", err) + return } // Returned status code should be incremented in metrics. w.WriteHeader(statusCode) diff --git a/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery_test.go b/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery_test.go index 3f2970fccca..94cbfc8b772 100644 --- a/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery_test.go +++ b/staging/src/k8s.io/client-go/discovery/cached/disk/cached_discovery_test.go @@ -352,6 +352,7 @@ func TestCachedDiscoveryClientUnaggregatedServerGroups(t *testing.T) { output, err := json.Marshal(body) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-type is "unaggregated" discovery format -- no resources returned. w.Header().Set("Content-Type", discovery.AcceptV1) diff --git a/staging/src/k8s.io/client-go/discovery/cached/memory/memcache_test.go b/staging/src/k8s.io/client-go/discovery/cached/memory/memcache_test.go index 8af236e4a1e..f33ded83501 100644 --- a/staging/src/k8s.io/client-go/discovery/cached/memory/memcache_test.go +++ b/staging/src/k8s.io/client-go/discovery/cached/memory/memcache_test.go @@ -589,6 +589,7 @@ func TestMemCacheGroupsAndMaybeResources(t *testing.T) { output, err := json.Marshal(body) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-type is "unaggregated" discovery format -- no resources returned. w.Header().Set("Content-Type", discovery.AcceptV1) @@ -1120,6 +1121,7 @@ func TestAggregatedMemCacheGroupsAndMaybeResources(t *testing.T) { output, err := json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-type is "aggregated" discovery format. w.Header().Set("Content-Type", discovery.AcceptV2) @@ -1420,6 +1422,7 @@ func TestMemCacheAggregatedServerGroups(t *testing.T) { output, err := json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-type is "aggregated" discovery format. w.Header().Set("Content-Type", discovery.AcceptV2Beta1) diff --git a/staging/src/k8s.io/client-go/discovery/discovery_client_test.go b/staging/src/k8s.io/client-go/discovery/discovery_client_test.go index 126df70318c..7f36980690a 100644 --- a/staging/src/k8s.io/client-go/discovery/discovery_client_test.go +++ b/staging/src/k8s.io/client-go/discovery/discovery_client_test.go @@ -1325,6 +1325,7 @@ func TestAggregatedServerGroups(t *testing.T) { output, err = json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-Type is "aggregated" discovery format. Add extra parameter // to ensure we are resilient to these extra parameters. @@ -1333,6 +1334,7 @@ func TestAggregatedServerGroups(t *testing.T) { _, err = w.Write(output) if err != nil { t.Errorf("unexpected error %v", err) + return } })) defer server.Close() @@ -2399,6 +2401,7 @@ func TestAggregatedServerGroupsAndResources(t *testing.T) { output, err = json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } } else { var agg *apidiscoveryv2beta1.APIGroupDiscoveryList @@ -2414,6 +2417,7 @@ func TestAggregatedServerGroupsAndResources(t *testing.T) { output, err = json.Marshal(&agg) if err != nil { t.Errorf("unexpected error %v", err) + return } } // Content-Type is "aggregated" discovery format. Add extra parameter @@ -2565,6 +2569,7 @@ func TestAggregatedServerGroupsAndResourcesWithErrors(t *testing.T) { output, err = json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-Type is "aggregated" discovery format. Add extra parameter // to ensure we are resilient to these extra parameters. @@ -3182,6 +3187,7 @@ func TestAggregatedServerPreferredResources(t *testing.T) { output, err = json.Marshal(agg) if err != nil { t.Errorf("unexpected error %v", err) + return } // Content-Type is "aggregated" discovery format. Add extra parameter // to ensure we are resilient to these extra parameters. diff --git a/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection_test.go b/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection_test.go index efc4a3ee916..afbdb6b0cec 100644 --- a/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection_test.go +++ b/staging/src/k8s.io/client-go/tools/portforward/tunneling_connection_test.go @@ -53,15 +53,18 @@ func TestTunnelingConnection_ReadWriteClose(t *testing.T) { conn, err := upgrader.Upgrade(w, req, nil) if err != nil { t.Errorf("unexpected error %v", err) + return } defer conn.Close() //nolint:errcheck if conn.Subprotocol() != constants.WebsocketsSPDYTunnelingPortForwardV1 { t.Errorf("Not acceptable agreement Subprotocol: %v", conn.Subprotocol()) + return } tunnelingConn := NewTunnelingConnection("server", conn) spdyConn, err := spdy.NewServerConnection(tunnelingConn, justQueueStream(streamChan)) if err != nil { t.Errorf("unexpected error %v", err) + return } defer spdyConn.Close() //nolint:errcheck <-stopServerChan @@ -85,10 +88,12 @@ func TestTunnelingConnection_ReadWriteClose(t *testing.T) { clientStream, err := spdyClient.CreateStream(http.Header{}) if err != nil { t.Errorf("unexpected error %v", err) + return } _, err = io.Copy(clientStream, strings.NewReader(expected)) if err != nil { t.Errorf("unexpected error %v", err) + return } clientStream.Close() //nolint:errcheck }() @@ -114,6 +119,7 @@ func TestTunnelingConnection_LocalRemoteAddress(t *testing.T) { conn, err := upgrader.Upgrade(w, req, nil) if err != nil { t.Errorf("unexpected error %v", err) + return } defer conn.Close() //nolint:errcheck if conn.Subprotocol() != constants.WebsocketsSPDYTunnelingPortForwardV1 { @@ -150,10 +156,12 @@ func TestTunnelingConnection_ReadWriteDeadlines(t *testing.T) { conn, err := upgrader.Upgrade(w, req, nil) if err != nil { t.Errorf("unexpected error %v", err) + return } defer conn.Close() //nolint:errcheck if conn.Subprotocol() != constants.WebsocketsSPDYTunnelingPortForwardV1 { t.Errorf("Not acceptable agreement Subprotocol: %v", conn.Subprotocol()) + return } <-stopServerChan })) diff --git a/staging/src/k8s.io/client-go/transport/websocket/roundtripper_test.go b/staging/src/k8s.io/client-go/transport/websocket/roundtripper_test.go index 96169bb4ff4..903dd0c0c8e 100644 --- a/staging/src/k8s.io/client-go/transport/websocket/roundtripper_test.go +++ b/staging/src/k8s.io/client-go/transport/websocket/roundtripper_test.go @@ -115,15 +115,18 @@ func TestWebSocketRoundTripper_RoundTripperFails(t *testing.T) { statusBytes, err := runtime.Encode(encoder, testCase.status) if err != nil { t.Errorf("unexpected error %v", err) + return } _, err = w.Write(statusBytes) if err != nil { t.Errorf("unexpected error %v", err) + return } } else if len(testCase.body) > 0 { _, err := w.Write([]byte(testCase.body)) if err != nil { t.Errorf("unexpected error %v", err) + return } } })) diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery_test.go b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery_test.go index 3c8f17b8373..bf2f23e3228 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery_test.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apiserver/handler_discovery_test.go @@ -395,16 +395,19 @@ func TestV2Beta1Skew(t *testing.T) { err := apidiscoveryv2scheme.Convertv2APIGroupDiscoveryListTov2beta1APIGroupDiscoveryList(&apiGroup, &v2b, nil) if err != nil { t.Errorf("unexpected error %v", err) + return } converted, err := json.Marshal(v2b) if err != nil { t.Errorf("unexpected error %v", err) + return } w.Header().Set("Content-Type", "application/json;"+"g=apidiscovery.k8s.io;v=v2beta1;as=APIGroupDiscoveryList") w.WriteHeader(200) _, err = w.Write(converted) if err != nil { t.Errorf("unexpected error %v", err) + return } })) testCtx, cancel := context.WithCancel(context.Background()) diff --git a/staging/src/k8s.io/kubelet/pkg/cri/streaming/server_test.go b/staging/src/k8s.io/kubelet/pkg/cri/streaming/server_test.go index ed78b64e0e0..181405d030c 100644 --- a/staging/src/k8s.io/kubelet/pkg/cri/streaming/server_test.go +++ b/staging/src/k8s.io/kubelet/pkg/cri/streaming/server_test.go @@ -350,6 +350,7 @@ func runRemoteCommandTest(t *testing.T, commandType string) { exec, err := remotecommand.NewSPDYExecutor(&restclient.Config{}, "POST", reqURL) if err != nil { t.Errorf("unexpected error %v", err) + return } opts := remotecommand.StreamOptions{