func TestHistogramRotate(t *testing.T) { defer TestingSetNow(nil)() setNow(0) h := NewHistogram(histWrapNum*time.Second, 1000+10*histWrapNum, 3) var cur time.Duration for i := 0; i < 3*histWrapNum; i++ { v := int64(10 * i) h.RecordValue(v) cur += time.Second setNow(cur) cur := h.Current() // When i == histWrapNum-1, we expect the entry from i==0 to move out // of the window (since we rotated for the histWrapNum'th time). expMin := int64((1 + i - (histWrapNum - 1)) * 10) if expMin < 0 { expMin = 0 } if min := cur.Min(); min != expMin { t.Fatalf("%d: unexpected minimum %d, expected %d", i, min, expMin) } if max, expMax := cur.Max(), v; max != expMax { t.Fatalf("%d: unexpected maximum %d, expected %d", i, max, expMax) } } }