timer_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 TestTimerExtremes(t *testing.T) {
  15. tm := NewTimer()
  16. tm.Update(math.MaxInt64)
  17. tm.Update(0)
  18. if stdDev := tm.StdDev(); 6.521908912666392e18 != stdDev {
  19. t.Errorf("tm.StdDev(): 6.521908912666392e18 != %v\n", stdDev)
  20. }
  21. }
  22. func TestTimerFunc(t *testing.T) {
  23. tm := NewTimer()
  24. tm.Time(func() { time.Sleep(50e6) })
  25. if max := tm.Max(); 45e6 > max || max > 55e6 {
  26. t.Errorf("tm.Max(): 45e6 > %v || %v > 55e6\n", max, max)
  27. }
  28. }
  29. func TestTimerZero(t *testing.T) {
  30. tm := NewTimer()
  31. if count := tm.Count(); 0 != count {
  32. t.Errorf("tm.Count(): 0 != %v\n", count)
  33. }
  34. if min := tm.Min(); 0 != min {
  35. t.Errorf("tm.Min(): 0 != %v\n", min)
  36. }
  37. if max := tm.Max(); 0 != max {
  38. t.Errorf("tm.Max(): 0 != %v\n", max)
  39. }
  40. if mean := tm.Mean(); 0.0 != mean {
  41. t.Errorf("tm.Mean(): 0.0 != %v\n", mean)
  42. }
  43. if stdDev := tm.StdDev(); 0.0 != stdDev {
  44. t.Errorf("tm.StdDev(): 0.0 != %v\n", stdDev)
  45. }
  46. ps := tm.Percentiles([]float64{0.5, 0.75, 0.99})
  47. if 0.0 != ps[0] {
  48. t.Errorf("median: 0.0 != %v\n", ps[0])
  49. }
  50. if 0.0 != ps[1] {
  51. t.Errorf("75th percentile: 0.0 != %v\n", ps[1])
  52. }
  53. if 0.0 != ps[2] {
  54. t.Errorf("99th percentile: 0.0 != %v\n", ps[2])
  55. }
  56. if rate1 := tm.Rate1(); 0.0 != rate1 {
  57. t.Errorf("tm.Rate1(): 0.0 != %v\n", rate1)
  58. }
  59. if rate5 := tm.Rate5(); 0.0 != rate5 {
  60. t.Errorf("tm.Rate5(): 0.0 != %v\n", rate5)
  61. }
  62. if rate15 := tm.Rate15(); 0.0 != rate15 {
  63. t.Errorf("tm.Rate15(): 0.0 != %v\n", rate15)
  64. }
  65. if rateMean := tm.RateMean(); 0.0 != rateMean {
  66. t.Errorf("tm.RateMean(): 0.0 != %v\n", rateMean)
  67. }
  68. }