From 76f8fbddcd0e5b5c2942b50254ebc5b6954788b6 Mon Sep 17 00:00:00 2001 From: Fredrik Larsson Date: Sun, 5 Mar 2023 15:03:41 +0100 Subject: [PATCH] Add tests for annotation override (gateway sources) --- source/gateway_httproute_test.go | 122 +++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/source/gateway_httproute_test.go b/source/gateway_httproute_test.go index 28926705db..942fec9b60 100644 --- a/source/gateway_httproute_test.go +++ b/source/gateway_httproute_test.go @@ -1033,6 +1033,128 @@ func TestGatewayHTTPRouteSourceEndpoints(t *testing.T) { }}, endpoints: nil, }, + { + title: "AnnotationOverride", + config: Config{ + GatewayNamespace: "gateway-namespace", + }, + namespaces: namespaces("gateway-namespace", "route-namespace"), + gateways: []*v1beta1.Gateway{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "overriden-gateway", + Namespace: "gateway-namespace", + Annotations: map[string]string{ + targetAnnotationKey: "4.3.2.1", + }, + }, + Spec: v1beta1.GatewaySpec{ + Listeners: []v1beta1.Listener{{ + Protocol: v1beta1.HTTPProtocolType, + AllowedRoutes: allowAllNamespaces, + }}, + }, + Status: gatewayStatus("1.2.3.4"), + }, + }, + routes: []*v1beta1.HTTPRoute{{ + ObjectMeta: objectMeta("route-namespace", "test"), + Spec: v1beta1.HTTPRouteSpec{ + Hostnames: hostnames("test.example.internal"), + }, + Status: httpRouteStatus( // The route is attached to both gateways. + gatewayParentRef("gateway-namespace", "overriden-gateway"), + ), + }}, + endpoints: []*endpoint.Endpoint{ + newTestEndpoint("test.example.internal", "A", "4.3.2.1"), + }, + }, + { + title: "AnnotationOverrideMultipleStatusAddresses", + config: Config{ + GatewayNamespace: "gateway-namespace", + }, + namespaces: namespaces("gateway-namespace", "route-namespace"), + gateways: []*v1beta1.Gateway{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "overriden-gateway", + Namespace: "gateway-namespace", + Annotations: map[string]string{ + targetAnnotationKey: "4.3.2.1", + }, + }, + Spec: v1beta1.GatewaySpec{ + Listeners: []v1beta1.Listener{{ + Protocol: v1beta1.HTTPProtocolType, + AllowedRoutes: allowAllNamespaces, + }}, + }, + Status: gatewayStatus("1.2.3.4", "2.3.4.5"), + }, + }, + routes: []*v1beta1.HTTPRoute{{ + ObjectMeta: objectMeta("route-namespace", "test"), + Spec: v1beta1.HTTPRouteSpec{ + Hostnames: hostnames("test.example.internal"), + }, + Status: httpRouteStatus( // The route is attached to both gateways. + gatewayParentRef("gateway-namespace", "overriden-gateway"), + ), + }}, + endpoints: []*endpoint.Endpoint{ + newTestEndpoint("test.example.internal", "A", "4.3.2.1"), + }, + }, + { + title: "MutlipleGatewaysOneAnnotationOverride", + config: Config{ + GatewayNamespace: "gateway-namespace", + }, + namespaces: namespaces("gateway-namespace", "route-namespace"), + gateways: []*v1beta1.Gateway{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "overriden-gateway", + Namespace: "gateway-namespace", + Annotations: map[string]string{ + targetAnnotationKey: "4.3.2.1", + }, + }, + Spec: v1beta1.GatewaySpec{ + Listeners: []v1beta1.Listener{{ + Protocol: v1beta1.HTTPProtocolType, + AllowedRoutes: allowAllNamespaces, + }}, + }, + Status: gatewayStatus("1.2.3.4"), + }, + { + ObjectMeta: objectMeta("gateway-namespace", "test"), + Spec: v1beta1.GatewaySpec{ + Listeners: []v1beta1.Listener{{ + Protocol: v1beta1.HTTPProtocolType, + AllowedRoutes: allowAllNamespaces, + }}, + }, + Status: gatewayStatus("2.3.4.5"), + }, + }, + routes: []*v1beta1.HTTPRoute{{ + ObjectMeta: objectMeta("route-namespace", "test"), + Spec: v1beta1.HTTPRouteSpec{ + Hostnames: hostnames("test.example.internal"), + }, + Status: httpRouteStatus( // The route is attached to both gateways. + gatewayParentRef("gateway-namespace", "overriden-gateway"), + gatewayParentRef("gateway-namespace", "test"), + ), + }}, + endpoints: []*endpoint.Endpoint{ + newTestEndpoint("test.example.internal", "A", "4.3.2.1", "2.3.4.5"), + }, + }, } for _, tt := range tests { tt := tt