From e0ebd44ec8830b88afdf150df314847930e3a4ff Mon Sep 17 00:00:00 2001 From: yongruilin Date: Thu, 24 Oct 2024 13:53:43 -0700 Subject: [PATCH] feat(metrics): Add method to reset label allow lists Adds a new method `ResetLabelAllowLists` to various metric types, allowing for the reset of label allow lists. This is intended specifically for use in testing scenarios. --- staging/src/k8s.io/component-base/metrics/counter.go | 8 ++++++++ staging/src/k8s.io/component-base/metrics/gauge.go | 8 ++++++++ staging/src/k8s.io/component-base/metrics/histogram.go | 8 ++++++++ staging/src/k8s.io/component-base/metrics/summary.go | 8 ++++++++ .../src/k8s.io/component-base/metrics/timing_histogram.go | 8 ++++++++ 5 files changed, 40 insertions(+) diff --git a/staging/src/k8s.io/component-base/metrics/counter.go b/staging/src/k8s.io/component-base/metrics/counter.go index 974b762f91f..5f0243205bd 100644 --- a/staging/src/k8s.io/component-base/metrics/counter.go +++ b/staging/src/k8s.io/component-base/metrics/counter.go @@ -18,6 +18,7 @@ package metrics import ( "context" + "sync" "github.com/blang/semver/v4" "github.com/prometheus/client_golang/prometheus" @@ -249,6 +250,13 @@ func (v *CounterVec) Reset() { v.CounterVec.Reset() } +// ResetLabelAllowLists resets the label allow list for the CounterVec. +// NOTE: This should only be used in test. +func (v *CounterVec) ResetLabelAllowLists() { + v.initializeLabelAllowListsOnce = sync.Once{} + v.LabelValueAllowLists = nil +} + // WithContext returns wrapped CounterVec with context func (v *CounterVec) WithContext(ctx context.Context) *CounterVecWithContext { return &CounterVecWithContext{ diff --git a/staging/src/k8s.io/component-base/metrics/gauge.go b/staging/src/k8s.io/component-base/metrics/gauge.go index ac33897f708..0621560d0cf 100644 --- a/staging/src/k8s.io/component-base/metrics/gauge.go +++ b/staging/src/k8s.io/component-base/metrics/gauge.go @@ -18,6 +18,7 @@ package metrics import ( "context" + "sync" "github.com/blang/semver/v4" "github.com/prometheus/client_golang/prometheus" @@ -239,6 +240,13 @@ func (v *GaugeVec) Reset() { v.GaugeVec.Reset() } +// ResetLabelAllowLists resets the label allow list for the GaugeVec. +// NOTE: This should only be used in test. +func (v *GaugeVec) ResetLabelAllowLists() { + v.initializeLabelAllowListsOnce = sync.Once{} + v.LabelValueAllowLists = nil +} + func newGaugeFunc(opts *GaugeOpts, function func() float64, v semver.Version) GaugeFunc { g := NewGauge(opts) diff --git a/staging/src/k8s.io/component-base/metrics/histogram.go b/staging/src/k8s.io/component-base/metrics/histogram.go index 2ffbe3192bc..8c65e0dab4a 100644 --- a/staging/src/k8s.io/component-base/metrics/histogram.go +++ b/staging/src/k8s.io/component-base/metrics/histogram.go @@ -18,6 +18,7 @@ package metrics import ( "context" + "sync" "github.com/blang/semver/v4" "github.com/prometheus/client_golang/prometheus" @@ -202,6 +203,13 @@ func (v *HistogramVec) Reset() { v.HistogramVec.Reset() } +// ResetLabelAllowLists resets the label allow list for the HistogramVec. +// NOTE: This should only be used in test. +func (v *HistogramVec) ResetLabelAllowLists() { + v.initializeLabelAllowListsOnce = sync.Once{} + v.LabelValueAllowLists = nil +} + // WithContext returns wrapped HistogramVec with context func (v *HistogramVec) WithContext(ctx context.Context) *HistogramVecWithContext { return &HistogramVecWithContext{ diff --git a/staging/src/k8s.io/component-base/metrics/summary.go b/staging/src/k8s.io/component-base/metrics/summary.go index 57b60338372..f1af1217589 100644 --- a/staging/src/k8s.io/component-base/metrics/summary.go +++ b/staging/src/k8s.io/component-base/metrics/summary.go @@ -18,6 +18,7 @@ package metrics import ( "context" + "sync" "github.com/blang/semver/v4" "github.com/prometheus/client_golang/prometheus" @@ -214,6 +215,13 @@ func (v *SummaryVec) Reset() { v.SummaryVec.Reset() } +// ResetLabelAllowLists resets the label allow list for the SummaryVec. +// NOTE: This should only be used in test. +func (v *SummaryVec) ResetLabelAllowLists() { + v.initializeLabelAllowListsOnce = sync.Once{} + v.LabelValueAllowLists = nil +} + // WithContext returns wrapped SummaryVec with context func (v *SummaryVec) WithContext(ctx context.Context) *SummaryVecWithContext { return &SummaryVecWithContext{ diff --git a/staging/src/k8s.io/component-base/metrics/timing_histogram.go b/staging/src/k8s.io/component-base/metrics/timing_histogram.go index 08751ecbb2b..4fc75747395 100644 --- a/staging/src/k8s.io/component-base/metrics/timing_histogram.go +++ b/staging/src/k8s.io/component-base/metrics/timing_histogram.go @@ -18,6 +18,7 @@ package metrics import ( "context" + "sync" "time" "github.com/blang/semver/v4" @@ -267,6 +268,13 @@ func (v *TimingHistogramVec) Reset() { v.TimingHistogramVec.Reset() } +// ResetLabelAllowLists resets the label allow list for the TimingHistogramVec. +// NOTE: This should only be used in test. +func (v *TimingHistogramVec) ResetLabelAllowLists() { + v.initializeLabelAllowListsOnce = sync.Once{} + v.LabelValueAllowLists = nil +} + // WithContext returns wrapped TimingHistogramVec with context func (v *TimingHistogramVec) InterfaceWithContext(ctx context.Context) GaugeVecMetric { return &TimingHistogramVecWithContext{