@@ -74,51 +74,13 @@ func TestAveragerObserve(t *testing.T) {
74
74
t .Errorf ("AvgSince() returned error: %v" , err )
75
75
}
76
76
77
- // test EMA
78
- start = time .Now ()
79
- emaResult , err := a .EMA (ctx , WithEMAPeriod (time .Minute ))
80
- emaLatency := time .Since (start )
81
- t .Logf ("EMA latency: %v" , emaLatency )
82
- if err != nil {
83
- t .Errorf ("EMA() returned error: %v" , err )
84
- }
85
-
86
- // EMA should be closer to recent values, so it should be higher than the average
87
- if emaResult <= avgResult {
88
- t .Errorf ("EMA() = %f; expected to be greater than AvgSince() = %f" , emaResult , avgResult )
89
- }
90
-
91
77
t .Logf ("AvgSince result: %f" , avgResult )
92
- t .Logf ("EMA result: %f" , emaResult )
93
78
94
79
expectedAvg := 250.5 // (1 + 500) / 2
95
80
if avgResult != expectedAvg {
96
81
t .Errorf ("AvgSince() = %f; want %f" , avgResult , expectedAvg )
97
82
}
98
83
99
- // test EMA with different time ranges
100
- testRanges := []struct {
101
- name string
102
- duration time.Duration
103
- }{
104
- {"Last 1 minute" , time .Minute },
105
- {"Last 5 minutes" , 5 * time .Minute },
106
- {"Last 10 minutes" , 10 * time .Minute },
107
- }
108
-
109
- for _ , tr := range testRanges {
110
- since := now .Add (- tr .duration )
111
- emaResult , err := a .EMA (ctx , WithEMAPeriod (time .Minute ), WithSince (since ))
112
- if err != nil {
113
- t .Errorf ("EMA() for %s returned error: %v" , tr .name , err )
114
- }
115
- avgResult , err := a .Avg (ctx , WithSince (since ))
116
- if err != nil {
117
- t .Errorf ("AvgSince() for %s returned error: %v" , tr .name , err )
118
- }
119
- t .Logf ("%s - AvgSince: %f, EMA: %f" , tr .name , avgResult , emaResult )
120
- }
121
-
122
84
allMetrics , err := a .Read (ctx )
123
85
if err != nil {
124
86
t .Errorf ("All() returned error: %v" , err )
@@ -234,141 +196,6 @@ func TestEmptyAverager(t *testing.T) {
234
196
}
235
197
}
236
198
237
- func TestContinuousAveragerRead (t * testing.T ) {
238
- dbRW , dbRO , cleanup := sqlite .OpenTestDB (t )
239
- defer cleanup ()
240
-
241
- ctx , cancel := context .WithCancel (context .Background ())
242
- defer cancel ()
243
-
244
- if err := metrics_state .CreateTableMetrics (ctx , dbRW , "test_table" ); err != nil {
245
- t .Fatalf ("failed to create table: %v" , err )
246
- }
247
-
248
- createTime := func (minutes int ) time.Time {
249
- return time .Date (2025 , 1 , 1 , 0 , minutes , 0 , 0 , time .UTC )
250
- }
251
-
252
- tests := []struct {
253
- name string
254
- setup func () * continuousAverager
255
- since time.Time
256
- expected float64
257
- }{
258
- {
259
- name : "empty averager" ,
260
- setup : func () * continuousAverager {
261
- return NewAverager (dbRW , dbRO , "test_table" , "empty averager" ).(* continuousAverager )
262
- },
263
- since : time.Time {},
264
- expected : 0.0 ,
265
- },
266
- {
267
- name : "all values" ,
268
- setup : func () * continuousAverager {
269
- a := NewAverager (dbRW , dbRO , "test_table" , "all values" ).(* continuousAverager )
270
- if err := a .Observe (ctx , 1.0 , WithCurrentTime (createTime (1 ))); err != nil {
271
- t .Fatalf ("Observe(1.0) returned error: %v" , err )
272
- }
273
- if err := a .Observe (ctx , 2.0 , WithCurrentTime (createTime (2 ))); err != nil {
274
- t .Fatalf ("Observe(2.0) returned error: %v" , err )
275
- }
276
- if err := a .Observe (ctx , 3.0 , WithCurrentTime (createTime (3 ))); err != nil {
277
- t .Fatalf ("Observe(3.0) returned error: %v" , err )
278
- }
279
- return a
280
- },
281
- since : time.Time {},
282
- expected : 2.0 ,
283
- },
284
- {
285
- name : "since middle" ,
286
- setup : func () * continuousAverager {
287
- a := NewAverager (dbRW , dbRO , "test_table" , "since middle" ).(* continuousAverager )
288
- if err := a .Observe (ctx , 1.0 , WithCurrentTime (createTime (1 ))); err != nil {
289
- t .Fatalf ("Observe(1.0) returned error: %v" , err )
290
- }
291
- if err := a .Observe (ctx , 2.0 , WithCurrentTime (createTime (2 ))); err != nil {
292
- t .Fatalf ("Observe(2.0) returned error: %v" , err )
293
- }
294
- if err := a .Observe (ctx , 3.0 , WithCurrentTime (createTime (3 ))); err != nil {
295
- t .Fatalf ("Observe(3.0) returned error: %v" , err )
296
- }
297
- if err := a .Observe (ctx , 4.0 , WithCurrentTime (createTime (4 ))); err != nil {
298
- t .Fatalf ("Observe(4.0) returned error: %v" , err )
299
- }
300
- return a
301
- },
302
- since : createTime (2 ),
303
- expected : 3.0 ,
304
- },
305
- {
306
- name : "since before all values" ,
307
- setup : func () * continuousAverager {
308
- a := NewAverager (dbRW , dbRO , "test_table" , "since before all values" ).(* continuousAverager )
309
- if err := a .Observe (ctx , 1.0 , WithCurrentTime (createTime (2 ))); err != nil {
310
- t .Fatalf ("Observe(1.0) returned error: %v" , err )
311
- }
312
- if err := a .Observe (ctx , 2.0 , WithCurrentTime (createTime (3 ))); err != nil {
313
- t .Fatalf ("Observe(2.0) returned error: %v" , err )
314
- }
315
- return a
316
- },
317
- since : createTime (1 ),
318
- expected : 1.5 ,
319
- },
320
- {
321
- name : "since after all values" ,
322
- setup : func () * continuousAverager {
323
- a := NewAverager (dbRW , dbRO , "test_table" , "since after all values" ).(* continuousAverager )
324
- if err := a .Observe (ctx , 1.0 , WithCurrentTime (createTime (1 ))); err != nil {
325
- t .Fatalf ("Observe(1.0) returned error: %v" , err )
326
- }
327
- if err := a .Observe (ctx , 2.0 , WithCurrentTime (createTime (2 ))); err != nil {
328
- t .Fatalf ("Observe(2.0) returned error: %v" , err )
329
- }
330
- return a
331
- },
332
- since : createTime (3 ),
333
- expected : 0.0 ,
334
- },
335
- {
336
- name : "wrapped buffer" ,
337
- setup : func () * continuousAverager {
338
- a := NewAverager (dbRW , dbRO , "test_table" , "wrapped buffer" ).(* continuousAverager )
339
- if err := a .Observe (ctx , 1.0 , WithCurrentTime (createTime (1 ))); err != nil {
340
- t .Fatalf ("Observe(1.0) returned error: %v" , err )
341
- }
342
- if err := a .Observe (ctx , 2.0 , WithCurrentTime (createTime (2 ))); err != nil {
343
- t .Fatalf ("Observe(2.0) returned error: %v" , err )
344
- }
345
- if err := a .Observe (ctx , 3.0 , WithCurrentTime (createTime (3 ))); err != nil {
346
- t .Fatalf ("Observe(3.0) returned error: %v" , err )
347
- }
348
- if err := a .Observe (ctx , 4.0 , WithCurrentTime (createTime (4 ))); err != nil {
349
- t .Fatalf ("Observe(4.0) returned error: %v" , err )
350
- }
351
- return a
352
- },
353
- since : createTime (2 ),
354
- expected : 3.0 ,
355
- },
356
- }
357
-
358
- for _ , tt := range tests {
359
- t .Run (tt .name , func (t * testing.T ) {
360
- a := tt .setup ()
361
- result , err := a .Avg (ctx , WithSince (tt .since ))
362
- if err != nil {
363
- t .Errorf ("Read() returned error: %v" , err )
364
- }
365
- if result != tt .expected {
366
- t .Errorf ("Read() = %v, want %v" , result , tt .expected )
367
- }
368
- })
369
- }
370
- }
371
-
372
199
func TestNoOpAverager (t * testing.T ) {
373
200
t .Parallel ()
374
201
@@ -432,24 +259,6 @@ func TestNoOpAverager(t *testing.T) {
432
259
t .Errorf ("Avg() with options returned %f, want 0" , avg )
433
260
}
434
261
435
- // Test EMA - should return zero and nil error
436
- ema , err := a .EMA (ctx )
437
- if err != nil {
438
- t .Errorf ("EMA() returned error: %v" , err )
439
- }
440
- if ema != 0 {
441
- t .Errorf ("EMA() returned %f, want 0" , ema )
442
- }
443
-
444
- // Test EMA with options - should still return zero and nil error
445
- ema , err = a .EMA (ctx , WithSince (time .Now ()), WithEMAPeriod (time .Minute ))
446
- if err != nil {
447
- t .Errorf ("EMA() with options returned error: %v" , err )
448
- }
449
- if ema != 0 {
450
- t .Errorf ("EMA() with options returned %f, want 0" , ema )
451
- }
452
-
453
262
// Test Read - should return empty metrics and nil error
454
263
metrics , err := a .Read (ctx )
455
264
if err != nil {
0 commit comments