Skip to content

Commit 23bbe94

Browse files
committed
test: metrics can expire
1 parent 423420b commit 23bbe94

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

coderd/prometheusmetrics/aggregator_test.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ func TestUpdateMetrics_MetricsDoNotExpire(t *testing.T) {
2727

2828
// given
2929
registry := prometheus.NewRegistry()
30-
metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(slogtest.Make(t, &slogtest.Options{
31-
IgnoreErrors: true,
32-
}), registry, time.Hour) // time.Hour, so metrics won't expire
30+
metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}), registry, time.Hour) // time.Hour, so metrics won't expire
3331
require.NoError(t, err)
3432

3533
ctx, cancelFunc := context.WithCancel(context.Background())
@@ -105,3 +103,40 @@ func verifyCollectedMetrics(t *testing.T, expected []agentsdk.AgentMetric, actua
105103
}
106104
return true
107105
}
106+
107+
func TestUpdateMetrics_MetricsExpire(t *testing.T) {
108+
t.Parallel()
109+
110+
// given
111+
registry := prometheus.NewRegistry()
112+
metricsAggregator, err := prometheusmetrics.NewMetricsAggregator(slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}), registry, time.Millisecond)
113+
require.NoError(t, err)
114+
115+
ctx, cancelFunc := context.WithCancel(context.Background())
116+
t.Cleanup(cancelFunc)
117+
118+
closeFunc := metricsAggregator.Run(ctx)
119+
t.Cleanup(closeFunc)
120+
121+
given := []agentsdk.AgentMetric{
122+
{Name: "a_counter_one", Type: agentsdk.AgentMetricTypeCounter, Value: 1},
123+
}
124+
125+
// when
126+
metricsAggregator.Update(ctx, testUsername, testWorkspaceName, testAgentName, given)
127+
128+
time.Sleep(time.Millisecond * 10) // Ensure that metric is expired
129+
130+
// then
131+
require.Eventually(t, func() bool {
132+
var actual []prometheus.Metric
133+
metricsCh := make(chan prometheus.Metric)
134+
go func() {
135+
for m := range metricsCh {
136+
actual = append(actual, m)
137+
}
138+
}()
139+
metricsAggregator.Collect(metricsCh)
140+
return len(actual) == 0
141+
}, testutil.WaitShort, testutil.IntervalFast)
142+
}

0 commit comments

Comments
 (0)