gauge_test.go 1.2 KB

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