diff --git a/conformance/README.md b/conformance/README.md index 1945b7736..ea07e96bd 100644 --- a/conformance/README.md +++ b/conformance/README.md @@ -93,16 +93,22 @@ go test -v ./conformance \ - `--skip-tests`: Comma-separated list of tests to skip -## Exempt Features - -Features not yet implemented (tests will be skipped): -- `GatewayStaticAddresses` -- `GatewayHTTPListenerIsolation` -- `HTTPRouteRequestMultipleMirrors` -- `HTTPRouteRequestTimeout` -- `HTTPRouteBackendTimeout` -- `HTTPRouteParentRefPort` -- continue updating... +## Generate Conformance Test Report +Tests under `options.SkipTests` are test cases that we know will not pass due to ELB limitations. Using command below will generate a report `conformance-report.yaml` under conformance folder + +```bash +go test -v -timeout=60m ./conformance -run TestConformance -args \ +--report-output=./conformance-report.yaml \ +--gateway-class=REPLACE_WITH_GATEWAY_CLASS_NAME \ +--organization=aws \ +--project=aws-load-balancer-controller \ +--url=https://github.com/kubernetes-sigs/aws-load-balancer-controller \ +--version=v2.16.0 \ +--contact=https://github.com/kubernetes-sigs/aws-load-balancer-controller/blob/main/OWNERS#L6 \ +--conformance-profiles=GATEWAY-HTTP \ +--allow-crds-mismatch=true \ +--cleanup-base-resources=false +``` ## Troubleshooting diff --git a/conformance/conformance-report.yaml b/conformance/conformance-report.yaml new file mode 100644 index 000000000..47282507a --- /dev/null +++ b/conformance/conformance-report.yaml @@ -0,0 +1,64 @@ +apiVersion: gateway.networking.k8s.io/v1 +date: "2025-12-07T23:35:46-08:00" +gatewayAPIChannel: experimental +gatewayAPIVersion: v1.3.0 +implementation: + contact: + - https://github.com/kubernetes-sigs/aws-load-balancer-controller/blob/main/OWNERS#L6 + organization: aws + project: aws-load-balancer-controller + url: https://github.com/kubernetes-sigs/aws-load-balancer-controller + version: v2.16.0 +kind: ConformanceReport +mode: default +profiles: +- core: + result: partial + skippedTests: + - GatewayInvalidTLSConfiguration + - GatewaySecretInvalidReferenceGrant + - GatewaySecretMissingReferenceGrant + - GatewaySecretReferenceGrantAllInNamespace + - GatewaySecretReferenceGrantSpecific + - GatewayWithAttachedRoutes + - HTTPRouteHTTPSListener + - HTTPRouteHostnameIntersection + - HTTPRouteRequestHeaderModifier + - HTTPRouteServiceTypes + statistics: + Failed: 0 + Passed: 23 + Skipped: 10 + extended: + result: success + statistics: + Failed: 0 + Passed: 5 + Skipped: 0 + supportedFeatures: + - HTTPRouteDestinationPortMatching + - HTTPRouteMethodMatching + - HTTPRouteParentRefPort + - HTTPRoutePortRedirect + unsupportedFeatures: + - GatewayAddressEmpty + - GatewayHTTPListenerIsolation + - GatewayInfrastructurePropagation + - GatewayPort8080 + - GatewayStaticAddresses + - HTTPRouteBackendProtocolH2C + - HTTPRouteBackendProtocolWebSocket + - HTTPRouteBackendRequestHeaderModification + - HTTPRouteBackendTimeout + - HTTPRouteHostRewrite + - HTTPRoutePathRedirect + - HTTPRoutePathRewrite + - HTTPRouteQueryParamMatching + - HTTPRouteRequestMirror + - HTTPRouteRequestMultipleMirrors + - HTTPRouteRequestPercentageMirror + - HTTPRouteRequestTimeout + - HTTPRouteResponseHeaderModification + - HTTPRouteSchemeRedirect + name: GATEWAY-HTTP + summary: Core tests partially succeeded with 10 test skips. Extended tests succeeded. diff --git a/conformance/conformance_test.go b/conformance/conformance_test.go index 42ebdda06..bdd4a91d2 100644 --- a/conformance/conformance_test.go +++ b/conformance/conformance_test.go @@ -11,18 +11,27 @@ import ( func TestConformance(t *testing.T) { options := conformance.DefaultOptions(t) - // TODO: SkipTests, SupportedFeatures, ExemptFeatures needs to be updated after we conduct all conformance tests - // Below is only an example for now - // Configure skip tests, supported features and exempt features - options.SkipTests = suite.ParseSkipTests("GatewaySecretInvalidReferenceGrant") - options.SupportedFeatures = suite.ParseSupportedFeatures("Gateway,HTTPRoute") - options.ExemptFeatures = suite.ParseSupportedFeatures("GatewayStaticAddresses,GatewayHTTPListenerIsolation") + // Configure skip tests and supported features + options.SkipTests = []string{ + "GatewayInvalidTLSConfiguration", + "GatewaySecretInvalidReferenceGrant", + "GatewaySecretMissingReferenceGrant", + "GatewaySecretReferenceGrantAllInNamespace", + "GatewaySecretReferenceGrantSpecific", + "GatewayWithAttachedRoutes", + "HTTPRouteBackendRequestHeaderModifier", + "HTTPRouteHTTPSListener", + "HTTPRouteRequestHeaderModifier", + "HTTPRouteHostnameIntersection", + "HTTPRouteServiceTypes", + } + options.SupportedFeatures = suite.ParseSupportedFeatures("Gateway,HTTPRoute,ReferenceGrant,HTTPRoutePortRedirect,HTTPRouteMethodMatching,HTTPRouteParentRefPort,HTTPRouteDestinationPortMatching") // Configure timeout config - options.TimeoutConfig.GatewayStatusMustHaveListeners = 10 * time.Minute // we need to wait for LB to be provisioned before updating gateway listener status - options.TimeoutConfig.GatewayListenersMustHaveConditions = 10 * time.Minute - options.TimeoutConfig.NamespacesMustBeReady = 10 * time.Minute - options.TimeoutConfig.DefaultTestTimeout = 10 * time.Minute + options.TimeoutConfig.GatewayStatusMustHaveListeners = 8 * time.Minute // we need to wait for LB to be provisioned before updating gateway listener status + options.TimeoutConfig.GatewayListenersMustHaveConditions = 8 * time.Minute + options.TimeoutConfig.NamespacesMustBeReady = 8 * time.Minute + options.TimeoutConfig.DefaultTestTimeout = 8 * time.Minute conformance.RunConformanceWithOptions(t, options) }