github.com/ethereum/go-ethereum@v1.16.1/metrics/counter_float_64_test.go (about) 1 package metrics 2 3 import ( 4 "sync" 5 "testing" 6 ) 7 8 func BenchmarkCounterFloat64(b *testing.B) { 9 c := NewCounterFloat64() 10 b.ResetTimer() 11 for i := 0; i < b.N; i++ { 12 c.Inc(1.0) 13 } 14 } 15 16 func BenchmarkCounterFloat64Parallel(b *testing.B) { 17 c := NewCounterFloat64() 18 b.ResetTimer() 19 var wg sync.WaitGroup 20 for i := 0; i < 10; i++ { 21 wg.Add(1) 22 go func() { 23 for i := 0; i < b.N; i++ { 24 c.Inc(1.0) 25 } 26 wg.Done() 27 }() 28 } 29 wg.Wait() 30 if have, want := c.Snapshot().Count(), 10.0*float64(b.N); have != want { 31 b.Fatalf("have %f want %f", have, want) 32 } 33 } 34 35 func TestCounterFloat64(t *testing.T) { 36 c := NewCounterFloat64() 37 if count := c.Snapshot().Count(); count != 0 { 38 t.Errorf("wrong count: %v", count) 39 } 40 c.Dec(1.0) 41 if count := c.Snapshot().Count(); count != -1.0 { 42 t.Errorf("wrong count: %v", count) 43 } 44 snapshot := c.Snapshot() 45 c.Dec(2.0) 46 if count := c.Snapshot().Count(); count != -3.0 { 47 t.Errorf("wrong count: %v", count) 48 } 49 c.Inc(1.0) 50 if count := c.Snapshot().Count(); count != -2.0 { 51 t.Errorf("wrong count: %v", count) 52 } 53 c.Inc(2.0) 54 if count := c.Snapshot().Count(); count != 0.0 { 55 t.Errorf("wrong count: %v", count) 56 } 57 if count := snapshot.Count(); count != -1.0 { 58 t.Errorf("snapshot count wrong: %v", count) 59 } 60 c.Inc(1.0) 61 c.Clear() 62 if count := c.Snapshot().Count(); count != 0.0 { 63 t.Errorf("wrong count: %v", count) 64 } 65 } 66 67 func TestGetOrRegisterCounterFloat64(t *testing.T) { 68 r := NewRegistry() 69 NewRegisteredCounterFloat64("foo", r).Inc(47.0) 70 if c := GetOrRegisterCounterFloat64("foo", r).Snapshot(); c.Count() != 47.0 { 71 t.Fatal(c) 72 } 73 }