@@ -16,6 +16,10 @@ import (
16
16
"net/http/httputil"
17
17
"regexp"
18
18
"testing"
19
+ "time"
20
+
21
+ "k8s.io/apimachinery/pkg/util/wait"
22
+ "sigs.k8s.io/gateway-api/conformance/utils/tlog"
19
23
20
24
corev1 "k8s.io/api/core/v1"
21
25
"k8s.io/apimachinery/pkg/types"
@@ -113,41 +117,37 @@ var PreserveCaseTest = suite.ConformanceTest{
113
117
gwAddr := kubernetes .GatewayAndHTTPRoutesMustBeAccepted (t , suite .Client , suite .TimeoutConfig , suite .ControllerName , kubernetes .NewGatewayRef (gwNN ), routeNN )
114
118
115
119
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
- })
129
120
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" ,
121
+ err := wait .PollUntilContextTimeout (context .TODO (), time .Second , suite .TimeoutConfig .DeleteTimeout , true , func (ctx context.Context ) (bool , error ) {
122
+ // Can't use the standard method for checking the response, since the remote side isn't the
123
+ // conformance echo server and it returns a differently formatted response.
124
+ expectedResponse := http.ExpectedResponse {
125
+ Request : http.Request {
126
+ Path : "/preserve?headers=ReSpOnSeHeAdEr" ,
127
+ Headers : map [string ]string {
128
+ "SpEcIaL" : "Header" ,
129
+ },
137
130
},
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 )
131
+ Namespace : ns ,
132
+ }
133
+
134
+ var rt nethttp.RoundTripper
135
+ req := http .MakeRequest (t , & expectedResponse , gwAddr , "HTTP" , "http" )
136
+ respBody , err := casePreservingRoundTrip (req , rt , suite )
137
+ if err != nil {
138
+ tlog .Logf (t , "failed to get expected response: %v" , err )
139
+ return false , nil
140
+ }
141
+
142
+ if _ , found := respBody ["SpEcIaL" ]; ! found {
143
+ tlog .Logf (t , "case was not preserved for test header: %+v" , respBody )
144
+ return false , nil
145
+ }
146
+
147
+ return true , nil
148
+ })
145
149
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 )
150
+ tlog .Errorf (t , "failed to get expected response: %v" , err )
151
151
}
152
152
})
153
153
},
0 commit comments