From 44a87baf09aec4f2e8e159de4c409d27aebbb1da Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Sat, 10 Nov 2018 18:24:59 -0800 Subject: [PATCH] fixup! Test workqueue metrics --- .../k8s.io/client-go/util/workqueue/metrics.go | 16 +++++++++------- .../client-go/util/workqueue/metrics_test.go | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/staging/src/k8s.io/client-go/util/workqueue/metrics.go b/staging/src/k8s.io/client-go/util/workqueue/metrics.go index af224238a77..43c0ab5e9ef 100644 --- a/staging/src/k8s.io/client-go/util/workqueue/metrics.go +++ b/staging/src/k8s.io/client-go/util/workqueue/metrics.go @@ -64,6 +64,7 @@ func (noopMetric) Dec() {} func (noopMetric) Set(float64) {} func (noopMetric) Observe(float64) {} +// defaultQueueMetrics expects the caller to lock before setting any metrics. type defaultQueueMetrics struct { clock clock.Clock @@ -190,22 +191,23 @@ func (_ noopMetricsProvider) NewRetriesMetric(name string) CounterMetric { return noopMetric{} } -var globalMetricsFactory = metricsFactory{ +var globalMetricsFactory = queueMetricsFactory{ metricsProvider: noopMetricsProvider{}, } -type metricsFactory struct { +type queueMetricsFactory struct { metricsProvider MetricsProvider - setProviders sync.Once + + onlyOnce sync.Once } -func (f *metricsFactory) set(mp MetricsProvider) { - f.setProviders.Do(func() { +func (f *queueMetricsFactory) setProvider(mp MetricsProvider) { + f.onlyOnce.Do(func() { f.metricsProvider = mp }) } -func (f *metricsFactory) newQueueMetrics(name string, clock clock.Clock) queueMetrics { +func (f *queueMetricsFactory) newQueueMetrics(name string, clock clock.Clock) queueMetrics { mp := f.metricsProvider if len(name) == 0 || mp == (noopMetricsProvider{}) { return noMetrics{} @@ -235,5 +237,5 @@ func newRetryMetrics(name string) retryMetrics { // SetProvider sets the metrics provider for all subsequently created work // queues. Only the first call has an effect. func SetProvider(metricsProvider MetricsProvider) { - globalMetricsFactory.set(metricsProvider) + globalMetricsFactory.setProvider(metricsProvider) } diff --git a/staging/src/k8s.io/client-go/util/workqueue/metrics_test.go b/staging/src/k8s.io/client-go/util/workqueue/metrics_test.go index 64305acd599..065e2c40b12 100644 --- a/staging/src/k8s.io/client-go/util/workqueue/metrics_test.go +++ b/staging/src/k8s.io/client-go/util/workqueue/metrics_test.go @@ -124,7 +124,7 @@ func (m *testMetricsProvider) NewRetriesMetric(name string) CounterMetric { func TestSinceInMicroseconds(t *testing.T) { mp := testMetricsProvider{} c := clock.NewFakeClock(time.Now()) - mf := metricsFactory{metricsProvider: &mp} + mf := queueMetricsFactory{metricsProvider: &mp} m := mf.newQueueMetrics("test", c) dqm := m.(*defaultQueueMetrics) @@ -141,7 +141,7 @@ func TestMetrics(t *testing.T) { mp := testMetricsProvider{} t0 := time.Unix(0, 0) c := clock.NewFakeClock(t0) - mf := metricsFactory{metricsProvider: &mp} + mf := queueMetricsFactory{metricsProvider: &mp} m := mf.newQueueMetrics("test", c) q := newQueue(c, m, time.Millisecond) defer q.ShutDown()