From 618e37f2e7050ee94d964c6abd3186b25de69f2a Mon Sep 17 00:00:00 2001 From: salonichf5 <146118978+salonichf5@users.noreply.github.com> Date: Wed, 4 Dec 2024 12:31:43 -0800 Subject: [PATCH] Enable and update endpoint for telemetry for longevity tests (#2824) Enable and update endpoint for telemetry for longevity tests Problem: Users want to get telemetry reports when running longevity tests to simulate a live environment. Solution: To provide live telemetry reports when running longevity tests, we have enabled telemetry for the test when label is longevity and updated the workflow that creates the binary for release to update the TELEMETRY_ENDPOINT to the dev endpoint. --- .github/workflows/ci.yml | 2 +- tests/framework/ngf.go | 16 ++++++++++++++-- tests/suite/system_suite_test.go | 6 ++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d390ca2c42..1292261572 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,7 +180,7 @@ jobs: AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }} AZURE_BUCKET_NAME: ${{ secrets.AZURE_BUCKET_NAME }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_COMMUNITY }} - TELEMETRY_ENDPOINT: oss.edge.df.f5.com:443 + TELEMETRY_ENDPOINT: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-') && 'oss-dev.edge.df.f5.com:443' || 'oss.edge.df.f5.com:443' }} TELEMETRY_ENDPOINT_INSECURE: "false" - name: Cache Artifacts diff --git a/tests/framework/ngf.go b/tests/framework/ngf.go index 6c3008d882..f19ea751b7 100644 --- a/tests/framework/ngf.go +++ b/tests/framework/ngf.go @@ -35,6 +35,7 @@ type InstallationConfig struct { ServiceType string IsGKEInternalLB bool Plus bool + Telemetry bool } // InstallGatewayAPI installs the specified version of the Gateway API resources. @@ -70,7 +71,6 @@ func InstallNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) { "--create-namespace", "--namespace", cfg.Namespace, "--wait", - "--set", "nginxGateway.productTelemetry.enable=false", "--set", "nginxGateway.snippetsFilters.enable=true", } if cfg.ChartVersion != "" { @@ -78,6 +78,7 @@ func InstallNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) { } args = append(args, setImageArgs(cfg)...) + args = append(args, setTelemetryArgs(cfg)...) fullArgs := append(args, extraArgs...) //nolint:gocritic GinkgoWriter.Printf("Installing NGF with command: helm %v\n", strings.Join(fullArgs, " ")) @@ -136,7 +137,6 @@ func UpgradeNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) { cfg.ChartPath, "--namespace", cfg.Namespace, "--wait", - "--set", "nginxGateway.productTelemetry.enable=false", "--set", "nginxGateway.config.logging.level=debug", "--set", "nginxGateway.snippetsFilter.enable=true", } @@ -145,6 +145,7 @@ func UpgradeNGF(cfg InstallationConfig, extraArgs ...string) ([]byte, error) { } args = append(args, setImageArgs(cfg)...) + args = append(args, setTelemetryArgs(cfg)...) fullArgs := append(args, extraArgs...) //nolint:gocritic GinkgoWriter.Printf("Upgrading NGF with command: helm %v\n", strings.Join(fullArgs, " ")) @@ -188,6 +189,17 @@ func UninstallNGF(cfg InstallationConfig, k8sClient client.Client) ([]byte, erro return nil, nil } +func setTelemetryArgs(cfg InstallationConfig) []string { + var args []string + + if cfg.Telemetry { + args = append(args, formatValueSet("nginxGateway.productTelemetry.enable", "true")...) + } else { + args = append(args, formatValueSet("nginxGateway.productTelemetry.enable", "false")...) + } + return args +} + func setImageArgs(cfg InstallationConfig) []string { var args []string diff --git a/tests/suite/system_suite_test.go b/tests/suite/system_suite_test.go index 7c51bc8e97..f4bce1b1b9 100644 --- a/tests/suite/system_suite_test.go +++ b/tests/suite/system_suite_test.go @@ -99,6 +99,7 @@ type setupConfig struct { deploy bool nfr bool debugLogLevel bool + telemetry bool } func setup(cfg setupConfig, extraInstallArgs ...string) { @@ -151,6 +152,10 @@ func setup(cfg setupConfig, extraInstallArgs ...string) { Skip("Graceful Recovery test must be run on Kind") } + if clusterInfo.IsGKE && strings.Contains(GinkgoLabelFilter(), "longevity") { + cfg.telemetry = true + } + switch { case *versionUnderTest != "": version = *versionUnderTest @@ -196,6 +201,7 @@ func createNGFInstallConfig(cfg setupConfig, extraInstallArgs ...string) framewo ServiceType: *serviceType, IsGKEInternalLB: *isGKEInternalLB, Plus: *plusEnabled, + Telemetry: cfg.telemetry, } // if we aren't installing from the public charts, then set the custom images