mirror of
https://github.com/go-kit/kit.git
synced 2025-07-15 01:04:44 +02:00
59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package metrics_test
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
"github.com/go-kit/kit/metrics"
|
|
"github.com/go-kit/kit/metrics/generic"
|
|
)
|
|
|
|
func TestTimerFast(t *testing.T) {
|
|
h := generic.NewSimpleHistogram()
|
|
metrics.NewTimer(h).ObserveDuration()
|
|
|
|
tolerance := 0.050
|
|
if want, have := 0.000, h.ApproximateMovingAverage(); math.Abs(want-have) > tolerance {
|
|
t.Errorf("want %.3f, have %.3f", want, have)
|
|
}
|
|
}
|
|
|
|
func TestTimerSlow(t *testing.T) {
|
|
h := generic.NewSimpleHistogram()
|
|
timer := metrics.NewTimer(h)
|
|
time.Sleep(250 * time.Millisecond)
|
|
timer.ObserveDuration()
|
|
|
|
tolerance := 0.050
|
|
if want, have := 0.250, h.ApproximateMovingAverage(); math.Abs(want-have) > tolerance {
|
|
t.Errorf("want %.3f, have %.3f", want, have)
|
|
}
|
|
}
|
|
|
|
func TestTimerUnit(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
unit time.Duration
|
|
tolerance float64
|
|
want float64
|
|
}{
|
|
{"Seconds", time.Second, 0.010, 0.100},
|
|
{"Milliseconds", time.Millisecond, 10, 100},
|
|
{"Nanoseconds", time.Nanosecond, 10000000, 100000000},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
h := generic.NewSimpleHistogram()
|
|
timer := metrics.NewTimer(h)
|
|
time.Sleep(100 * time.Millisecond)
|
|
timer.Unit(tc.unit)
|
|
timer.ObserveDuration()
|
|
|
|
if want, have := tc.want, h.ApproximateMovingAverage(); math.Abs(want-have) > tc.tolerance {
|
|
t.Errorf("want %.3f, have %.3f", want, have)
|
|
}
|
|
})
|
|
}
|
|
}
|