mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 10:19:50 +00:00
fixup! Test workqueue metrics
This commit is contained in:
parent
74c50c0ad3
commit
44a87baf09
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user