From e60661942be9d3154b1112921b0156cdfa7395a7 Mon Sep 17 00:00:00 2001 From: Luca Comellini Date: Wed, 11 Sep 2024 12:44:41 -0700 Subject: [PATCH] Run tests in internal/mode/static/state in parallel (1) --- .../static/state/changed_predicate_test.go | 5 ++ .../state/dataplane/configuration_test.go | 25 ++++++++++ .../static/state/dataplane/convert_test.go | 26 +++++++--- .../mode/static/state/dataplane/sort_test.go | 1 + .../state/graph/gateway_listener_test.go | 17 +++++++ .../static/state/graph/gatewayclass_test.go | 4 ++ .../mode/static/state/graph/grpcroute_test.go | 7 +++ .../mode/static/state/graph/httproute_test.go | 12 +++++ .../mode/static/state/graph/namespace_test.go | 4 ++ .../static/state/graph/nginxproxy_test.go | 10 ++++ .../mode/static/state/graph/policies_test.go | 12 +++++ .../state/graph/policy_ancestor_test.go | 4 ++ .../mode/static/state/graph/secret_test.go | 1 + .../mode/static/state/graph/service_test.go | 2 + .../static/state/graph/validation_test.go | 2 + .../static/state/resolver/resolver_test.go | 48 ++++++++++++++----- .../resolver/service_resolver_suite_test.go | 1 + .../mode/static/state/state_suite_test.go | 1 + internal/mode/static/state/store_test.go | 2 + 19 files changed, 164 insertions(+), 20 deletions(-) diff --git a/internal/mode/static/state/changed_predicate_test.go b/internal/mode/static/state/changed_predicate_test.go index 7e7bf7304d..c5a199a85d 100644 --- a/internal/mode/static/state/changed_predicate_test.go +++ b/internal/mode/static/state/changed_predicate_test.go @@ -13,6 +13,7 @@ import ( ) func TestFuncPredicate(t *testing.T) { + t.Parallel() alwaysTrueFunc := func(_ ngftypes.ObjectType, _ types.NamespacedName) bool { return true } emptyObject := &v1.Pod{} @@ -25,6 +26,7 @@ func TestFuncPredicate(t *testing.T) { } func TestFuncPredicate_Panic(t *testing.T) { + t.Parallel() alwaysTrueFunc := func(_ ngftypes.ObjectType, _ types.NamespacedName) bool { return true } p := funcPredicate{stateChanged: alwaysTrueFunc} @@ -38,6 +40,7 @@ func TestFuncPredicate_Panic(t *testing.T) { } func TestAnnotationChangedPredicate_Delete(t *testing.T) { + t.Parallel() p := annotationChangedPredicate{} g := NewWithT(t) @@ -45,6 +48,7 @@ func TestAnnotationChangedPredicate_Delete(t *testing.T) { } func TestAnnotationChangedPredicate_Update(t *testing.T) { + t.Parallel() annotation := "test" tests := []struct { @@ -140,6 +144,7 @@ func TestAnnotationChangedPredicate_Update(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) if test.expPanic { upsert := func() { diff --git a/internal/mode/static/state/dataplane/configuration_test.go b/internal/mode/static/state/dataplane/configuration_test.go index a2ae5dc910..07b6d40946 100644 --- a/internal/mode/static/state/dataplane/configuration_test.go +++ b/internal/mode/static/state/dataplane/configuration_test.go @@ -109,6 +109,7 @@ func createFakePolicy(name string, kind string) policies.Policy { } func TestBuildConfiguration(t *testing.T) { + t.Parallel() const ( invalidMatchesPath = "/not-valid-matches" invalidFiltersPath = "/not-valid-filters" @@ -2231,6 +2232,7 @@ func TestBuildConfiguration(t *testing.T) { for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := BuildConfiguration( @@ -2255,6 +2257,7 @@ func TestBuildConfiguration(t *testing.T) { } func TestGetPath(t *testing.T) { + t.Parallel() tests := []struct { path *v1.HTTPPathMatch expected string @@ -2284,6 +2287,7 @@ func TestGetPath(t *testing.T) { for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := getPath(test.path) g.Expect(result).To(Equal(test.expected)) @@ -2292,6 +2296,7 @@ func TestGetPath(t *testing.T) { } func TestCreateFilters(t *testing.T) { + t.Parallel() redirect1 := v1.HTTPRouteFilter{ Type: v1.HTTPRouteFilterRequestRedirect, RequestRedirect: &v1.HTTPRequestRedirectFilter{ @@ -2451,6 +2456,7 @@ func TestCreateFilters(t *testing.T) { for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := createHTTPFilters(test.filters) @@ -2460,6 +2466,7 @@ func TestCreateFilters(t *testing.T) { } func TestGetListenerHostname(t *testing.T) { + t.Parallel() var emptyHostname v1.Hostname var hostname v1.Hostname = "example.com" @@ -2487,6 +2494,7 @@ func TestGetListenerHostname(t *testing.T) { for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := getListenerHostname(test.hostname) g.Expect(result).To(Equal(test.expected)) @@ -2509,6 +2517,7 @@ func refsToValidRules(refs ...[]graph.BackendRef) []graph.RouteRule { } func TestBuildUpstreams(t *testing.T) { + t.Parallel() fooEndpoints := []resolver.Endpoint{ { Address: "10.0.0.0", @@ -2776,6 +2785,7 @@ func TestBuildUpstreams(t *testing.T) { } func TestBuildBackendGroups(t *testing.T) { + t.Parallel() createBackendGroup := func(name string, ruleIdx int, backendNames ...string) BackendGroup { backends := make([]Backend, len(backendNames)) for i, name := range backendNames { @@ -2848,6 +2858,7 @@ func TestBuildBackendGroups(t *testing.T) { } func TestHostnameMoreSpecific(t *testing.T) { + t.Parallel() tests := []struct { host1 *v1.Hostname host2 *v1.Hostname @@ -2900,6 +2911,7 @@ func TestHostnameMoreSpecific(t *testing.T) { for _, tc := range tests { t.Run(tc.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(listenerHostnameMoreSpecific(tc.host1, tc.host2)).To(Equal(tc.host1Wins)) @@ -2908,6 +2920,7 @@ func TestHostnameMoreSpecific(t *testing.T) { } func TestConvertBackendTLS(t *testing.T) { + t.Parallel() btpCaCertRefs := &graph.BackendTLSPolicy{ Source: &v1alpha3.BackendTLSPolicy{ ObjectMeta: metav1.ObjectMeta{ @@ -2976,6 +2989,7 @@ func TestConvertBackendTLS(t *testing.T) { for _, tc := range tests { t.Run(tc.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(convertBackendTLS(tc.btp)).To(Equal(tc.expected)) @@ -2984,6 +2998,7 @@ func TestConvertBackendTLS(t *testing.T) { } func TestBuildTelemetry(t *testing.T) { + t.Parallel() telemetryConfigured := &graph.NginxProxy{ Source: &ngfAPI.NginxProxy{ Spec: ngfAPI.NginxProxySpec{ @@ -3206,6 +3221,7 @@ func TestBuildTelemetry(t *testing.T) { for _, tc := range tests { t.Run(tc.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) tel := buildTelemetry(tc.g) sort.Slice(tel.Ratios, func(i, j int) bool { @@ -3217,6 +3233,7 @@ func TestBuildTelemetry(t *testing.T) { } func TestBuildPolicies(t *testing.T) { + t.Parallel() getPolicy := func(kind, name string) policies.Policy { return &policiesfakes.FakePolicy{ GetNameStub: func() string { @@ -3281,6 +3298,7 @@ func TestBuildPolicies(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) pols := buildPolicies(test.policies) @@ -3293,6 +3311,7 @@ func TestBuildPolicies(t *testing.T) { } func TestGetAllowedAddressType(t *testing.T) { + t.Parallel() test := []struct { msg string ipFamily IPFamilyType @@ -3322,6 +3341,7 @@ func TestGetAllowedAddressType(t *testing.T) { for _, tc := range test { t.Run(tc.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(getAllowedAddressType(tc.ipFamily)).To(Equal(tc.expected)) }) @@ -3329,11 +3349,13 @@ func TestGetAllowedAddressType(t *testing.T) { } func TestCreateRatioVarName(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(CreateRatioVarName(25)).To(Equal("$otel_ratio_25")) } func TestCreatePassthroughServers(t *testing.T) { + t.Parallel() getL4RouteKey := func(name string) graph.L4RouteKey { return graph.L4RouteKey{ NamespacedName: types.NamespacedName{ @@ -3470,6 +3492,7 @@ func TestCreatePassthroughServers(t *testing.T) { } func TestBuildStreamUpstreams(t *testing.T) { + t.Parallel() getL4RouteKey := func(name string) graph.L4RouteKey { return graph.L4RouteKey{ NamespacedName: types.NamespacedName{ @@ -3601,6 +3624,7 @@ func TestBuildStreamUpstreams(t *testing.T) { } func TestBuildRewriteIPSettings(t *testing.T) { + t.Parallel() tests := []struct { msg string g *graph.Graph @@ -3713,6 +3737,7 @@ func TestBuildRewriteIPSettings(t *testing.T) { for _, tc := range tests { t.Run(tc.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) baseConfig := buildBaseHTTPConfig(tc.g) g.Expect(baseConfig.RewriteClientIPSettings).To(Equal(tc.expRewriteIPSettings)) diff --git a/internal/mode/static/state/dataplane/convert_test.go b/internal/mode/static/state/dataplane/convert_test.go index 1688c1591f..3ab1e083f1 100644 --- a/internal/mode/static/state/dataplane/convert_test.go +++ b/internal/mode/static/state/dataplane/convert_test.go @@ -10,6 +10,7 @@ import ( ) func TestConvertMatch(t *testing.T) { + t.Parallel() path := v1.HTTPPathMatch{ Type: helpers.GetPointer(v1.PathMatchPathPrefix), Value: helpers.GetPointer("/"), @@ -115,6 +116,7 @@ func TestConvertMatch(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := convertMatch(test.match) @@ -124,6 +126,7 @@ func TestConvertMatch(t *testing.T) { } func TestConvertHTTPRequestRedirectFilter(t *testing.T) { + t.Parallel() tests := []struct { filter *v1.HTTPRequestRedirectFilter expected *HTTPRequestRedirectFilter @@ -153,6 +156,7 @@ func TestConvertHTTPRequestRedirectFilter(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := convertHTTPRequestRedirectFilter(test.filter) @@ -162,6 +166,7 @@ func TestConvertHTTPRequestRedirectFilter(t *testing.T) { } func TestConvertHTTPURLRewriteFilter(t *testing.T) { + t.Parallel() tests := []struct { filter *v1.HTTPURLRewriteFilter expected *HTTPURLRewriteFilter @@ -210,6 +215,7 @@ func TestConvertHTTPURLRewriteFilter(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := convertHTTPURLRewriteFilter(test.filter) @@ -219,6 +225,7 @@ func TestConvertHTTPURLRewriteFilter(t *testing.T) { } func TestConvertHTTPHeaderFilter(t *testing.T) { + t.Parallel() tests := []struct { filter *v1.HTTPHeaderFilter expected *HTTPHeaderFilter @@ -258,6 +265,7 @@ func TestConvertHTTPHeaderFilter(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := convertHTTPHeaderFilter(test.filter) @@ -267,7 +275,7 @@ func TestConvertHTTPHeaderFilter(t *testing.T) { } func TestConvertPathType(t *testing.T) { - g := NewWithT(t) + t.Parallel() tests := []struct { pathType v1.PathMatchType @@ -289,11 +297,15 @@ func TestConvertPathType(t *testing.T) { } for _, tc := range tests { - if tc.panic { - g.Expect(func() { convertPathType(tc.pathType) }).To(Panic()) - } else { - result := convertPathType(tc.pathType) - g.Expect(result).To(Equal(tc.expected)) - } + t.Run(string(tc.pathType), func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + if tc.panic { + g.Expect(func() { convertPathType(tc.pathType) }).To(Panic()) + } else { + result := convertPathType(tc.pathType) + g.Expect(result).To(Equal(tc.expected)) + } + }) } } diff --git a/internal/mode/static/state/dataplane/sort_test.go b/internal/mode/static/state/dataplane/sort_test.go index 9ab1ca5b4b..e500d05afe 100644 --- a/internal/mode/static/state/dataplane/sort_test.go +++ b/internal/mode/static/state/dataplane/sort_test.go @@ -12,6 +12,7 @@ import ( ) func TestSort(t *testing.T) { + t.Parallel() // timestamps earlier := metav1.Now() later := metav1.NewTime(earlier.Add(1 * time.Second)) diff --git a/internal/mode/static/state/graph/gateway_listener_test.go b/internal/mode/static/state/graph/gateway_listener_test.go index 712ab867d4..e0dbe645ed 100644 --- a/internal/mode/static/state/graph/gateway_listener_test.go +++ b/internal/mode/static/state/graph/gateway_listener_test.go @@ -15,6 +15,7 @@ import ( ) func TestValidateHTTPListener(t *testing.T) { + t.Parallel() protectedPorts := ProtectedPorts{9113: "MetricsPort"} tests := []struct { @@ -60,6 +61,7 @@ func TestValidateHTTPListener(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) v := createHTTPListenerValidator(protectedPorts) @@ -73,6 +75,7 @@ func TestValidateHTTPListener(t *testing.T) { } func TestValidateHTTPSListener(t *testing.T) { + t.Parallel() secretNs := "secret-ns" validSecretRef := v1.SecretObjectReference{ @@ -227,6 +230,7 @@ func TestValidateHTTPSListener(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) v := createHTTPSListenerValidator(protectedPorts) @@ -239,6 +243,7 @@ func TestValidateHTTPSListener(t *testing.T) { } func TestValidateListenerHostname(t *testing.T) { + t.Parallel() tests := []struct { hostname *v1.Hostname name string @@ -273,6 +278,7 @@ func TestValidateListenerHostname(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) conds, attachable := validateListenerHostname(v1.Listener{Hostname: test.hostname}) @@ -289,6 +295,7 @@ func TestValidateListenerHostname(t *testing.T) { } func TestGetAndValidateListenerSupportedKinds(t *testing.T) { + t.Parallel() HTTPRouteGroupKind := v1.RouteGroupKind{ Kind: kinds.HTTPRoute, Group: helpers.GetPointer[v1.Group](v1.GroupName), @@ -417,6 +424,7 @@ func TestGetAndValidateListenerSupportedKinds(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) listener := v1.Listener{ @@ -441,6 +449,7 @@ func TestGetAndValidateListenerSupportedKinds(t *testing.T) { } func TestValidateListenerLabelSelector(t *testing.T) { + t.Parallel() tests := []struct { selector *metav1.LabelSelector from v1.FromNamespaces @@ -469,6 +478,7 @@ func TestValidateListenerLabelSelector(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) // create iteration variable inside the loop to fix implicit memory aliasing @@ -496,12 +506,14 @@ func TestValidateListenerLabelSelector(t *testing.T) { } func TestValidateListenerPort(t *testing.T) { + t.Parallel() validPorts := []v1.PortNumber{1, 80, 443, 1000, 50000, 65535} invalidPorts := []v1.PortNumber{-1, 0, 65536, 80000, 9113} protectedPorts := ProtectedPorts{9113: "MetricsPort"} for _, p := range validPorts { t.Run(fmt.Sprintf("valid port %d", p), func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(validateListenerPort(p, protectedPorts)).To(Succeed()) }) @@ -509,6 +521,7 @@ func TestValidateListenerPort(t *testing.T) { for _, p := range invalidPorts { t.Run(fmt.Sprintf("invalid port %d", p), func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(validateListenerPort(p, protectedPorts)).ToNot(Succeed()) }) @@ -516,6 +529,7 @@ func TestValidateListenerPort(t *testing.T) { } func TestListenerNamesHaveOverlap(t *testing.T) { + t.Parallel() tests := []struct { hostname1 *v1.Hostname hostname2 *v1.Hostname @@ -568,6 +582,7 @@ func TestListenerNamesHaveOverlap(t *testing.T) { for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(haveOverlap(test.hostname1, test.hostname2)).To(Equal(test.expectResult)) }) @@ -575,6 +590,7 @@ func TestListenerNamesHaveOverlap(t *testing.T) { } func TestValidateTLSFieldOnTLSListener(t *testing.T) { + t.Parallel() tests := []struct { listener v1.Listener msg string @@ -613,6 +629,7 @@ func TestValidateTLSFieldOnTLSListener(t *testing.T) { } for _, test := range tests { t.Run(test.msg, func(t *testing.T) { + t.Parallel() g := NewWithT(t) cond, valid := validateTLSFieldOnTLSListener(test.listener) diff --git a/internal/mode/static/state/graph/gatewayclass_test.go b/internal/mode/static/state/graph/gatewayclass_test.go index 1b10997e4d..35e7f04764 100644 --- a/internal/mode/static/state/graph/gatewayclass_test.go +++ b/internal/mode/static/state/graph/gatewayclass_test.go @@ -19,6 +19,7 @@ import ( ) func TestProcessGatewayClasses(t *testing.T) { + t.Parallel() gcName := "test-gc" ctlrName := "test-ctlr" winner := &v1.GatewayClass{ @@ -114,6 +115,7 @@ func TestProcessGatewayClasses(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result, exists := processGatewayClasses(test.gcs, gcName, ctlrName) g.Expect(helpers.Diff(test.expected, result)).To(BeEmpty()) @@ -123,6 +125,7 @@ func TestProcessGatewayClasses(t *testing.T) { } func TestBuildGatewayClass(t *testing.T) { + t.Parallel() validGC := &v1.GatewayClass{} gcWithParams := &v1.GatewayClass{ @@ -288,6 +291,7 @@ func TestBuildGatewayClass(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) result := buildGatewayClass(test.gc, test.np, test.crdMetadata) diff --git a/internal/mode/static/state/graph/grpcroute_test.go b/internal/mode/static/state/graph/grpcroute_test.go index ed8e455853..7e8e8b4582 100644 --- a/internal/mode/static/state/graph/grpcroute_test.go +++ b/internal/mode/static/state/graph/grpcroute_test.go @@ -79,6 +79,7 @@ func createGRPCRoute( } func TestBuildGRPCRoutes(t *testing.T) { + t.Parallel() gwNsName := types.NamespacedName{Namespace: "test", Name: "gateway"} gr := createGRPCRoute("gr-1", gwNsName.Name, "example.com", []v1.GRPCRouteRule{}) @@ -137,6 +138,7 @@ func TestBuildGRPCRoutes(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) routes := buildRoutesForGateways( validator, @@ -151,6 +153,7 @@ func TestBuildGRPCRoutes(t *testing.T) { } func TestBuildGRPCRoute(t *testing.T) { + t.Parallel() gatewayNsName := types.NamespacedName{Namespace: "test", Name: "gateway"} methodMatchRule := createGRPCMethodMatch("myService", "myMethod", "Exact") @@ -685,6 +688,7 @@ func TestBuildGRPCRoute(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) route := buildGRPCRoute(test.validator, test.gr, gatewayNsNames, test.http2disabled) @@ -694,6 +698,7 @@ func TestBuildGRPCRoute(t *testing.T) { } func TestConvertGRPCMatches(t *testing.T) { + t.Parallel() methodMatch := createGRPCMethodMatch("myService", "myMethod", "Exact").Matches headersMatch := createGRPCHeadersMatch("Exact", "MyHeader", "SomeValue").Matches @@ -756,6 +761,7 @@ func TestConvertGRPCMatches(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) httpMatches := convertGRPCMatches(test.methodMatches) @@ -765,6 +771,7 @@ func TestConvertGRPCMatches(t *testing.T) { } func TestConvertGRPCFilters(t *testing.T) { + t.Parallel() grFilters := []v1.GRPCRouteFilter{ { Type: "RequestHeaderModifier", diff --git a/internal/mode/static/state/graph/httproute_test.go b/internal/mode/static/state/graph/httproute_test.go index 68d58a40d7..667e7b8338 100644 --- a/internal/mode/static/state/graph/httproute_test.go +++ b/internal/mode/static/state/graph/httproute_test.go @@ -87,6 +87,7 @@ func addFilterToPath(hr *gatewayv1.HTTPRoute, path string, filter gatewayv1.HTTP } func TestBuildHTTPRoutes(t *testing.T) { + t.Parallel() gwNsName := types.NamespacedName{Namespace: "test", Name: "gateway"} hr := createHTTPRoute("hr-1", gwNsName.Name, "example.com", "/") @@ -144,6 +145,7 @@ func TestBuildHTTPRoutes(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) routes := buildRoutesForGateways( validator, @@ -158,6 +160,7 @@ func TestBuildHTTPRoutes(t *testing.T) { } func TestBuildHTTPRoute(t *testing.T) { + t.Parallel() const ( invalidPath = "/invalid" invalidRedirectHostname = "invalid.example.com" @@ -580,6 +583,7 @@ func TestBuildHTTPRoute(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) route := buildHTTPRoute(test.validator, test.hr, gatewayNsNames) @@ -589,6 +593,7 @@ func TestBuildHTTPRoute(t *testing.T) { } func TestValidateMatch(t *testing.T) { + t.Parallel() createAllValidValidator := func() *validationfakes.FakeHTTPFieldsValidator { v := &validationfakes.FakeHTTPFieldsValidator{} v.ValidateMethodInMatchReturns(true, nil) @@ -844,6 +849,7 @@ func TestValidateMatch(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateMatch(test.validator, test.match, field.NewPath("test")) g.Expect(allErrs).To(HaveLen(test.expectErrCount)) @@ -852,6 +858,7 @@ func TestValidateMatch(t *testing.T) { } func TestValidateFilter(t *testing.T) { + t.Parallel() tests := []struct { filter gatewayv1.HTTPRouteFilter name string @@ -902,6 +909,7 @@ func TestValidateFilter(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateFilter(&validationfakes.FakeHTTPFieldsValidator{}, test.filter, filterPath) g.Expect(allErrs).To(HaveLen(test.expectErrCount)) @@ -910,6 +918,7 @@ func TestValidateFilter(t *testing.T) { } func TestValidateFilterRedirect(t *testing.T) { + t.Parallel() createAllValidValidator := func() *validationfakes.FakeHTTPFieldsValidator { v := &validationfakes.FakeHTTPFieldsValidator{} @@ -1030,6 +1039,7 @@ func TestValidateFilterRedirect(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateFilterRedirect(test.validator, test.requestRedirect, filterPath) @@ -1039,6 +1049,7 @@ func TestValidateFilterRedirect(t *testing.T) { } func TestValidateFilterRewrite(t *testing.T) { + t.Parallel() tests := []struct { urlRewrite *gatewayv1.HTTPURLRewriteFilter validator *validationfakes.FakeHTTPFieldsValidator @@ -1148,6 +1159,7 @@ func TestValidateFilterRewrite(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateFilterRewrite(test.validator, test.urlRewrite, filterPath) g.Expect(allErrs).To(HaveLen(test.expectErrCount)) diff --git a/internal/mode/static/state/graph/namespace_test.go b/internal/mode/static/state/graph/namespace_test.go index 8781fc6f8c..372fd3d12d 100644 --- a/internal/mode/static/state/graph/namespace_test.go +++ b/internal/mode/static/state/graph/namespace_test.go @@ -12,6 +12,7 @@ import ( ) func TestBuildReferencedNamespaces(t *testing.T) { + t.Parallel() ns1 := &v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: "ns1", @@ -170,6 +171,7 @@ func TestBuildReferencedNamespaces(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(buildReferencedNamespaces(clusterNamespaces, test.gw)).To(Equal(test.expectedRefNS)) }) @@ -177,6 +179,7 @@ func TestBuildReferencedNamespaces(t *testing.T) { } func TestIsNamespaceReferenced(t *testing.T) { + t.Parallel() tests := []struct { ns *v1.Namespace gw *Gateway @@ -213,6 +216,7 @@ func TestIsNamespaceReferenced(t *testing.T) { // Other test cases should be covered by testing of BuildReferencedNamespaces for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(isNamespaceReferenced(test.ns, test.gw)).To(Equal(test.exp)) }) diff --git a/internal/mode/static/state/graph/nginxproxy_test.go b/internal/mode/static/state/graph/nginxproxy_test.go index 8c9f236237..6d547a1cb8 100644 --- a/internal/mode/static/state/graph/nginxproxy_test.go +++ b/internal/mode/static/state/graph/nginxproxy_test.go @@ -16,6 +16,7 @@ import ( ) func TestGetNginxProxy(t *testing.T) { + t.Parallel() tests := []struct { nps map[types.NamespacedName]*ngfAPI.NginxProxy gc *v1.GatewayClass @@ -83,6 +84,7 @@ func TestGetNginxProxy(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(buildNginxProxy(test.nps, test.gc, &validationfakes.FakeGenericValidator{})).To(Equal(test.expNP)) @@ -91,6 +93,7 @@ func TestGetNginxProxy(t *testing.T) { } func TestIsNginxProxyReferenced(t *testing.T) { + t.Parallel() tests := []struct { gc *GatewayClass npName types.NamespacedName @@ -147,6 +150,7 @@ func TestIsNginxProxyReferenced(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(isNginxProxyReferenced(test.npName, test.gc)).To(Equal(test.expRes)) @@ -155,6 +159,7 @@ func TestIsNginxProxyReferenced(t *testing.T) { } func TestGCReferencesAnyNginxProxy(t *testing.T) { + t.Parallel() tests := []struct { gc *v1.GatewayClass name string @@ -215,6 +220,7 @@ func TestGCReferencesAnyNginxProxy(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(gcReferencesAnyNginxProxy(test.gc)).To(Equal(test.expRes)) @@ -243,6 +249,7 @@ func createInvalidValidator() *validationfakes.FakeGenericValidator { } func TestValidateNginxProxy(t *testing.T) { + t.Parallel() tests := []struct { np *ngfAPI.NginxProxy validator *validationfakes.FakeGenericValidator @@ -360,6 +367,7 @@ func TestValidateNginxProxy(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateNginxProxy(test.validator, test.np) @@ -372,6 +380,7 @@ func TestValidateNginxProxy(t *testing.T) { } func TestValidateRewriteClientIP(t *testing.T) { + t.Parallel() tests := []struct { np *ngfAPI.NginxProxy validator *validationfakes.FakeGenericValidator @@ -542,6 +551,7 @@ func TestValidateRewriteClientIP(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) allErrs := validateRewriteClientIP(test.np) diff --git a/internal/mode/static/state/graph/policies_test.go b/internal/mode/static/state/graph/policies_test.go index 494dd28866..499b7e8386 100644 --- a/internal/mode/static/state/graph/policies_test.go +++ b/internal/mode/static/state/graph/policies_test.go @@ -23,6 +23,7 @@ import ( var testNs = "test" func TestAttachPolicies(t *testing.T) { + t.Parallel() policyGVK := schema.GroupVersionKind{Group: "Group", Version: "Version", Kind: "Policy"} gwPolicyKey := createTestPolicyKey(policyGVK, "gw-policy") @@ -220,6 +221,7 @@ func TestAttachPolicies(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) test.graph.attachPolicies("nginx-gateway") @@ -229,6 +231,7 @@ func TestAttachPolicies(t *testing.T) { } func TestAttachPolicyToRoute(t *testing.T) { + t.Parallel() routeNsName := types.NamespacedName{Namespace: testNs, Name: "hr-route"} createRoute := func(routeType RouteType, valid, attachable, parentRefs bool) *L7Route { @@ -361,6 +364,7 @@ func TestAttachPolicyToRoute(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) attachPolicyToRoute(test.policy, test.route, "nginx-gateway") @@ -377,6 +381,7 @@ func TestAttachPolicyToRoute(t *testing.T) { } func TestAttachPolicyToGateway(t *testing.T) { + t.Parallel() gatewayNsName := types.NamespacedName{Namespace: testNs, Name: "gateway"} gateway2NsName := types.NamespacedName{Namespace: testNs, Name: "gateway2"} ignoredGatewayNsName := types.NamespacedName{Namespace: testNs, Name: "ignored"} @@ -525,6 +530,7 @@ func TestAttachPolicyToGateway(t *testing.T) { } t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) attachPolicyToGateway(test.policy, test.policy.TargetRefs[0], test.gw, ignoredGateways, "nginx-gateway") @@ -541,6 +547,7 @@ func TestAttachPolicyToGateway(t *testing.T) { } func TestProcessPolicies(t *testing.T) { + t.Parallel() policyGVK := schema.GroupVersionKind{Group: "Group", Version: "Version", Kind: "MyPolicy"} // These refs reference objects that belong to NGF. @@ -773,6 +780,7 @@ func TestProcessPolicies(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) processed := processPolicies(test.policies, test.validator, gateways, routes, nil) @@ -782,6 +790,7 @@ func TestProcessPolicies(t *testing.T) { } func TestProcessPolicies_RouteOverlap(t *testing.T) { + t.Parallel() hrRefCoffee := createTestRef(kinds.HTTPRoute, v1.GroupName, "hr-coffee") hrRefCoffeeTea := createTestRef(kinds.HTTPRoute, v1.GroupName, "hr-coffee-tea") @@ -911,6 +920,7 @@ func TestProcessPolicies_RouteOverlap(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) processed := processPolicies(test.policies, test.validator, gateways, test.routes, nil) @@ -925,6 +935,7 @@ func TestProcessPolicies_RouteOverlap(t *testing.T) { } func TestMarkConflictedPolicies(t *testing.T) { + t.Parallel() hrRef := createTestRef(kinds.HTTPRoute, v1.GroupName, "hr") hrTargetRef := PolicyTargetRef{ Kind: hrRef.Kind, @@ -1053,6 +1064,7 @@ func TestMarkConflictedPolicies(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) markConflictedPolicies(test.policies, test.fakeValidator) diff --git a/internal/mode/static/state/graph/policy_ancestor_test.go b/internal/mode/static/state/graph/policy_ancestor_test.go index 7b90a3b3a6..794caf6c2f 100644 --- a/internal/mode/static/state/graph/policy_ancestor_test.go +++ b/internal/mode/static/state/graph/policy_ancestor_test.go @@ -11,6 +11,7 @@ import ( ) func TestBackendTLSPolicyAncestorsFull(t *testing.T) { + t.Parallel() createCurStatus := func(numAncestors int, ctlrName string) []v1alpha2.PolicyAncestorStatus { statuses := make([]v1alpha2.PolicyAncestorStatus, 0, numAncestors) @@ -47,6 +48,7 @@ func TestBackendTLSPolicyAncestorsFull(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) full := backendTLSPolicyAncestorsFull(test.curStatus, "nginx-gateway") @@ -56,6 +58,7 @@ func TestBackendTLSPolicyAncestorsFull(t *testing.T) { } func TestNGFPolicyAncestorsFull(t *testing.T) { + t.Parallel() type ancestorConfig struct { numCurrNGFAncestors int numCurrNonNGFAncestors int @@ -157,6 +160,7 @@ func TestNGFPolicyAncestorsFull(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) policy := createPolicy(test.cfg) diff --git a/internal/mode/static/state/graph/secret_test.go b/internal/mode/static/state/graph/secret_test.go index 54ebc3ca8a..8c386b8528 100644 --- a/internal/mode/static/state/graph/secret_test.go +++ b/internal/mode/static/state/graph/secret_test.go @@ -67,6 +67,7 @@ cpLlHMAqbLJ8WYGJCkhiWxyal6hYTyWY4cVkC0xtTl/hUE9IeNKo ) func TestSecretResolver(t *testing.T) { + t.Parallel() var ( validSecret1 = &apiv1.Secret{ ObjectMeta: metav1.ObjectMeta{ diff --git a/internal/mode/static/state/graph/service_test.go b/internal/mode/static/state/graph/service_test.go index 3f233c84fd..5c60831a31 100644 --- a/internal/mode/static/state/graph/service_test.go +++ b/internal/mode/static/state/graph/service_test.go @@ -8,6 +8,7 @@ import ( ) func TestBuildReferencedServices(t *testing.T) { + t.Parallel() getNormalL7Route := func() *L7Route { return &L7Route{ ParentRefs: []ParentRef{ @@ -315,6 +316,7 @@ func TestBuildReferencedServices(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) g.Expect(buildReferencedServices(test.l7Routes, test.l4Routes)).To(Equal(test.exp)) }) diff --git a/internal/mode/static/state/graph/validation_test.go b/internal/mode/static/state/graph/validation_test.go index d364adcf8f..ad855a4006 100644 --- a/internal/mode/static/state/graph/validation_test.go +++ b/internal/mode/static/state/graph/validation_test.go @@ -7,6 +7,7 @@ import ( ) func TestValidateHostname(t *testing.T) { + t.Parallel() tests := []struct { name string hostname string @@ -41,6 +42,7 @@ func TestValidateHostname(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + t.Parallel() g := NewWithT(t) err := validateHostname(test.hostname) diff --git a/internal/mode/static/state/resolver/resolver_test.go b/internal/mode/static/state/resolver/resolver_test.go index adb87bb1ac..be4262e173 100644 --- a/internal/mode/static/state/resolver/resolver_test.go +++ b/internal/mode/static/state/resolver/resolver_test.go @@ -104,6 +104,7 @@ var ( ) func TestFilterEndpointSliceList(t *testing.T) { + t.Parallel() test := []struct { msg string sliceList discoveryV1.EndpointSliceList @@ -162,13 +163,18 @@ func TestFilterEndpointSliceList(t *testing.T) { } for _, tc := range test { - filteredSliceList := filterEndpointSliceList(tc.sliceList, svcPort, tc.allowedAddressType) - g := NewWithT(t) - g.Expect(filteredSliceList).To(Equal(tc.expList)) + t.Run(tc.msg, func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + + filteredSliceList := filterEndpointSliceList(tc.sliceList, svcPort, tc.allowedAddressType) + g.Expect(filteredSliceList).To(Equal(tc.expList)) + }) } } func TestGetDefaultPort(t *testing.T) { + t.Parallel() testcases := []struct { msg string svcPort v1.ServicePort @@ -199,13 +205,17 @@ func TestGetDefaultPort(t *testing.T) { }, } for _, tc := range testcases { - g := NewWithT(t) - port := getDefaultPort(tc.svcPort) - g.Expect(port).To(Equal(tc.expPort)) + t.Run(tc.msg, func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + port := getDefaultPort(tc.svcPort) + g.Expect(port).To(Equal(tc.expPort)) + }) } } func TestIgnoreEndpointSlice(t *testing.T) { + t.Parallel() var ( port4000 int32 = 4000 port8080 int32 = 8080 @@ -308,12 +318,16 @@ func TestIgnoreEndpointSlice(t *testing.T) { }, } for _, tc := range testcases { - g := NewWithT(t) - g.Expect(ignoreEndpointSlice(tc.slice, tc.servicePort, dualAddressType)).To(Equal(tc.ignore)) + t.Run(tc.msg, func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + g.Expect(ignoreEndpointSlice(tc.slice, tc.servicePort, dualAddressType)).To(Equal(tc.ignore)) + }) } } func TestEndpointReady(t *testing.T) { + t.Parallel() testcases := []struct { endpoint discoveryV1.Endpoint msg string @@ -348,12 +362,16 @@ func TestEndpointReady(t *testing.T) { }, } for _, tc := range testcases { - g := NewWithT(t) - g.Expect(endpointReady(tc.endpoint)).To(Equal(tc.ready)) + t.Run(tc.msg, func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + g.Expect(endpointReady(tc.endpoint)).To(Equal(tc.ready)) + }) } } func TestFindPort(t *testing.T) { + t.Parallel() testcases := []struct { msg string ports []discoveryV1.EndpointPort @@ -479,13 +497,17 @@ func TestFindPort(t *testing.T) { }, } for _, tc := range testcases { - g := NewWithT(t) - port := findPort(tc.ports, tc.svcPort) - g.Expect(port).To(Equal(tc.expPort)) + t.Run(tc.msg, func(t *testing.T) { + t.Parallel() + g := NewWithT(t) + port := findPort(tc.ports, tc.svcPort) + g.Expect(port).To(Equal(tc.expPort)) + }) } } func TestCalculateReadyEndpoints(t *testing.T) { + t.Parallel() g := NewWithT(t) slices := []discoveryV1.EndpointSlice{ diff --git a/internal/mode/static/state/resolver/service_resolver_suite_test.go b/internal/mode/static/state/resolver/service_resolver_suite_test.go index ba1f845a4b..618aef434e 100644 --- a/internal/mode/static/state/resolver/service_resolver_suite_test.go +++ b/internal/mode/static/state/resolver/service_resolver_suite_test.go @@ -8,6 +8,7 @@ import ( ) func TestServiceResolver(t *testing.T) { + t.Parallel() RegisterFailHandler(Fail) RunSpecs(t, "ServiceResolver Suite") } diff --git a/internal/mode/static/state/state_suite_test.go b/internal/mode/static/state/state_suite_test.go index 4431b60a8e..058b439dae 100644 --- a/internal/mode/static/state/state_suite_test.go +++ b/internal/mode/static/state/state_suite_test.go @@ -8,6 +8,7 @@ import ( ) func TestState(t *testing.T) { + t.Parallel() RegisterFailHandler(Fail) RunSpecs(t, "State Suite") } diff --git a/internal/mode/static/state/store_test.go b/internal/mode/static/state/store_test.go index b4184d3154..54e60264fa 100644 --- a/internal/mode/static/state/store_test.go +++ b/internal/mode/static/state/store_test.go @@ -9,7 +9,9 @@ import ( v1 "sigs.k8s.io/gateway-api/apis/v1" ) +//nolint:paralleltest,tparallel // Order matters for these tests. func TestSetChangeType(t *testing.T) { + t.Parallel() ctu := newChangeTrackingUpdater(nil, nil) // Order matters for these cases.