github.com/sj-piano/go-ethereum@v1.9.7/metrics/gauge_test.go (about) 1 package metrics 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 func BenchmarkGuage(b *testing.B) { 9 g := NewGauge() 10 b.ResetTimer() 11 for i := 0; i < b.N; i++ { 12 g.Update(int64(i)) 13 } 14 } 15 16 func TestGauge(t *testing.T) { 17 g := NewGauge() 18 g.Update(int64(47)) 19 if v := g.Value(); 47 != v { 20 t.Errorf("g.Value(): 47 != %v\n", v) 21 } 22 } 23 24 func TestGaugeSnapshot(t *testing.T) { 25 g := NewGauge() 26 g.Update(int64(47)) 27 snapshot := g.Snapshot() 28 g.Update(int64(0)) 29 if v := snapshot.Value(); 47 != v { 30 t.Errorf("g.Value(): 47 != %v\n", v) 31 } 32 } 33 34 func TestGetOrRegisterGauge(t *testing.T) { 35 r := NewRegistry() 36 NewRegisteredGauge("foo", r).Update(47) 37 if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { 38 t.Fatal(g) 39 } 40 } 41 42 func TestFunctionalGauge(t *testing.T) { 43 var counter int64 44 fg := NewFunctionalGauge(func() int64 { 45 counter++ 46 return counter 47 }) 48 fg.Value() 49 fg.Value() 50 if counter != 2 { 51 t.Error("counter != 2") 52 } 53 } 54 55 func TestGetOrRegisterFunctionalGauge(t *testing.T) { 56 r := NewRegistry() 57 NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 }) 58 if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { 59 t.Fatal(g) 60 } 61 } 62 63 func ExampleGetOrRegisterGauge() { 64 m := "server.bytes_sent" 65 g := GetOrRegisterGauge(m, nil) 66 g.Update(47) 67 fmt.Println(g.Value()) // Output: 47 68 }