diff --git a/test/e2e/testdata/load_balancing_backend.yaml b/test/e2e/testdata/load_balancing_backend.yaml new file mode 100644 index 0000000000..d4cfd243e1 --- /dev/null +++ b/test/e2e/testdata/load_balancing_backend.yaml @@ -0,0 +1,57 @@ +apiVersion: v1 +kind: Service +metadata: + name: app-backend-lb + namespace: gateway-conformance-infra +spec: + selector: + app: app-backend-lb + ports: + - protocol: TCP + port: 8080 + targetPort: 3000 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: app-backend-lb + namespace: gateway-conformance-infra + labels: + app: app-backend-lb +spec: + replicas: 4 + selector: + matchLabels: + app: app-backend-lb + template: + metadata: + labels: + app: app-backend-lb + spec: + containers: + - name: backend + image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e + imagePullPolicy: IfNotPresent + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: SERVICE_NAME + value: app-backend-lb + readinessProbe: + httpGet: + path: /health + port: 3000 + initialDelaySeconds: 5 + periodSeconds: 2 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + resources: + requests: + cpu: 10m diff --git a/test/e2e/testdata/load_balancing_consistent_hash_cookie.yaml b/test/e2e/testdata/load_balancing_consistent_hash_cookie.yaml index 45d927bf2d..9d445d744f 100644 --- a/test/e2e/testdata/load_balancing_consistent_hash_cookie.yaml +++ b/test/e2e/testdata/load_balancing_consistent_hash_cookie.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-cookie - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-cookie - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-cookie - namespace: gateway-conformance-infra - labels: - app: lb-backend-cookie -spec: - replicas: 4 - selector: - matchLabels: - app: lb-backend-cookie - template: - metadata: - labels: - app: lb-backend-cookie - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-cookie - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -81,5 +32,5 @@ spec: type: PathPrefix value: /cookie backendRefs: - - name: lb-backend-cookie + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_consistent_hash_header.yaml b/test/e2e/testdata/load_balancing_consistent_hash_header.yaml index 2c675a602b..0b3895b202 100644 --- a/test/e2e/testdata/load_balancing_consistent_hash_header.yaml +++ b/test/e2e/testdata/load_balancing_consistent_hash_header.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-header - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-header - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-header - namespace: gateway-conformance-infra - labels: - app: lb-backend-header -spec: - replicas: 4 - selector: - matchLabels: - app: lb-backend-header - template: - metadata: - labels: - app: lb-backend-header - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-header - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -78,5 +29,5 @@ spec: type: PathPrefix value: /header backendRefs: - - name: lb-backend-header + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_consistent_hash_multi_header.yaml b/test/e2e/testdata/load_balancing_consistent_hash_multi_header.yaml index 62ff4f5dfd..bdadee5b8f 100644 --- a/test/e2e/testdata/load_balancing_consistent_hash_multi_header.yaml +++ b/test/e2e/testdata/load_balancing_consistent_hash_multi_header.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-header - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-header - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-header - namespace: gateway-conformance-infra - labels: - app: lb-backend-header -spec: - replicas: 4 - selector: - matchLabels: - app: lb-backend-header - template: - metadata: - labels: - app: lb-backend-header - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-header - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -79,5 +30,5 @@ spec: type: PathPrefix value: /header backendRefs: - - name: lb-backend-header + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_consistent_hash_query_parameter.yaml b/test/e2e/testdata/load_balancing_consistent_hash_query_parameter.yaml index 0029f2b647..645c6122fd 100644 --- a/test/e2e/testdata/load_balancing_consistent_hash_query_parameter.yaml +++ b/test/e2e/testdata/load_balancing_consistent_hash_query_parameter.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-query-parameter - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-query-parameter - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-query-parameter - namespace: gateway-conformance-infra - labels: - app: lb-backend-query-parameter -spec: - replicas: 4 - selector: - matchLabels: - app: lb-backend-query-parameter - template: - metadata: - labels: - app: lb-backend-query-parameter - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-query-parameter - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -79,5 +30,5 @@ spec: type: PathPrefix value: /query-parameter backendRefs: - - name: lb-backend-query-parameter + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_consistent_hash_source_ip.yaml b/test/e2e/testdata/load_balancing_consistent_hash_source_ip.yaml index c83c5e7816..f61322c2c7 100644 --- a/test/e2e/testdata/load_balancing_consistent_hash_source_ip.yaml +++ b/test/e2e/testdata/load_balancing_consistent_hash_source_ip.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-sourceip - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-sourceip - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-sourceip - namespace: gateway-conformance-infra - labels: - app: lb-backend-sourceip -spec: - replicas: 4 - selector: - matchLabels: - app: lb-backend-sourceip - template: - metadata: - labels: - app: lb-backend-sourceip - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-sourceip - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -76,5 +27,5 @@ spec: type: PathPrefix value: /source backendRefs: - - name: lb-backend-sourceip + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_endpoint_override.yaml b/test/e2e/testdata/load_balancing_endpoint_override.yaml index 3735015107..56af381049 100644 --- a/test/e2e/testdata/load_balancing_endpoint_override.yaml +++ b/test/e2e/testdata/load_balancing_endpoint_override.yaml @@ -1,56 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-endpointoverride - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-endpointoverride - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-endpointoverride - namespace: gateway-conformance-infra - labels: - app: lb-backend-endpointoverride -spec: - replicas: 3 - selector: - matchLabels: - app: lb-backend-endpointoverride - template: - metadata: - labels: - app: lb-backend-endpointoverride - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-endpointoverride - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -81,6 +28,6 @@ spec: type: PathPrefix value: /endpoint-override-header backendRefs: - - name: lb-backend-endpointoverride + - name: app-backend-lb port: 8080 diff --git a/test/e2e/testdata/load_balancing_round_robin.yaml b/test/e2e/testdata/load_balancing_round_robin.yaml index c50d170925..20154c0fb3 100644 --- a/test/e2e/testdata/load_balancing_round_robin.yaml +++ b/test/e2e/testdata/load_balancing_round_robin.yaml @@ -1,52 +1,3 @@ -apiVersion: v1 -kind: Service -metadata: - name: lb-backend-roundrobin - namespace: gateway-conformance-infra -spec: - selector: - app: lb-backend-roundrobin - ports: - - protocol: TCP - port: 8080 - targetPort: 3000 ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: lb-backend-roundrobin - namespace: gateway-conformance-infra - labels: - app: lb-backend-roundrobin -spec: - replicas: 3 - selector: - matchLabels: - app: lb-backend-roundrobin - template: - metadata: - labels: - app: lb-backend-roundrobin - spec: - containers: - - name: backend - image: gcr.io/k8s-staging-gateway-api/echo-basic:v20231214-v1.0.0-140-gf544a46e - imagePullPolicy: IfNotPresent - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: SERVICE_NAME - value: lb-backend-roundrobin - resources: - requests: - cpu: 10m ---- apiVersion: gateway.envoyproxy.io/v1alpha1 kind: BackendTrafficPolicy metadata: @@ -74,5 +25,5 @@ spec: type: PathPrefix value: /round backendRefs: - - name: lb-backend-roundrobin + - name: app-backend-lb port: 8080 diff --git a/test/e2e/tests/load_balancing.go b/test/e2e/tests/load_balancing.go index c9ceeb915b..d10affbaaa 100644 --- a/test/e2e/tests/load_balancing.go +++ b/test/e2e/tests/load_balancing.go @@ -51,11 +51,14 @@ func init() { var RoundRobinLoadBalancingTest = suite.ConformanceTest{ ShortName: "RoundRobinLoadBalancing", Description: "Test for round robin load balancing type", - Manifests: []string{"testdata/load_balancing_round_robin.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_round_robin.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { const ( sendRequests = 100 - replicas = 3 + replicas = 4 offset = 5 ) @@ -70,7 +73,7 @@ var RoundRobinLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "round-robin-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-roundrobin"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), &gwapiv1.HTTPRoute{}, false, routeNN) @@ -119,7 +122,7 @@ func runTrafficTest(t *testing.T, suite *suite.ConformanceTestSuite, t.Fatalf("expected response cannot be nil") } trafficMap := make(map[string]int) - for i := 0; i < totalRequestCount; i++ { + for range totalRequestCount { request := *req cReq, cResp, err := suite.RoundTripper.CaptureRoundTrip(request) if err != nil { @@ -139,18 +142,17 @@ func runTrafficTest(t *testing.T, suite *suite.ConformanceTestSuite, } } - ret := compareFunc(trafficMap) - if !ret { - tlog.Logf(t, "traffic map: %v", trafficMap) - } - - return ret + tlog.Logf(t, "traffic map: %v", trafficMap) + return compareFunc(trafficMap) } var ConsistentHashSourceIPLoadBalancingTest = suite.ConformanceTest{ ShortName: "SourceIPBasedConsistentHashLoadBalancing", Description: "Test for source IP based consistent hash load balancing type", - Manifests: []string{"testdata/load_balancing_consistent_hash_source_ip.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_consistent_hash_source_ip.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { ns := "gateway-conformance-infra" routeNN := types.NamespacedName{Name: "source-ip-lb-route", Namespace: ns} @@ -163,7 +165,7 @@ var ConsistentHashSourceIPLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "source-ip-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-sourceip"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), &gwapiv1.HTTPRoute{}, false, routeNN) @@ -187,7 +189,10 @@ var ConsistentHashSourceIPLoadBalancingTest = suite.ConformanceTest{ var ConsistentHashHeaderLoadBalancingTest = suite.ConformanceTest{ ShortName: "HeaderBasedConsistentHashLoadBalancing", Description: "Test for header based consistent hash load balancing type", - Manifests: []string{"testdata/load_balancing_consistent_hash_header.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_consistent_hash_header.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { ns := "gateway-conformance-infra" routeNN := types.NamespacedName{Name: "header-lb-route", Namespace: ns} @@ -200,7 +205,7 @@ var ConsistentHashHeaderLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "header-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-header"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), &gwapiv1.HTTPRoute{}, false, routeNN) @@ -228,7 +233,10 @@ var ConsistentHashHeaderLoadBalancingTest = suite.ConformanceTest{ var MultiHeaderConsistentHashHeaderLoadBalancingTest = suite.ConformanceTest{ ShortName: "MultiHeaderBasedConsistentHashLoadBalancing", Description: "Test for multiple header based consistent hash load balancing type", - Manifests: []string{"testdata/load_balancing_consistent_hash_multi_header.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_consistent_hash_multi_header.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { ns := "gateway-conformance-infra" routeNN := types.NamespacedName{Name: "header-lb-route", Namespace: ns} @@ -241,7 +249,7 @@ var MultiHeaderConsistentHashHeaderLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "header-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-header"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN) @@ -296,7 +304,10 @@ func runConsistentHashLoadBalancingTest(t *testing.T, suite *suite.ConformanceTe var ConsistentHashCookieLoadBalancingTest = suite.ConformanceTest{ ShortName: "CookieBasedConsistentHashLoadBalancing", Description: "Test for cookie based consistent hash load balancing type", - Manifests: []string{"testdata/load_balancing_consistent_hash_cookie.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_consistent_hash_cookie.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { const sendRequests = 10 @@ -311,7 +322,7 @@ var ConsistentHashCookieLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "cookie-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-cookie"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwHost := kubernetes.GatewayAndRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), &gwapiv1.HTTPRoute{}, false, routeNN) gwAddr := net.JoinHostPort(gwHost, "80") @@ -426,8 +437,13 @@ var ConsistentHashCookieLoadBalancingTest = suite.ConformanceTest{ var ConsistentHashQueryParamsLoadBalancingTest = suite.ConformanceTest{ ShortName: "QueryParamsBasedConsistentHashLoadBalancing", Description: "Test for multiple query parameter based consistent hash load balancing type", - Manifests: []string{"testdata/load_balancing_consistent_hash_query_parameter.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_consistent_hash_query_parameter.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { + t.Skip("QueryParamsBasedConsistentHashLoadBalancing test is skipped due to the underlying implementation is not stable yet." + + " See https://github.com/envoyproxy/gateway/issues/8330") ns := "gateway-conformance-infra" routeNN := types.NamespacedName{Name: "query-parameter-lb-route", Namespace: ns} gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns} @@ -439,7 +455,7 @@ var ConsistentHashQueryParamsLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "query-parameter-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-query-parameter"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), &gwapiv1.HTTPRoute{}, false, routeNN) // Test with different combinations of multiple queries @@ -476,7 +492,10 @@ var ConsistentHashQueryParamsLoadBalancingTest = suite.ConformanceTest{ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ ShortName: "EndpointOverrideLoadBalancing", Description: "Test for endpoint override load balancing functionality", - Manifests: []string{"testdata/load_balancing_endpoint_override.yaml"}, + Manifests: []string{ + "testdata/load_balancing_backend.yaml", + "testdata/load_balancing_endpoint_override.yaml", + }, Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { const sendRequests = 10 @@ -491,7 +510,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ Name: gwapiv1.ObjectName(gwNN.Name), } BackendTrafficPolicyMustBeAccepted(t, suite.Client, types.NamespacedName{Name: "endpoint-override-header-lb-policy", Namespace: ns}, suite.ControllerName, ancestorRef) - WaitForPods(t, suite.Client, ns, map[string]string{"app": "lb-backend-endpointoverride"}, corev1.PodRunning, &PodReady) + WaitForPods(t, suite.Client, ns, map[string]string{"app": "app-backend-lb"}, corev1.PodRunning, &PodReady) gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), headerRouteNN) @@ -503,7 +522,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ podList := &corev1.PodList{} err := suite.Client.List(ctx, podList, &client.ListOptions{ Namespace: ns, - LabelSelector: labels.SelectorFromSet(map[string]string{"app": "lb-backend-endpointoverride"}), + LabelSelector: labels.SelectorFromSet(map[string]string{"app": "app-backend-lb"}), }) require.NoError(t, err, "failed to list pods") require.NotEmpty(t, podList.Items, "should have pods") @@ -521,7 +540,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ // Get service port svc := &corev1.Service{} - err = suite.Client.Get(ctx, types.NamespacedName{Name: "lb-backend-endpointoverride", Namespace: ns}, svc) + err = suite.Client.Get(ctx, types.NamespacedName{Name: "app-backend-lb", Namespace: ns}, svc) require.NoError(t, err, "failed to get service") require.NotEmpty(t, svc.Spec.Ports, "service should have ports") servicePort := svc.Spec.Ports[0].TargetPort.IntValue() @@ -559,7 +578,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ req := http.MakeRequest(t, &expectedResponse, gwAddr, "HTTP", "http") // Test that all requests go to the expected pod - for i := 0; i < sendRequests; i++ { + for i := range sendRequests { cReq, cResp, err := suite.RoundTripper.CaptureRoundTrip(req) require.NoError(t, err, "failed to get expected response") require.NoError(t, http.CompareRoundTrip(t, &req, cReq, cResp, expectedResponse), "failed to compare request and response") @@ -592,7 +611,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ req := http.MakeRequest(t, &expectedResponse, gwAddr, "HTTP", "http") // Make multiple requests and verify fallback behavior (just check 200 response) - for i := 0; i < sendRequests; i++ { + for range sendRequests { cReq, cResp, err := suite.RoundTripper.CaptureRoundTrip(req) require.NoError(t, err, "failed to get expected response") require.NoError(t, http.CompareRoundTrip(t, &req, cReq, cResp, expectedResponse), "failed to compare request and response") @@ -619,7 +638,7 @@ var EndpointOverrideLoadBalancingTest = suite.ConformanceTest{ req := http.MakeRequest(t, &expectedResponse, gwAddr, "HTTP", "http") // Make multiple requests and verify fallback behavior (just check 200 response) - for i := 0; i < sendRequests; i++ { + for range sendRequests { cReq, cResp, err := suite.RoundTripper.CaptureRoundTrip(req) require.NoError(t, err, "failed to get expected response") require.NoError(t, http.CompareRoundTrip(t, &req, cReq, cResp, expectedResponse), "failed to compare request and response")