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) 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)
}

View File

@ -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()