timer_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package metrics
  2. import (
  3. "math"
  4. "testing"
  5. "time"
  6. )
  7. func BenchmarkTimer(b *testing.B) {
  8. tm := NewTimer()
  9. b.ResetTimer()
  10. for i := 0; i < b.N; i++ {
  11. tm.Update(1)
  12. }
  13. }
  14. func TestGetOrRegisterTimer(t *testing.T) {
  15. r := NewRegistry()
  16. NewRegisteredTimer("foo", r).Update(47)
  17. if tm := GetOrRegisterTimer("foo", r); 1 != tm.Count() {
  18. t.Fatal(tm)
  19. }
  20. }
  21. func TestTimerExtremes(t *testing.T) {
  22. tm := NewTimer()
  23. tm.Update(math.MaxInt64)
  24. tm.Update(0)
  25. if stdDev := tm.StdDev(); 4.611686018427388e+18 != stdDev {
  26. t.Errorf("tm.StdDev(): 4.611686018427388e+18 != %v\n", stdDev)
  27. }
  28. }
  29. func TestTimerFunc(t *testing.T) {
  30. tm := NewTimer()
  31. tm.Time(func() { time.Sleep(50e6) })
  32. if max := tm.Max(); 45e6 > max || max > 55e6 {
  33. t.Errorf("tm.Max(): 45e6 > %v || %v > 55e6\n", max, max)
  34. }
  35. }
  36. func TestTimerZero(t *testing.T) {
  37. tm := NewTimer()
  38. if count := tm.Count(); 0 != count {
  39. t.Errorf("tm.Count(): 0 != %v\n", count)
  40. }
  41. if min := tm.Min(); 0 != min {
  42. t.Errorf("tm.Min(): 0 != %v\n", min)
  43. }
  44. if max := tm.Max(); 0 != max {
  45. t.Errorf("tm.Max(): 0 != %v\n", max)
  46. }
  47. if mean := tm.Mean(); 0.0 != mean {
  48. t.Errorf("tm.Mean(): 0.0 != %v\n", mean)
  49. }
  50. if stdDev := tm.StdDev(); 0.0 != stdDev {
  51. t.Errorf("tm.StdDev(): 0.0 != %v\n", stdDev)
  52. }
  53. ps := tm.Percentiles([]float64{0.5, 0.75, 0.99})
  54. if 0.0 != ps[0] {
  55. t.Errorf("median: 0.0 != %v\n", ps[0])
  56. }
  57. if 0.0 != ps[1] {
  58. t.Errorf("75th percentile: 0.0 != %v\n", ps[1])
  59. }
  60. if 0.0 != ps[2] {
  61. t.Errorf("99th percentile: 0.0 != %v\n", ps[2])
  62. }
  63. if rate1 := tm.Rate1(); 0.0 != rate1 {
  64. t.Errorf("tm.Rate1(): 0.0 != %v\n", rate1)
  65. }
  66. if rate5 := tm.Rate5(); 0.0 != rate5 {
  67. t.Errorf("tm.Rate5(): 0.0 != %v\n", rate5)
  68. }
  69. if rate15 := tm.Rate15(); 0.0 != rate15 {
  70. t.Errorf("tm.Rate15(): 0.0 != %v\n", rate15)
  71. }
  72. if rateMean := tm.RateMean(); 0.0 != rateMean {
  73. t.Errorf("tm.RateMean(): 0.0 != %v\n", rateMean)
  74. }
  75. }