sample_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package metrics
  2. import (
  3. "testing"
  4. )
  5. // <https://github.com/codahale/metrics/blob/development/metrics-core/src/test/java/com/yammer/metrics/stats/tests/ExponentiallyDecayingSampleTest.java>
  6. func TestExpDecaySample10(t *testing.T) {
  7. s := NewExpDecaySample(100, 0.99)
  8. for i := 0; i < 10; i++ { s.Update(int64(i)) }
  9. if size := s.Size(); 10 != size {
  10. t.Errorf("s.Size(): 10 != %v\n", size)
  11. }
  12. if l := len(s.Values()); 10 != l {
  13. t.Errorf("len(s.Values()): 10 != %v\n", l)
  14. }
  15. for _, v := range s.Values() {
  16. if v > 10 || v < 0 {
  17. t.Errorf("out of range [0, 10): %v\n", v)
  18. }
  19. }
  20. }
  21. func TestExpDecaySample100(t *testing.T) {
  22. s := NewExpDecaySample(1000, 0.01)
  23. for i := 0; i < 100; i++ { s.Update(int64(i)) }
  24. if size := s.Size(); 100 != size {
  25. t.Errorf("s.Size(): 100 != %v\n", size)
  26. }
  27. if l := len(s.Values()); 100 != l {
  28. t.Errorf("len(s.Values()): 100 != %v\n", l)
  29. }
  30. for _, v := range s.Values() {
  31. if v > 100 || v < 0 {
  32. t.Errorf("out of range [0, 100): %v\n", v)
  33. }
  34. }
  35. }
  36. func TestExpDecaySample1000(t *testing.T) {
  37. s := NewExpDecaySample(100, 0.99)
  38. for i := 0; i < 1000; i++ { s.Update(int64(i)) }
  39. if size := s.Size(); 100 != size {
  40. t.Errorf("s.Size(): 100 != %v\n", size)
  41. }
  42. if l := len(s.Values()); 100 != l {
  43. t.Errorf("len(s.Values()): 100 != %v\n", l)
  44. }
  45. for _, v := range s.Values() {
  46. if v > 1000 || v < 0 {
  47. t.Errorf("out of range [0, 100): %v\n", v)
  48. }
  49. }
  50. }
  51. func TestUniformSample(t *testing.T) {
  52. s := NewUniformSample(100)
  53. for i := 0; i < 1000; i++ { s.Update(int64(i)) }
  54. if size := s.Size(); 100 != size {
  55. t.Errorf("s.Size(): 100 != %v\n", size)
  56. }
  57. if l := len(s.Values()); 100 != l {
  58. t.Errorf("len(s.Values()): 100 != %v\n", l)
  59. }
  60. for _, v := range s.Values() {
  61. if v > 1000 || v < 0 {
  62. t.Errorf("out of range [0, 100): %v\n", v)
  63. }
  64. }
  65. }