diff --git a/internal/cmd/egctl/config_test.go b/internal/cmd/egctl/config_test.go index e7fb062f9d..7d54072538 100644 --- a/internal/cmd/egctl/config_test.go +++ b/internal/cmd/egctl/config_test.go @@ -29,6 +29,7 @@ import ( kube "github.com/envoyproxy/gateway/internal/kubernetes" "github.com/envoyproxy/gateway/internal/utils/file" netutil "github.com/envoyproxy/gateway/internal/utils/net" + "github.com/envoyproxy/gateway/internal/utils/test" ) const ( @@ -118,7 +119,7 @@ func TestExtractAllConfigDump(t *testing.T) { aggregated := sampleAggregatedConfigDump(configDump) got, err := marshalEnvoyProxyConfig(aggregated, tc.output) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(string(got), filepath.Join("testdata", "config", "out", tc.expected))) } out, err := readOutputConfig(tc.expected) @@ -206,7 +207,7 @@ func TestExtractSubResourcesConfigDump(t *testing.T) { aggregated := sampleAggregatedConfigDump(configDump) got, err := marshalEnvoyProxyConfig(aggregated, tc.output) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(string(got), filepath.Join("testdata", "config", "out", tc.expected))) } out, err := readOutputConfig(tc.expected) diff --git a/internal/cmd/egctl/translate_test.go b/internal/cmd/egctl/translate_test.go index 030ca31ac5..f7c401a9a0 100644 --- a/internal/cmd/egctl/translate_test.go +++ b/internal/cmd/egctl/translate_test.go @@ -25,10 +25,9 @@ import ( "github.com/envoyproxy/gateway/internal/gatewayapi/resource" "github.com/envoyproxy/gateway/internal/utils/field" "github.com/envoyproxy/gateway/internal/utils/file" + "github.com/envoyproxy/gateway/internal/utils/test" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - func TestTranslate(t *testing.T) { testCases := []struct { name string @@ -363,7 +362,7 @@ func TestTranslate(t *testing.T) { out, err = yaml.Marshal(got) require.NoError(t, err) } - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(string(out), filepath.Join("testdata", "translate", "out", fn))) } want := &TranslationResult{} diff --git a/internal/gatewayapi/resource/load_test.go b/internal/gatewayapi/resource/load_test.go index fcfbfe1cf9..3fe0083661 100644 --- a/internal/gatewayapi/resource/load_test.go +++ b/internal/gatewayapi/resource/load_test.go @@ -6,7 +6,6 @@ package resource import ( - "flag" "fmt" "os" "path/filepath" @@ -18,10 +17,9 @@ import ( "sigs.k8s.io/yaml" "github.com/envoyproxy/gateway/internal/utils/file" + "github.com/envoyproxy/gateway/internal/utils/test" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - func TestIterYAMLBytes(t *testing.T) { inputs := `test: foo1 --- @@ -53,7 +51,7 @@ func TestLoadAllSupportedResourcesFromYAMLBytes(t *testing.T) { got, err := LoadResourcesFromYAMLBytes(inFile, true) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { out, err := yaml.Marshal(got) require.NoError(t, err) require.NoError(t, file.Write(string(out), filepath.Join("testdata", "all-resources.out.yaml"))) diff --git a/internal/gatewayapi/translator_test.go b/internal/gatewayapi/translator_test.go index af8349df75..5193944295 100644 --- a/internal/gatewayapi/translator_test.go +++ b/internal/gatewayapi/translator_test.go @@ -10,7 +10,6 @@ import ( "context" "crypto/sha256" "encoding/hex" - "flag" "fmt" "os" "path/filepath" @@ -38,11 +37,10 @@ import ( "github.com/envoyproxy/gateway/internal/ir" "github.com/envoyproxy/gateway/internal/utils/field" "github.com/envoyproxy/gateway/internal/utils/file" + "github.com/envoyproxy/gateway/internal/utils/test" "github.com/envoyproxy/gateway/internal/wasm" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - func mustUnmarshal(t *testing.T, val []byte, out interface{}) { require.NoError(t, yaml.UnmarshalStrict(val, out, yaml.DisallowUnknownFields)) } @@ -326,7 +324,7 @@ func TestTranslate(t *testing.T) { out, err := yaml.Marshal(got) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { overrideOutputConfig(t, string(out), outputFilePath) } @@ -527,7 +525,7 @@ func TestTranslateWithExtensionKinds(t *testing.T) { out, err := yaml.Marshal(got) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(string(out), outputFilePath)) } diff --git a/internal/infrastructure/kubernetes/proxy/resource_provider_test.go b/internal/infrastructure/kubernetes/proxy/resource_provider_test.go index ea622b987e..0651a433af 100644 --- a/internal/infrastructure/kubernetes/proxy/resource_provider_test.go +++ b/internal/infrastructure/kubernetes/proxy/resource_provider_test.go @@ -6,7 +6,6 @@ package proxy import ( - "flag" "fmt" "os" "sort" @@ -30,10 +29,9 @@ import ( "github.com/envoyproxy/gateway/internal/envoygateway/config" "github.com/envoyproxy/gateway/internal/gatewayapi" "github.com/envoyproxy/gateway/internal/ir" + "github.com/envoyproxy/gateway/internal/utils/test" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - const ( // envoyHTTPPort is the container port number of Envoy's HTTP endpoint. envoyHTTPPort = int32(8080) @@ -634,7 +632,7 @@ func TestDeployment(t *testing.T) { dp, err := r.Deployment() require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { deploymentYAML, err := yaml.Marshal(dp) require.NoError(t, err) // nolint: gosec @@ -1072,7 +1070,7 @@ func TestDaemonSet(t *testing.T) { }) } - if *overrideTestData { + if test.OverrideTestData() { deploymentYAML, err := yaml.Marshal(ds) require.NoError(t, err) // nolint: gosec diff --git a/internal/infrastructure/kubernetes/ratelimit/resource_provider_test.go b/internal/infrastructure/kubernetes/ratelimit/resource_provider_test.go index a7bc1479e5..f6b9b3a914 100644 --- a/internal/infrastructure/kubernetes/ratelimit/resource_provider_test.go +++ b/internal/infrastructure/kubernetes/ratelimit/resource_provider_test.go @@ -6,7 +6,6 @@ package ratelimit import ( - "flag" "fmt" "os" "strconv" @@ -27,10 +26,9 @@ import ( egv1a1 "github.com/envoyproxy/gateway/api/v1alpha1" "github.com/envoyproxy/gateway/internal/envoygateway/config" + "github.com/envoyproxy/gateway/internal/utils/test" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - const ( // RedisAuthEnvVar is the redis auth. RedisAuthEnvVar = "REDIS_AUTH" @@ -200,7 +198,7 @@ func TestConfigmap(t *testing.T) { cm, err := r.ConfigMap("") require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { cmYAML, err := yaml.Marshal(cm) require.NoError(t, err) // nolint:gosec @@ -770,7 +768,7 @@ func TestDeployment(t *testing.T) { dp, err := r.Deployment() require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { deploymentYAML, err := yaml.Marshal(dp) require.NoError(t, err) // nolint:gosec @@ -886,7 +884,7 @@ func TestHorizontalPodAutoscaler(t *testing.T) { hpa, err := r.HorizontalPodAutoscaler() require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { hpaYAML, err := yaml.Marshal(hpa) require.NoError(t, err) // nolint:gosec diff --git a/internal/metrics/metrics_test.go b/internal/metrics/metrics_test.go index 55b682aff7..fcd05c37d4 100644 --- a/internal/metrics/metrics_test.go +++ b/internal/metrics/metrics_test.go @@ -10,7 +10,6 @@ import ( "context" "encoding/json" "errors" - "flag" "fmt" "io" "os" @@ -28,9 +27,9 @@ import ( "go.opentelemetry.io/otel/sdk/metric/metricdata" "go.opentelemetry.io/otel/sdk/resource" semconv "go.opentelemetry.io/otel/semconv/v1.17.0" -) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") + "github.com/envoyproxy/gateway/internal/utils/test" +) func TestCounter(t *testing.T) { name := "counter_metric" @@ -213,7 +212,7 @@ func newTestMetricsProvider(metricType string, writer io.Writer) (*metric.MeterP } func loadMetricsFile(t *testing.T, name string, reader io.Reader) { - if !*overrideTestData { + if !test.OverrideTestData() { fname := fmt.Sprintf("testdata/%s.json", name) // nolint:gosec @@ -229,7 +228,7 @@ func loadMetricsFile(t *testing.T, name string, reader io.Reader) { } func exporterWriter(name string, origin io.ReadWriter) (io.ReadWriter, error) { - if *overrideTestData { + if test.OverrideTestData() { fname := fmt.Sprintf("testdata/%s.json", name) // nolint:gosec diff --git a/internal/utils/merge_test.go b/internal/utils/merge_test.go index 690a331f9a..73f6a584c9 100644 --- a/internal/utils/merge_test.go +++ b/internal/utils/merge_test.go @@ -6,146 +6,63 @@ package utils import ( - "fmt" + "os" + "path/filepath" + "strings" "testing" "github.com/stretchr/testify/require" - "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/utils/ptr" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/yaml" egv1a1 "github.com/envoyproxy/gateway/api/v1alpha1" + "github.com/envoyproxy/gateway/internal/utils/test" ) func TestMergeBackendTrafficPolicy(t *testing.T) { - r := resource.MustParse("100m") + baseDir := "testdata" + caseFiles, err := filepath.Glob(filepath.Join(baseDir, "backendtrafficpolicy_*.in.yaml")) + require.NoError(t, err) - cases := []struct { - name string - original *egv1a1.BackendTrafficPolicy - patch *egv1a1.BackendTrafficPolicy + for _, caseFile := range caseFiles { + // get case name from path + caseName := strings.TrimPrefix(strings.TrimSuffix(caseFile, ".in.yaml"), baseDir+"/backendtrafficpolicy_") + t.Run(caseName, func(t *testing.T) { + for _, mergeType := range []egv1a1.MergeType{egv1a1.StrategicMerge, egv1a1.JSONMerge} { + patchedInput := strings.Replace(caseFile, ".in.yaml", ".patch.yaml", 1) + var output string + if mergeType == egv1a1.StrategicMerge { + output = strings.Replace(caseFile, ".in.yaml", ".strategicmerge.out.yaml", 1) + } else { + output = strings.Replace(caseFile, ".in.yaml", ".jsonmerge.out.yaml", 1) + } - expected *egv1a1.BackendTrafficPolicy - jsonMergeExpected *egv1a1.BackendTrafficPolicy - }{ - { - name: "merge", - original: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Connection: &egv1a1.BackendConnection{ - BufferLimit: &r, - }, - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](2), - }, - }, - HTTPUpgrade: []*egv1a1.ProtocolUpgradeConfig{ - { - Type: "original", - }, - }, - }, - }, - patch: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](3), - }, - }, - HTTPUpgrade: []*egv1a1.ProtocolUpgradeConfig{ - { - Type: "patched", - }, - }, - }, - }, - expected: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Connection: &egv1a1.BackendConnection{ - BufferLimit: &r, - }, - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](3), - }, - }, - HTTPUpgrade: []*egv1a1.ProtocolUpgradeConfig{ - { - Type: "patched", - }, - { - Type: "original", - }, - }, - }, - }, - jsonMergeExpected: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Connection: &egv1a1.BackendConnection{ - BufferLimit: &r, - }, - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](3), - }, - }, - HTTPUpgrade: []*egv1a1.ProtocolUpgradeConfig{ - { - Type: "patched", - }, - }, - }, - }, - }, - { - name: "override", - original: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](13), - }, - }, - }, - }, - patch: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](3), - }, - }, - }, - }, - expected: &egv1a1.BackendTrafficPolicy{ - Spec: egv1a1.BackendTrafficPolicySpec{ - ClusterSettings: egv1a1.ClusterSettings{ - Retry: &egv1a1.Retry{ - NumRetries: ptr.To[int32](3), - }, - }, - }, - }, - }, - } - for _, tc := range cases { - for _, mergeType := range []egv1a1.MergeType{egv1a1.StrategicMerge, egv1a1.JSONMerge} { - t.Run(fmt.Sprintf("%s/%s", mergeType, tc.name), func(t *testing.T) { - got, err := Merge[*egv1a1.BackendTrafficPolicy](tc.original, tc.patch, mergeType) + original := readObject[*egv1a1.BackendTrafficPolicy](t, caseFile) + patch := readObject[*egv1a1.BackendTrafficPolicy](t, patchedInput) + + got, err := Merge(original, patch, mergeType) require.NoError(t, err) - switch mergeType { - case egv1a1.StrategicMerge: - require.Equal(t, tc.expected, got) - case egv1a1.JSONMerge: - if tc.jsonMergeExpected != nil { - require.Equal(t, tc.jsonMergeExpected, got) - } else { - require.Equal(t, tc.expected, got) - } + if test.OverrideTestData() { + b, err := yaml.Marshal(got) + require.NoError(t, err) + require.NoError(t, os.WriteFile(output, b, 0o600)) + continue } - }) - } + + expected := readObject[*egv1a1.BackendTrafficPolicy](t, output) + require.Equal(t, expected, got) + } + }) } } + +func readObject[T client.Object](t *testing.T, path string) T { + t.Helper() + b, err := os.ReadFile(path) + require.NoError(t, err) + btp := new(T) + err = yaml.Unmarshal(b, btp) + require.NoError(t, err) + return *btp +} diff --git a/internal/utils/test/flags.go b/internal/utils/test/flags.go new file mode 100644 index 0000000000..95e261b253 --- /dev/null +++ b/internal/utils/test/flags.go @@ -0,0 +1,14 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package test + +import "flag" + +var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") + +func OverrideTestData() bool { + return *overrideTestData +} diff --git a/internal/utils/testdata/backendtrafficpolicy_httpupgrade.in.yaml b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.in.yaml new file mode 100644 index 0000000000..20af7411b0 --- /dev/null +++ b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.in.yaml @@ -0,0 +1,13 @@ +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: BackendTrafficPolicy +metadata: + name: original +spec: + timeout: + tcp: + connectTimeout: 15s + http: + connectionIdleTimeout: 16s + maxConnectionDuration: 17s + httpUpgrade: + - type: websocket diff --git a/internal/utils/testdata/backendtrafficpolicy_httpupgrade.jsonmerge.out.yaml b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.jsonmerge.out.yaml new file mode 100644 index 0000000000..b9f7db73e2 --- /dev/null +++ b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.jsonmerge.out.yaml @@ -0,0 +1,18 @@ +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: BackendTrafficPolicy +metadata: + creationTimestamp: null + name: patched +spec: + connection: + bufferLimit: 100M + httpUpgrade: + - type: websocket + timeout: + http: + connectionIdleTimeout: 16s + maxConnectionDuration: 17s + tcp: + connectTimeout: 15s +status: + ancestors: null diff --git a/internal/utils/testdata/backendtrafficpolicy_httpupgrade.patch.yaml b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.patch.yaml new file mode 100644 index 0000000000..364d73ce0f --- /dev/null +++ b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.patch.yaml @@ -0,0 +1,12 @@ +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: BackendTrafficPolicy +metadata: + name: patched +spec: + timeout: + tcp: + connectTimeout: 15s + connection: + bufferLimit: 100M + httpUpgrade: + - type: "websocket" diff --git a/internal/utils/testdata/backendtrafficpolicy_httpupgrade.strategicmerge.out.yaml b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.strategicmerge.out.yaml new file mode 100644 index 0000000000..b9f7db73e2 --- /dev/null +++ b/internal/utils/testdata/backendtrafficpolicy_httpupgrade.strategicmerge.out.yaml @@ -0,0 +1,18 @@ +apiVersion: gateway.envoyproxy.io/v1alpha1 +kind: BackendTrafficPolicy +metadata: + creationTimestamp: null + name: patched +spec: + connection: + bufferLimit: 100M + httpUpgrade: + - type: websocket + timeout: + http: + connectionIdleTimeout: 16s + maxConnectionDuration: 17s + tcp: + connectTimeout: 15s +status: + ancestors: null diff --git a/internal/xds/bootstrap/bootstrap_test.go b/internal/xds/bootstrap/bootstrap_test.go index 70216bb41f..4ef244fd55 100644 --- a/internal/xds/bootstrap/bootstrap_test.go +++ b/internal/xds/bootstrap/bootstrap_test.go @@ -17,6 +17,7 @@ import ( gwapiv1 "sigs.k8s.io/gateway-api/apis/v1" egv1a1 "github.com/envoyproxy/gateway/api/v1alpha1" + "github.com/envoyproxy/gateway/internal/utils/test" ) func TestGetRenderedBootstrapConfig(t *testing.T) { @@ -187,7 +188,7 @@ func TestGetRenderedBootstrapConfig(t *testing.T) { got, err := GetRenderedBootstrapConfig(tc.opts) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { // nolint:gosec err = os.WriteFile(path.Join("testdata", "render", fmt.Sprintf("%s.yaml", tc.name)), []byte(got), 0o644) require.NoError(t, err) diff --git a/internal/xds/bootstrap/util_test.go b/internal/xds/bootstrap/util_test.go index b5cacb7afd..d105456a56 100644 --- a/internal/xds/bootstrap/util_test.go +++ b/internal/xds/bootstrap/util_test.go @@ -6,7 +6,6 @@ package bootstrap import ( - "flag" "fmt" "os" "path" @@ -17,10 +16,9 @@ import ( "sigs.k8s.io/yaml" egv1a1 "github.com/envoyproxy/gateway/api/v1alpha1" + "github.com/envoyproxy/gateway/internal/utils/test" ) -var overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") - func TestApplyBootstrapConfig(t *testing.T) { str, _ := readTestData("enable-prometheus") cases := []struct { @@ -74,7 +72,7 @@ func TestApplyBootstrapConfig(t *testing.T) { data, err := ApplyBootstrapConfig(tc.boostrapConfig, tc.defaultBootstrap) require.NoError(t, err) - if *overrideTestData { + if test.OverrideTestData() { // nolint:gosec err = os.WriteFile(path.Join("testdata", "merge", fmt.Sprintf("%s.out.yaml", tc.name)), []byte(data), 0o644) require.NoError(t, err) diff --git a/internal/xds/translator/listener_ready_test.go b/internal/xds/translator/listener_ready_test.go index ec522ad7bb..70935476e9 100644 --- a/internal/xds/translator/listener_ready_test.go +++ b/internal/xds/translator/listener_ready_test.go @@ -18,6 +18,7 @@ import ( egv1a1 "github.com/envoyproxy/gateway/api/v1alpha1" "github.com/envoyproxy/gateway/internal/ir" "github.com/envoyproxy/gateway/internal/utils/proto" + "github.com/envoyproxy/gateway/internal/utils/test" ) func TestBuildReadyListener(t *testing.T) { @@ -61,7 +62,7 @@ func TestBuildReadyListener(t *testing.T) { t.Errorf("unexpected error: %v", err) } - if *overrideTestData { + if test.OverrideTestData() { data, err := proto.ToYAML(got) require.NoError(t, err) err = os.WriteFile(path.Join("testdata", "readylistener", tc.name+".yaml"), data, 0o600) diff --git a/internal/xds/translator/translator_test.go b/internal/xds/translator/translator_test.go index 3dd4edae9d..5aefb9b37f 100644 --- a/internal/xds/translator/translator_test.go +++ b/internal/xds/translator/translator_test.go @@ -7,7 +7,6 @@ package translator import ( "embed" - "flag" "path/filepath" "runtime" "sort" @@ -30,6 +29,7 @@ import ( "github.com/envoyproxy/gateway/internal/ir" "github.com/envoyproxy/gateway/internal/utils/field" "github.com/envoyproxy/gateway/internal/utils/file" + "github.com/envoyproxy/gateway/internal/utils/test" xtypes "github.com/envoyproxy/gateway/internal/xds/types" "github.com/envoyproxy/gateway/internal/xds/utils" ) @@ -39,8 +39,6 @@ var ( outFiles embed.FS //go:embed testdata/in/* inFiles embed.FS - - overrideTestData = flag.Bool("override-testdata", false, "if override the test output data.") ) type testFileConfig struct { @@ -178,7 +176,7 @@ func TestTranslateXds(t *testing.T) { routes := tCtx.XdsResources[resourcev3.RouteType] clusters := tCtx.XdsResources[resourcev3.ClusterType] endpoints := tCtx.XdsResources[resourcev3.EndpointType] - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(requireResourcesToYAMLString(t, listeners), filepath.Join("testdata", "out", "xds-ir", inputFileName+".listeners.yaml"))) require.NoError(t, file.Write(requireResourcesToYAMLString(t, routes), filepath.Join("testdata", "out", "xds-ir", inputFileName+".routes.yaml"))) require.NoError(t, file.Write(requireResourcesToYAMLString(t, clusters), filepath.Join("testdata", "out", "xds-ir", inputFileName+".clusters.yaml"))) @@ -191,7 +189,7 @@ func TestTranslateXds(t *testing.T) { secrets, ok := tCtx.XdsResources[resourcev3.SecretType] if ok && len(secrets) > 0 { - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(requireResourcesToYAMLString(t, secrets), filepath.Join("testdata", "out", "xds-ir", inputFileName+".secrets.yaml"))) } require.Equal(t, requireTestDataOutFile(t, "xds-ir", inputFileName+".secrets.yaml"), requireResourcesToYAMLString(t, secrets)) @@ -202,7 +200,7 @@ func TestTranslateXds(t *testing.T) { for _, e := range got { require.NoError(t, field.SetValue(e, "LastTransitionTime", metav1.NewTime(time.Time{}))) } - if *overrideTestData { + if test.OverrideTestData() { out, err := yaml.Marshal(got) require.NoError(t, err) require.NoError(t, file.Write(string(out), filepath.Join("testdata", "out", "xds-ir", inputFileName+".envoypatchpolicies.yaml"))) @@ -231,7 +229,7 @@ func TestTranslateRateLimitConfig(t *testing.T) { // Call BuildRateLimitServiceConfig with the list of listeners configs := BuildRateLimitServiceConfig(listeners) - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(requireRateLimitConfigsToYAMLString(t, configs), filepath.Join("testdata", "out", "ratelimit-config", inputFileName+".yaml"))) } require.Equal(t, requireTestDataOutFile(t, "ratelimit-config", inputFileName+".yaml"), requireRateLimitConfigsToYAMLString(t, configs)) @@ -317,7 +315,7 @@ func TestTranslateXdsWithExtensionErrorsWhenFailOpen(t *testing.T) { routes := tCtx.XdsResources[resourcev3.RouteType] clusters := tCtx.XdsResources[resourcev3.ClusterType] endpoints := tCtx.XdsResources[resourcev3.EndpointType] - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(requireResourcesToYAMLString(t, listeners), filepath.Join("testdata", "out", "extension-xds-ir", inputFileName+".listeners.yaml"))) require.NoError(t, file.Write(requireResourcesToYAMLString(t, routes), filepath.Join("testdata", "out", "extension-xds-ir", inputFileName+".routes.yaml"))) require.NoError(t, file.Write(requireResourcesToYAMLString(t, clusters), filepath.Join("testdata", "out", "extension-xds-ir", inputFileName+".clusters.yaml"))) @@ -330,7 +328,7 @@ func TestTranslateXdsWithExtensionErrorsWhenFailOpen(t *testing.T) { secrets, ok := tCtx.XdsResources[resourcev3.SecretType] if ok { - if *overrideTestData { + if test.OverrideTestData() { require.NoError(t, file.Write(requireResourcesToYAMLString(t, secrets), filepath.Join("testdata", "out", "extension-xds-ir", inputFileName+".secrets.yaml"))) } require.Equal(t, requireTestDataOutFile(t, "extension-xds-ir", inputFileName+".secrets.yaml"), requireResourcesToYAMLString(t, secrets)) diff --git a/tools/make/golang.mk b/tools/make/golang.mk index 2518df6605..50a1825275 100644 --- a/tools/make/golang.mk +++ b/tools/make/golang.mk @@ -56,6 +56,7 @@ go.test.unit: ## Run go unit tests .PHONY: go.testdata.complete go.testdata.complete: ## Override test ouputdata @$(LOG_TARGET) + go test -timeout 30s github.com/envoyproxy/gateway/internal/utils --override-testdata=true go test -timeout 30s github.com/envoyproxy/gateway/internal/xds/translator --override-testdata=true go test -timeout 30s github.com/envoyproxy/gateway/internal/cmd/egctl --override-testdata=true go test -timeout 30s github.com/envoyproxy/gateway/internal/infrastructure/kubernetes/ratelimit --override-testdata=true