github.com/calmw/ethereum@v0.1.1/metrics/gauge_float64_test.go (about) 1 package metrics 2 3 import ( 4 "sync" 5 "testing" 6 ) 7 8 func BenchmarkGaugeFloat64(b *testing.B) { 9 g := NewGaugeFloat64() 10 b.ResetTimer() 11 for i := 0; i < b.N; i++ { 12 g.Update(float64(i)) 13 } 14 } 15 16 func BenchmarkGaugeFloat64Parallel(b *testing.B) { 17 c := NewGaugeFloat64() 18 var wg sync.WaitGroup 19 for i := 0; i < 10; i++ { 20 wg.Add(1) 21 go func() { 22 for i := 0; i < b.N; i++ { 23 c.Update(float64(i)) 24 } 25 wg.Done() 26 }() 27 } 28 wg.Wait() 29 if have, want := c.Value(), float64(b.N-1); have != want { 30 b.Fatalf("have %f want %f", have, want) 31 } 32 } 33 34 func TestGaugeFloat64(t *testing.T) { 35 g := NewGaugeFloat64() 36 g.Update(47.0) 37 if v := g.Value(); 47.0 != v { 38 t.Errorf("g.Value(): 47.0 != %v\n", v) 39 } 40 } 41 42 func TestGaugeFloat64Snapshot(t *testing.T) { 43 g := NewGaugeFloat64() 44 g.Update(47.0) 45 snapshot := g.Snapshot() 46 g.Update(float64(0)) 47 if v := snapshot.Value(); 47.0 != v { 48 t.Errorf("g.Value(): 47.0 != %v\n", v) 49 } 50 } 51 52 func TestGetOrRegisterGaugeFloat64(t *testing.T) { 53 r := NewRegistry() 54 NewRegisteredGaugeFloat64("foo", r).Update(47.0) 55 t.Logf("registry: %v", r) 56 if g := GetOrRegisterGaugeFloat64("foo", r); 47.0 != g.Value() { 57 t.Fatal(g) 58 } 59 } 60 61 func TestFunctionalGaugeFloat64(t *testing.T) { 62 var counter float64 63 fg := NewFunctionalGaugeFloat64(func() float64 { 64 counter++ 65 return counter 66 }) 67 fg.Value() 68 fg.Value() 69 if counter != 2 { 70 t.Error("counter != 2") 71 } 72 } 73 74 func TestGetOrRegisterFunctionalGaugeFloat64(t *testing.T) { 75 r := NewRegistry() 76 NewRegisteredFunctionalGaugeFloat64("foo", r, func() float64 { return 47 }) 77 if g := GetOrRegisterGaugeFloat64("foo", r); g.Value() != 47 { 78 t.Fatal(g) 79 } 80 }