Pārlūkot izejas kodu

metrics: improve TestTimerFunc (#20818)

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.
Martin Holst Swende 5 gadi atpakaļ
vecāks
revīzija
32d31c31af
1 mainītis faili ar 17 papildinājumiem un 4 dzēšanām
  1. 17 4
      metrics/timer_test.go

+ 17 - 4
metrics/timer_test.go

@@ -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)
 	}
 }