@@ -16,13 +16,16 @@ import (
16
16
"net/http/httputil"
17
17
"regexp"
18
18
"testing"
19
+ "time"
19
20
20
21
corev1 "k8s.io/api/core/v1"
21
22
"k8s.io/apimachinery/pkg/types"
23
+ "k8s.io/apimachinery/pkg/util/wait"
22
24
"sigs.k8s.io/gateway-api/conformance/utils/http"
23
25
"sigs.k8s.io/gateway-api/conformance/utils/kubernetes"
24
26
"sigs.k8s.io/gateway-api/conformance/utils/roundtripper"
25
27
"sigs.k8s.io/gateway-api/conformance/utils/suite"
28
+ "sigs.k8s.io/gateway-api/conformance/utils/tlog"
26
29
)
27
30
28
31
func init () {
@@ -113,41 +116,37 @@ var PreserveCaseTest = suite.ConformanceTest{
113
116
gwAddr := kubernetes .GatewayAndHTTPRoutesMustBeAccepted (t , suite .Client , suite .TimeoutConfig , suite .ControllerName , kubernetes .NewGatewayRef (gwNN ), routeNN )
114
117
115
118
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
119
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
+ },
137
129
},
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
+ })
145
148
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 )
151
150
}
152
151
})
153
152
},
0 commit comments