|
|
@@ -0,0 +1,71 @@
|
|
|
+package metrics
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+// <https://github.com/codahale/metrics/blob/development/metrics-core/src/test/java/com/yammer/metrics/stats/tests/ExponentiallyDecayingSampleTest.java>
|
|
|
+
|
|
|
+func TestExpDecaySample10(t *testing.T) {
|
|
|
+ s := NewExpDecaySample(100, 0.99)
|
|
|
+ for i := 0; i < 10; i++ { s.Update(int64(i)) }
|
|
|
+ if size := s.Size(); 10 != size {
|
|
|
+ t.Errorf("s.Size(): 10 != %v\n", size)
|
|
|
+ }
|
|
|
+ if l := len(s.Values()); 10 != l {
|
|
|
+ t.Errorf("len(s.Values()): 10 != %v\n", l)
|
|
|
+ }
|
|
|
+ for _, v := range s.Values() {
|
|
|
+ if v > 10 || v < 0 {
|
|
|
+ t.Errorf("out of range [0, 10): %v\n", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestExpDecaySample100(t *testing.T) {
|
|
|
+ s := NewExpDecaySample(1000, 0.01)
|
|
|
+ for i := 0; i < 100; i++ { s.Update(int64(i)) }
|
|
|
+ if size := s.Size(); 100 != size {
|
|
|
+ t.Errorf("s.Size(): 100 != %v\n", size)
|
|
|
+ }
|
|
|
+ if l := len(s.Values()); 100 != l {
|
|
|
+ t.Errorf("len(s.Values()): 100 != %v\n", l)
|
|
|
+ }
|
|
|
+ for _, v := range s.Values() {
|
|
|
+ if v > 100 || v < 0 {
|
|
|
+ t.Errorf("out of range [0, 100): %v\n", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestExpDecaySample1000(t *testing.T) {
|
|
|
+ s := NewExpDecaySample(100, 0.99)
|
|
|
+ for i := 0; i < 1000; i++ { s.Update(int64(i)) }
|
|
|
+ if size := s.Size(); 100 != size {
|
|
|
+ t.Errorf("s.Size(): 100 != %v\n", size)
|
|
|
+ }
|
|
|
+ if l := len(s.Values()); 100 != l {
|
|
|
+ t.Errorf("len(s.Values()): 100 != %v\n", l)
|
|
|
+ }
|
|
|
+ for _, v := range s.Values() {
|
|
|
+ if v > 1000 || v < 0 {
|
|
|
+ t.Errorf("out of range [0, 100): %v\n", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestUniformSample(t *testing.T) {
|
|
|
+ s := NewUniformSample(100)
|
|
|
+ for i := 0; i < 1000; i++ { s.Update(int64(i)) }
|
|
|
+ if size := s.Size(); 100 != size {
|
|
|
+ t.Errorf("s.Size(): 100 != %v\n", size)
|
|
|
+ }
|
|
|
+ if l := len(s.Values()); 100 != l {
|
|
|
+ t.Errorf("len(s.Values()): 100 != %v\n", l)
|
|
|
+ }
|
|
|
+ for _, v := range s.Values() {
|
|
|
+ if v > 1000 || v < 0 {
|
|
|
+ t.Errorf("out of range [0, 100): %v\n", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|