package metrics import ( "fmt" "testing" ) func BenchmarkGuage(b *testing.B) { g := NewGauge() b.ResetTimer() for i := 0; i < b.N; i++ { g.Update(int64(i)) } } func TestGauge(t *testing.T) { g := NewGauge() g.Update(int64(47)) if v := g.Value(); 47 != v { t.Errorf("g.Value(): 47 != %v\n", v) } } func TestGaugeSnapshot(t *testing.T) { g := NewGauge() g.Update(int64(47)) snapshot := g.Snapshot() g.Update(int64(0)) if v := snapshot.Value(); 47 != v { t.Errorf("g.Value(): 47 != %v\n", v) } } func TestGetOrRegisterGauge(t *testing.T) { r := NewRegistry() NewRegisteredGauge("foo", r).Update(47) if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { t.Fatal(g) } } func TestFunctionalGauge(t *testing.T) { var counter int64 fg := NewFunctionalGauge(func() int64 { counter++ return counter }) fg.Value() fg.Value() if counter != 2 { t.Error("counter != 2") } } func TestGetOrRegisterFunctionalGauge(t *testing.T) { r := NewRegistry() NewRegisteredFunctionalGauge("foo", r, func() int64 { return 47 }) if g := GetOrRegisterGauge("foo", r); 47 != g.Value() { t.Fatal(g) } } func ExampleGetOrRegisterGauge() { m := "server.bytes_sent" g := GetOrRegisterGauge(m, nil) g.Update(47) fmt.Println(g.Value()) // Output: 47 }