fixup! Test workqueue metrics

This commit is contained in:
Daniel Smith 2018-11-10 18:24:59 -08:00
parent 74c50c0ad3
commit 44a87baf09
2 changed files with 11 additions and 9 deletions

View File

@ -64,6 +64,7 @@ func (noopMetric) Dec() {}
func (noopMetric) Set(float64) {} func (noopMetric) Set(float64) {}
func (noopMetric) Observe(float64) {} func (noopMetric) Observe(float64) {}
// defaultQueueMetrics expects the caller to lock before setting any metrics.
type defaultQueueMetrics struct { type defaultQueueMetrics struct {
clock clock.Clock clock clock.Clock
@ -190,22 +191,23 @@ func (_ noopMetricsProvider) NewRetriesMetric(name string) CounterMetric {
return noopMetric{} return noopMetric{}
} }
var globalMetricsFactory = metricsFactory{ var globalMetricsFactory = queueMetricsFactory{
metricsProvider: noopMetricsProvider{}, metricsProvider: noopMetricsProvider{},
} }
type metricsFactory struct { type queueMetricsFactory struct {
metricsProvider MetricsProvider metricsProvider MetricsProvider
setProviders sync.Once
onlyOnce sync.Once
} }
func (f *metricsFactory) set(mp MetricsProvider) { func (f *queueMetricsFactory) setProvider(mp MetricsProvider) {
f.setProviders.Do(func() { f.onlyOnce.Do(func() {
f.metricsProvider = mp 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 mp := f.metricsProvider
if len(name) == 0 || mp == (noopMetricsProvider{}) { if len(name) == 0 || mp == (noopMetricsProvider{}) {
return noMetrics{} return noMetrics{}
@ -235,5 +237,5 @@ func newRetryMetrics(name string) retryMetrics {
// SetProvider sets the metrics provider for all subsequently created work // SetProvider sets the metrics provider for all subsequently created work
// queues. Only the first call has an effect. // queues. Only the first call has an effect.
func SetProvider(metricsProvider MetricsProvider) { func SetProvider(metricsProvider MetricsProvider) {
globalMetricsFactory.set(metricsProvider) globalMetricsFactory.setProvider(metricsProvider)
} }

View File

@ -124,7 +124,7 @@ func (m *testMetricsProvider) NewRetriesMetric(name string) CounterMetric {
func TestSinceInMicroseconds(t *testing.T) { func TestSinceInMicroseconds(t *testing.T) {
mp := testMetricsProvider{} mp := testMetricsProvider{}
c := clock.NewFakeClock(time.Now()) c := clock.NewFakeClock(time.Now())
mf := metricsFactory{metricsProvider: &mp} mf := queueMetricsFactory{metricsProvider: &mp}
m := mf.newQueueMetrics("test", c) m := mf.newQueueMetrics("test", c)
dqm := m.(*defaultQueueMetrics) dqm := m.(*defaultQueueMetrics)
@ -141,7 +141,7 @@ func TestMetrics(t *testing.T) {
mp := testMetricsProvider{} mp := testMetricsProvider{}
t0 := time.Unix(0, 0) t0 := time.Unix(0, 0)
c := clock.NewFakeClock(t0) c := clock.NewFakeClock(t0)
mf := metricsFactory{metricsProvider: &mp} mf := queueMetricsFactory{metricsProvider: &mp}
m := mf.newQueueMetrics("test", c) m := mf.newQueueMetrics("test", c)
q := newQueue(c, m, time.Millisecond) q := newQueue(c, m, time.Millisecond)
defer q.ShutDown() defer q.ShutDown()