github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/kbfs/ldbutils/count_meter_test.go (about) 1 package ldbutils 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestCountMeter(t *testing.T) { 10 m := NewCountMeter() 11 // Shutdown the meter so we manually control its ticks. 12 m.Shutdown() 13 14 var count1 float64 15 var count5 float64 16 var count15 float64 17 var countMean float64 18 19 for i := 0; i < 100; i++ { 20 count1 = 0 21 if i > 4 { 22 count5 -= float64(((i - 5) * 4) + 10) 23 } 24 if i > 14 { 25 count15 -= float64(((i - 15) * 4) + 10) 26 } 27 f := float64((i * 4) + 10) 28 count1 += f 29 count5 += f 30 count15 += f 31 countMean += f 32 for j := 1; j < 5; j++ { 33 m.Mark(int64(i + j)) 34 } 35 s := m.Snapshot() 36 require.Equal(t, count1, m.Rate1(), "Invalid Rate1 for i=%d", i) 37 require.Equal(t, count5, m.Rate5(), "Invalid Rate5 for i=%d", i) 38 require.Equal(t, count15, m.Rate15(), "Invalid Rate15 for i=%d", i) 39 require.Equal(t, countMean, m.RateMean(), "Invalid RateMean for i=%d", i) 40 require.Equal(t, int64(countMean), m.Count(), "Invalid Count for i=%d", i) 41 require.Equal(t, s.Rate1(), m.Rate1()) 42 require.Equal(t, s.Rate5(), m.Rate5()) 43 require.Equal(t, s.Rate15(), m.Rate15()) 44 require.Equal(t, s.RateMean(), m.RateMean()) 45 require.Equal(t, s.Count(), m.Count()) 46 m.tick() 47 } 48 }