@@ -27,9 +27,7 @@ func TestUpdateMetrics_MetricsDoNotExpire(t *testing.T) {
27
27
28
28
// given
29
29
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
33
31
require .NoError (t , err )
34
32
35
33
ctx , cancelFunc := context .WithCancel (context .Background ())
@@ -105,3 +103,40 @@ func verifyCollectedMetrics(t *testing.T, expected []agentsdk.AgentMetric, actua
105
103
}
106
104
return true
107
105
}
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