Skip to content

Commit

Permalink
metrics: improve TestTimerFunc (#20818)
Browse files Browse the repository at this point in the history
The test failed due to what appears to be fluctuations in time.Sleep, which is
not the actual method under test. This change modifies it so we compare the
metered Max to the actual time instead of the desired time.
  • Loading branch information
holiman authored Mar 31, 2020
1 parent 3b69c14 commit 32d31c3
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions metrics/timer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,23 @@ func TestTimerStop(t *testing.T) {
}

func TestTimerFunc(t *testing.T) {
tm := NewTimer()
tm.Time(func() { time.Sleep(50e6) })
if max := tm.Max(); 35e6 > max || max > 145e6 {
t.Errorf("tm.Max(): 35e6 > %v || %v > 145e6\n", max, max)
var (
tm = NewTimer()
testStart = time.Now()
actualTime time.Duration
)
tm.Time(func() {
time.Sleep(50 * time.Millisecond)
actualTime = time.Since(testStart)
})
var (
drift = time.Millisecond * 2
measured = time.Duration(tm.Max())
ceil = actualTime + drift
floor = actualTime - drift
)
if measured > ceil || measured < floor {
t.Errorf("tm.Max(): %v > %v || %v > %v\n", measured, ceil, measured, floor)
}
}

Expand Down

0 comments on commit 32d31c3

Please sign in to comment.