Skip to content

Commit c1a1ae8

Browse files
k8s-ci-robotshaneutt
authored andcommitted
Merge pull request #1668 from mlavacca/conformance-resolvedrefs-httproute
conformance: HTTPRoute resolvedRefs condition always checked
1 parent 4c4c0d5 commit c1a1ae8

22 files changed

+61
-31
lines changed

conformance/tests/httproute-cross-namespace.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var HTTPRouteCrossNamespace = suite.ConformanceTest{
3838
routeNN := types.NamespacedName{Name: "cross-namespace", Namespace: "gateway-conformance-web-backend"}
3939
gwNN := types.NamespacedName{Name: "backend-namespaces", Namespace: "gateway-conformance-infra"}
4040
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
41+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4142

4243
t.Run("Simple HTTP request should reach web-backend", func(t *testing.T) {
4344
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, http.ExpectedResponse{

conformance/tests/httproute-disallowed-kind.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ var HTTPRouteDisallowedKind = suite.ConformanceTest{
4343

4444
routeNN := types.NamespacedName{Name: "disallowed-kind", Namespace: "gateway-conformance-infra"}
4545
gwNN := types.NamespacedName{Name: "tlsroutes-only", Namespace: "gateway-conformance-infra"}
46+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4647

4748
t.Run("Route should not have been accepted with reason NotAllowedByListeners", func(t *testing.T) {
4849
kubernetes.HTTPRouteMustHaveCondition(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN, metav1.Condition{

conformance/tests/httproute-exact-path-matching.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var HTTPExactPathMatching = suite.ConformanceTest{
3939
routeNN := types.NamespacedName{Name: "exact-matching", Namespace: ns}
4040
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4141
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
42+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4243

4344
testCases := []http.ExpectedResponse{
4445
{

conformance/tests/httproute-header-matching.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var HTTPRouteHeaderMatching = suite.ConformanceTest{
3939
routeNN := types.NamespacedName{Name: "header-matching", Namespace: ns}
4040
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4141
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
42+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4243

4344
testCases := []http.ExpectedResponse{{
4445
Request: http.Request{Path: "/", Headers: map[string]string{"Version": "one"}},

conformance/tests/httproute-hostname-intersection.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ var HTTPRouteHostnameIntersection = suite.ConformanceTest{
5252
{Namespace: ns, Name: "wildcard-host-matches-listener-wildcard-host"},
5353
}
5454
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routes...)
55+
for _, routeNN := range routes {
56+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
57+
}
5558

5659
var testCases []http.ExpectedResponse
5760

conformance/tests/httproute-listener-hostname-matching.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,19 @@ var HTTPRouteListenerHostnameMatching = suite.ConformanceTest{
4141
// namespace so we have to wait for it to be ready.
4242
kubernetes.NamespacesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, []string{ns})
4343

44+
routeNN1 := types.NamespacedName{Name: "backend-v1", Namespace: ns}
45+
routeNN2 := types.NamespacedName{Name: "backend-v2", Namespace: ns}
46+
routeNN3 := types.NamespacedName{Name: "backend-v3", Namespace: ns}
4447
gwNN := types.NamespacedName{Name: "httproute-listener-hostname-matching", Namespace: ns}
4548

46-
_ = kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-1"),
47-
types.NamespacedName{Namespace: ns, Name: "backend-v1"},
48-
)
49-
_ = kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-2"),
50-
types.NamespacedName{Namespace: ns, Name: "backend-v2"},
51-
)
52-
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-3", "listener-4"),
53-
types.NamespacedName{Namespace: ns, Name: "backend-v3"},
54-
)
49+
kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-1"), routeNN1)
50+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN1, gwNN)
51+
52+
kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-2"), routeNN2)
53+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN2, gwNN)
54+
55+
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN, "listener-3", "listener-4"), routeNN3)
56+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN3, gwNN)
5557

5658
testCases := []http.ExpectedResponse{{
5759
Request: http.Request{Host: "bar.com", Path: "/"},

conformance/tests/httproute-matching-across-routes.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ var HTTPRouteMatchingAcrossRoutes = suite.ConformanceTest{
4040
routeNN2 := types.NamespacedName{Name: "matching-part2", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN1, routeNN2)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN1, gwNN)
44+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN2, gwNN)
4345

4446
testCases := []http.ExpectedResponse{{
4547
Request: http.Request{

conformance/tests/httproute-matching.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var HTTPRouteMatching = suite.ConformanceTest{
3939
routeNN := types.NamespacedName{Name: "matching", Namespace: ns}
4040
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4141
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
42+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4243

4344
testCases := []http.ExpectedResponse{{
4445
Request: http.Request{Path: "/"},

conformance/tests/httproute-method-matching.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteMethodMatching = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "method-matching", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
testCases := []http.ExpectedResponse{
4546
{

conformance/tests/httproute-observed-generation-bump.go

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,40 +39,38 @@ var HTTPRouteObservedGenerationBump = suite.ConformanceTest{
3939
ShortName: "HTTPRouteObservedGenerationBump",
4040
Description: "A HTTPRoute in the gateway-conformance-infra namespace should update the observedGeneration in all of it's Status.Conditions after an update to the spec",
4141
Manifests: []string{"tests/httproute-observed-generation-bump.yaml"},
42-
Test: func(t *testing.T, s *suite.ConformanceTestSuite) {
43-
42+
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
4443
routeNN := types.NamespacedName{Name: "observed-generation-bump", Namespace: "gateway-conformance-infra"}
4544
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: "gateway-conformance-infra"}
4645

47-
acceptedCondition := metav1.Condition{
48-
Type: string(v1beta1.RouteConditionAccepted),
49-
Status: metav1.ConditionTrue,
50-
Reason: "", // any reason
51-
}
52-
5346
t.Run("observedGeneration should increment", func(t *testing.T) {
5447
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
5548
defer cancel()
5649

5750
namespaces := []string{"gateway-conformance-infra"}
58-
kubernetes.NamespacesMustBeAccepted(t, s.Client, s.TimeoutConfig, namespaces)
51+
kubernetes.NamespacesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, namespaces)
5952

6053
original := &v1beta1.HTTPRoute{}
61-
err := s.Client.Get(ctx, routeNN, original)
54+
err := suite.Client.Get(ctx, routeNN, original)
6255
require.NoErrorf(t, err, "error getting HTTPRoute: %v", err)
6356

6457
// Sanity check
6558
kubernetes.HTTPRouteMustHaveLatestConditions(t, original)
6659

6760
mutate := original.DeepCopy()
6861
mutate.Spec.Rules[0].BackendRefs[0].Name = "infra-backend-v2"
69-
err = s.Client.Patch(ctx, mutate, client.MergeFrom(original))
62+
err = suite.Client.Patch(ctx, mutate, client.MergeFrom(original))
7063
require.NoErrorf(t, err, "error patching the HTTPRoute: %v", err)
7164

72-
kubernetes.HTTPRouteMustHaveCondition(t, s.Client, s.TimeoutConfig, routeNN, gwNN, acceptedCondition)
65+
kubernetes.HTTPRouteMustHaveCondition(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN, metav1.Condition{
66+
Type: string(v1beta1.RouteConditionAccepted),
67+
Status: metav1.ConditionTrue,
68+
Reason: "", // any reason
69+
})
70+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
7371

7472
updated := &v1beta1.HTTPRoute{}
75-
err = s.Client.Get(ctx, routeNN, updated)
73+
err = suite.Client.Get(ctx, routeNN, updated)
7674
require.NoErrorf(t, err, "error getting Gateway: %v", err)
7775

7876
// Sanity check

conformance/tests/httproute-query-param-matching.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@ var HTTPRouteQueryParamMatching = suite.ConformanceTest{
3636
Manifests: []string{"tests/httproute-query-param-matching.yaml"},
3737
Features: []suite.SupportedFeature{suite.SupportHTTPRouteQueryParamMatching},
3838
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
39-
var (
40-
ns = "gateway-conformance-infra"
41-
routeNN = types.NamespacedName{Namespace: ns, Name: "query-param-matching"}
42-
gwNN = types.NamespacedName{Namespace: ns, Name: "same-namespace"}
43-
gwAddr = kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
44-
)
39+
ns := "gateway-conformance-infra"
40+
routeNN := types.NamespacedName{Namespace: ns, Name: "query-param-matching"}
41+
gwNN := types.NamespacedName{Namespace: ns, Name: "same-namespace"}
42+
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4544

4645
testCases := []http.ExpectedResponse{{
4746
Request: http.Request{Path: "/?animal=whale"},

conformance/tests/httproute-redirect-host-and-status.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteRedirectHostAndStatus = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "redirect-host-and-status", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
testCases := []http.ExpectedResponse{{
4546
Request: http.Request{

conformance/tests/httproute-redirect-path.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var HTTPRouteRedirectPath = suite.ConformanceTest{
4141
routeNN := types.NamespacedName{Name: "redirect-path", Namespace: ns}
4242
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4343
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
44+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4445

4546
testCases := []http.ExpectedResponse{{
4647
Request: http.Request{

conformance/tests/httproute-redirect-port.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var HTTPRouteRedirectPort = suite.ConformanceTest{
4141
routeNN := types.NamespacedName{Name: "redirect-port", Namespace: ns}
4242
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4343
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
44+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4445

4546
testCases := []http.ExpectedResponse{{
4647
Request: http.Request{

conformance/tests/httproute-redirect-scheme.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var HTTPRouteRedirectScheme = suite.ConformanceTest{
4141
routeNN := types.NamespacedName{Name: "redirect-scheme", Namespace: ns}
4242
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4343
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
44+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4445

4546
testCases := []http.ExpectedResponse{{
4647
Request: http.Request{

conformance/tests/httproute-reference-grant.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ var HTTPRouteReferenceGrant = suite.ConformanceTest{
3535
Description: "A single HTTPRoute in the gateway-conformance-infra namespace, with a backendRef in the gateway-conformance-web-backend namespace, should attach to Gateway in the gateway-conformance-infra namespace",
3636
Features: []suite.SupportedFeature{suite.SupportReferenceGrant},
3737
Manifests: []string{"tests/httproute-reference-grant.yaml"},
38-
Test: func(t *testing.T, s *suite.ConformanceTestSuite) {
38+
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
3939
routeNN := types.NamespacedName{Name: "reference-grant", Namespace: "gateway-conformance-infra"}
4040
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: "gateway-conformance-infra"}
41-
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, s.Client, s.TimeoutConfig, s.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
41+
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
42+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4243

4344
t.Run("Simple HTTP request should reach web-backend", func(t *testing.T) {
44-
http.MakeRequestAndExpectEventuallyConsistentResponse(t, s.RoundTripper, s.TimeoutConfig, gwAddr, http.ExpectedResponse{
45+
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, http.ExpectedResponse{
4546
Request: http.Request{
4647
Method: "GET",
4748
Path: "/",

conformance/tests/httproute-request-header-modifier.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var HTTPRouteRequestHeaderModifier = suite.ConformanceTest{
3939
routeNN := types.NamespacedName{Name: "request-header-modifier", Namespace: ns}
4040
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4141
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
42+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4243

4344
testCases := []http.ExpectedResponse{{
4445
Request: http.Request{

conformance/tests/httproute-response-header-modifier.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteResponseHeaderModifier = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "response-header-modifier", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
testCases := []http.ExpectedResponse{{
4546
Request: http.Request{

conformance/tests/httproute-rewrite-host.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteRewriteHost = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "rewrite-host", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
testCases := []http.ExpectedResponse{
4546
{

conformance/tests/httproute-rewrite-path.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteRewritePath = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "rewrite-path", Namespace: ns}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
testCases := []http.ExpectedResponse{
4546
{

conformance/tests/httproute-simple-same-namespace.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var HTTPRouteSimpleSameNamespace = suite.ConformanceTest{
4040
routeNN := types.NamespacedName{Name: "gateway-conformance-infra-test", Namespace: string(ns)}
4141
gwNN := types.NamespacedName{Name: "same-namespace", Namespace: string(ns)}
4242
gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
43+
kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
4344

4445
t.Run("Simple HTTP request should reach infra-backend", func(t *testing.T) {
4546
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, http.ExpectedResponse{

conformance/utils/kubernetes/helpers.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,16 @@ func HTTPRouteMustHaveCondition(t *testing.T, client client.Client, timeoutConfi
556556
require.NoErrorf(t, waitErr, "error waiting for HTTPRoute status to have a Condition matching expectations")
557557
}
558558

559+
// HTTPRouteMustHaveResolvedRefsConditionsTrue checks that the supplied HTTPRoute has the resolvedRefsCondition
560+
// set to true.
561+
func HTTPRouteMustHaveResolvedRefsConditionsTrue(t *testing.T, client client.Client, timeoutConfig config.TimeoutConfig, routeNN types.NamespacedName, gwNN types.NamespacedName) {
562+
HTTPRouteMustHaveCondition(t, client, timeoutConfig, routeNN, gwNN, metav1.Condition{
563+
Type: string(v1beta1.RouteConditionResolvedRefs),
564+
Status: metav1.ConditionTrue,
565+
Reason: string(v1beta1.RouteReasonResolvedRefs),
566+
})
567+
}
568+
559569
func parentRefToString(p v1beta1.ParentReference) string {
560570
if p.Namespace != nil && *p.Namespace != "" {
561571
return fmt.Sprintf("%v/%v", p.Namespace, p.Name)

0 commit comments

Comments
 (0)