github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/metrics/gauge_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:41</date> 10 //</624342648789929984> 11 12 package metrics 13 14 import ( 15 "fmt" 16 "testing" 17 ) 18 19 func BenchmarkGuage(b *testing.B) { 20 g := NewGauge() 21 b.ResetTimer() 22 for i := 0; i < b.N; i++ { 23 g.Update(int64(i)) 24 } 25 } 26 27 func TestGauge(t *testing.T) { 28 g := NewGauge() 29 g.Update(int64(47)) 30 if v := g.Value(); 47 != v { 31 t.Errorf("g.Value(): 47 != %v\n", v) 32 } 33 } 34 35 func TestGaugeSnapshot(t *testing.T) { 36 g := NewGauge() 37 g.Update(int64(47)) 38 snapshot := g.Snapshot() 39 g.Update(int64(0)) 40 if v := snapshot.Value(); 47 != v { 41 t.Errorf("g.Value(): 47 != %v\n", v) 42 } 43 } 44 45 func TestGetOrRegisterGauge(t *testing.T) { 46 r := NewRegistry() 47 NewRegisteredGauge("foo", r).Update(47) 48 if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { 49 t.Fatal(g) 50 } 51 } 52 53 func TestFunctionalGauge(t *testing.T) { 54 var counter int64 55 fg := NewFunctionalGauge(func() int64 { 56 counter++ 57 return counter 58 }) 59 fg.Value() 60 fg.Value() 61 if counter != 2 { 62 t.Error("counter != 2") 63 } 64 } 65 66 func TestGetOrRegisterFunctionalGauge(t *testing.T) { 67 r := NewRegistry() 68 NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 }) 69 if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { 70 t.Fatal(g) 71 } 72 } 73 74 func ExampleGetOrRegisterGauge() { 75 m := "server.bytes_sent" 76 g := GetOrRegisterGauge(m, nil) 77 g.Update(47) 78 fmt.Println(g.Value()) //产量:47 79 } 80