From 247cd175fe9745bba93bb59bb951602a52f42496 Mon Sep 17 00:00:00 2001 From: Kenneth Jenkins <51246568+kenjenkins@users.noreply.github.com> Date: Wed, 18 Dec 2024 13:21:06 -0800 Subject: [PATCH] metrics: restore global registry in unit tests (#5399) Currently there appears to be a test order dependency between a couple of the info_test.go test cases and the Test_PrometheusHandler test. This can be exposed by running: go test -count 2 ./internal/telemetry/metrics The test cases in info_test.go overwrite the global 'registry' variable, which seems to prevent Test_PrometheusHandler from being able to export the internal Go metrics. Add a helper method to restore the original registry after these test cases. --- internal/telemetry/metrics/info_test.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/internal/telemetry/metrics/info_test.go b/internal/telemetry/metrics/info_test.go index 005904ec7..c9392038a 100644 --- a/internal/telemetry/metrics/info_test.go +++ b/internal/telemetry/metrics/info_test.go @@ -65,7 +65,7 @@ func Test_SetDBConfigInfo(t *testing.T) { } func Test_SetBuildInfo(t *testing.T) { - registry = newMetricRegistry() + initTemporaryMetricsRegistry(t) version.Version = "v0.0.1" version.GitCommit = "deadbeef" @@ -84,7 +84,7 @@ func Test_SetBuildInfo(t *testing.T) { } func Test_AddPolicyCountCallback(t *testing.T) { - registry = newMetricRegistry() + initTemporaryMetricsRegistry(t) wantValue := int64(42) wantLabels := []metricdata.LabelValue{ @@ -106,3 +106,9 @@ func Test_RegisterInfoMetrics(t *testing.T) { t.Error("Did not find enough registries") } } + +func initTemporaryMetricsRegistry(t *testing.T) { + original := registry + registry = newMetricRegistry() + t.Cleanup(func() { registry = original }) +}