+++ /dev/null
-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)
- }
- })
- }
-}