Skip to content

Commit 75601f8

Browse files
committed
Updates deprecated funcs
Signed-off-by: Daneyon Hansen <[email protected]>
1 parent b8c05ce commit 75601f8

File tree

2 files changed

+46
-14
lines changed

2 files changed

+46
-14
lines changed

conformance/tests/gateway_following_epp_routing.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func assertTrafficOnlyReachesToExpectedPods(t *testing.T, suite *suite.Conforman
174174
if err != nil {
175175
return fmt.Errorf("failed to roundtrip request: %w", err)
176176
}
177-
if err := gwhttp.CompareRequest(t, &req, cReq, cRes, expected); err != nil {
177+
if err := gwhttp.CompareRoundTrip(t, &req, cReq, cRes, expected); err != nil {
178178
return fmt.Errorf("response expectation failed for request: %w", err)
179179
}
180180

conformance/utils/traffic/traffic.go

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -169,24 +169,56 @@ func waitForConvergeToExpected(
169169
tlog.Logf(t, "Request passed")
170170
}
171171

172-
// CompareRequestWithWildcardStatus compares requests with wildcard status code support.
173-
// It treats a single-digit expected code (e.g., 4) as a class wildcard (4xx),
174-
// while standard 3-digit codes are matched exactly.
175-
func CompareRequestWithWildcardStatus(t *testing.T, req *roundtripper.Request, cReq *roundtripper.CapturedRequest, cRes *roundtripper.CapturedResponse, expected gwhttp.ExpectedResponse) error {
176-
if expected.Response.StatusCode < 1 || expected.Response.StatusCode >= 100 {
177-
return gwhttp.CompareRequest(t, req, cReq, cRes, expected)
172+
// CompareRequestWithWildcardStatus compares requests allowing single-digit
173+
// status "classes" (e.g. 5 => any 5xx) via ExpectedResponse.Response.StatusCodes.
174+
// If no class wildcards are present, it defers to CompareRoundTrip.
175+
func CompareRequestWithWildcardStatus(
176+
t *testing.T,
177+
req *roundtripper.Request,
178+
cReq *roundtripper.CapturedRequest,
179+
cRes *roundtripper.CapturedResponse,
180+
expected gwhttp.ExpectedResponse,
181+
) error {
182+
// Separate specific status codes (>=100) from wildcard classes (1..9).
183+
var wildcardClasses []int
184+
var specificCodes []int
185+
seenClass := map[int]struct{}{}
186+
seenCode := map[int]struct{}{}
187+
188+
for _, sc := range expected.Response.StatusCodes {
189+
switch {
190+
case sc >= 100:
191+
if _, ok := seenCode[sc]; !ok {
192+
specificCodes = append(specificCodes, sc)
193+
seenCode[sc] = struct{}{}
194+
}
195+
case sc >= 1 && sc <= 9:
196+
if _, ok := seenClass[sc]; !ok {
197+
wildcardClasses = append(wildcardClasses, sc)
198+
seenClass[sc] = struct{}{}
199+
}
200+
}
178201
}
179202

180-
expectedClass := expected.Response.StatusCode
203+
// No wildcard classes? Defer to standard comparator.
204+
if len(wildcardClasses) == 0 {
205+
return gwhttp.CompareRoundTrip(t, req, cReq, cRes, expected)
206+
}
207+
208+
// If the concrete status matches any wildcard class, materialize it and compare.
181209
actualClass := cRes.StatusCode / 100
182-
if expectedClass != actualClass {
183-
return fmt.Errorf("expected status code class %dxx, but got %d", expectedClass, cRes.StatusCode)
210+
for _, wc := range wildcardClasses {
211+
if actualClass == wc {
212+
modified := expected
213+
// Keep any specific codes that were provided, but ensure the actual status is allowed.
214+
modified.Response.StatusCodes = append(append([]int(nil), specificCodes...), cRes.StatusCode)
215+
return gwhttp.CompareRoundTrip(t, req, cReq, cRes, modified)
216+
}
184217
}
185218

186-
// StatusCode Class matches; update status code on a copy to allow the standard comparator to pass.
187-
modifiedExpected := expected
188-
modifiedExpected.Response.StatusCode = cRes.StatusCode
189-
return gwhttp.CompareRequest(t, req, cReq, cRes, modifiedExpected)
219+
// Wildcards were provided but none matched the actual class—fail clearly.
220+
return fmt.Errorf("expected status code class to be one of %vxx, got %d",
221+
wildcardClasses, cRes.StatusCode)
190222
}
191223

192224
// TODO: https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/1031

0 commit comments

Comments
 (0)