github.com/ethereum/go-ethereum@v1.16.1/metrics/counter_test.go (about) 1 package metrics 2 3 import "testing" 4 5 func BenchmarkCounter(b *testing.B) { 6 c := NewCounter() 7 b.ResetTimer() 8 for i := 0; i < b.N; i++ { 9 c.Inc(1) 10 } 11 } 12 13 func TestCounterClear(t *testing.T) { 14 c := NewCounter() 15 c.Inc(1) 16 c.Clear() 17 if count := c.Snapshot().Count(); count != 0 { 18 t.Errorf("c.Count(): 0 != %v\n", count) 19 } 20 } 21 22 func TestCounter(t *testing.T) { 23 c := NewCounter() 24 if count := c.Snapshot().Count(); count != 0 { 25 t.Errorf("wrong count: %v", count) 26 } 27 c.Dec(1) 28 if count := c.Snapshot().Count(); count != -1 { 29 t.Errorf("wrong count: %v", count) 30 } 31 c.Dec(2) 32 if count := c.Snapshot().Count(); count != -3 { 33 t.Errorf("wrong count: %v", count) 34 } 35 c.Inc(1) 36 if count := c.Snapshot().Count(); count != -2 { 37 t.Errorf("wrong count: %v", count) 38 } 39 c.Inc(2) 40 if count := c.Snapshot().Count(); count != 0 { 41 t.Errorf("wrong count: %v", count) 42 } 43 } 44 45 func TestCounterSnapshot(t *testing.T) { 46 c := NewCounter() 47 c.Inc(1) 48 snapshot := c.Snapshot() 49 c.Inc(1) 50 if count := snapshot.Count(); count != 1 { 51 t.Errorf("c.Count(): 1 != %v\n", count) 52 } 53 } 54 55 func TestGetOrRegisterCounter(t *testing.T) { 56 r := NewRegistry() 57 NewRegisteredCounter("foo", r).Inc(47) 58 if c := GetOrRegisterCounter("foo", r).Snapshot(); c.Count() != 47 { 59 t.Fatal(c) 60 } 61 }