Skip to content

Commit eb8f20c

Browse files
committed
fix
Signed-off-by: zirain <[email protected]>
1 parent d954101 commit eb8f20c

File tree

1 file changed

+31
-32
lines changed

1 file changed

+31
-32
lines changed

test/e2e/tests/preservecase.go

+31-32
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ import (
1616
"net/http/httputil"
1717
"regexp"
1818
"testing"
19+
"time"
1920

2021
corev1 "k8s.io/api/core/v1"
2122
"k8s.io/apimachinery/pkg/types"
23+
"k8s.io/apimachinery/pkg/util/wait"
2224
"sigs.k8s.io/gateway-api/conformance/utils/http"
2325
"sigs.k8s.io/gateway-api/conformance/utils/kubernetes"
2426
"sigs.k8s.io/gateway-api/conformance/utils/roundtripper"
2527
"sigs.k8s.io/gateway-api/conformance/utils/suite"
28+
"sigs.k8s.io/gateway-api/conformance/utils/tlog"
2629
)
2730

2831
func init() {
@@ -113,41 +116,37 @@ var PreserveCaseTest = suite.ConformanceTest{
113116
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
114117

115118
WaitForPods(t, suite.Client, "gateway-preserve-case-backend", map[string]string{"app": "preserve-case"}, corev1.PodRunning, PodReady)
116-
// Send a request to a valid path and expect a successful response
117-
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, http.ExpectedResponse{
118-
Request: http.Request{
119-
Path: "/preserve?headers=ReSpOnSeHeAdEr",
120-
Headers: map[string]string{
121-
"SpEcIaL": "Header",
122-
},
123-
},
124-
Response: http.Response{
125-
StatusCode: 200,
126-
},
127-
Namespace: ns,
128-
})
129119

130-
// Can't use the standard method for checking the response, since the remote side isn't the
131-
// conformance echo server and it returns a differently formatted response.
132-
expectedResponse := http.ExpectedResponse{
133-
Request: http.Request{
134-
Path: "/preserve?headers=ReSpOnSeHeAdEr",
135-
Headers: map[string]string{
136-
"SpEcIaL": "Header",
120+
err := wait.PollUntilContextTimeout(context.TODO(), time.Second, suite.TimeoutConfig.DeleteTimeout, true, func(ctx context.Context) (bool, error) {
121+
// Can't use the standard method for checking the response, since the remote side isn't the
122+
// conformance echo server and it returns a differently formatted response.
123+
expectedResponse := http.ExpectedResponse{
124+
Request: http.Request{
125+
Path: "/preserve?headers=ReSpOnSeHeAdEr",
126+
Headers: map[string]string{
127+
"SpEcIaL": "Header",
128+
},
137129
},
138-
},
139-
Namespace: ns,
140-
}
141-
142-
var rt nethttp.RoundTripper
143-
req := http.MakeRequest(t, &expectedResponse, gwAddr, "HTTP", "http")
144-
respBody, err := casePreservingRoundTrip(req, rt, suite)
130+
Namespace: ns,
131+
}
132+
133+
var rt nethttp.RoundTripper
134+
req := http.MakeRequest(t, &expectedResponse, gwAddr, "HTTP", "http")
135+
respBody, err := casePreservingRoundTrip(req, rt, suite)
136+
if err != nil {
137+
tlog.Logf(t, "failed to get expected response: %v", err)
138+
return false, nil
139+
}
140+
141+
if _, found := respBody["SpEcIaL"]; !found {
142+
tlog.Logf(t, "case was not preserved for test header: %+v", respBody)
143+
return false, nil
144+
}
145+
146+
return true, nil
147+
})
145148
if err != nil {
146-
t.Errorf("failed to get expected response: %v", err)
147-
}
148-
149-
if _, found := respBody["SpEcIaL"]; !found {
150-
t.Errorf("case was not preserved for test header: %+v", respBody)
149+
tlog.Errorf(t, "failed to get expected response: %v", err)
151150
}
152151
})
153152
},

0 commit comments

Comments
 (0)