You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
5 years ago
|
package metric
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"math/rand"
|
||
|
"testing"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func GetRollingPolicy() *RollingPolicy {
|
||
|
w := NewWindow(WindowOpts{Size: 10})
|
||
|
return NewRollingPolicy(w, RollingPolicyOpts{BucketDuration: 300 * time.Millisecond})
|
||
|
}
|
||
|
|
||
|
func Handler(t *testing.T, table []map[string][]int) {
|
||
|
for _, hm := range table {
|
||
|
var totalTs, lastOffset int
|
||
|
offsetAndPoints := hm["offsetAndPoints"]
|
||
|
timeSleep := hm["timeSleep"]
|
||
|
policy := GetRollingPolicy()
|
||
|
for i, n := range timeSleep {
|
||
|
totalTs += n
|
||
|
time.Sleep(time.Duration(n) * time.Millisecond)
|
||
|
policy.Add(1)
|
||
|
offset, points := offsetAndPoints[2*i], offsetAndPoints[2*i+1]
|
||
|
|
||
|
if int(policy.window.window[offset].Points[0]) != points {
|
||
|
t.Errorf("error, time since last append: %vms, last offset: %v", totalTs, lastOffset)
|
||
|
}
|
||
|
lastOffset = offset
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRollingPolicy_Add(t *testing.T) {
|
||
|
rand.Seed(time.Now().Unix())
|
||
|
|
||
|
// test add after 400ms and 601ms relative to the policy created time
|
||
|
policy := GetRollingPolicy()
|
||
|
time.Sleep(400 * time.Millisecond)
|
||
|
policy.Add(1)
|
||
|
time.Sleep(201 * time.Millisecond)
|
||
|
policy.Add(1)
|
||
|
for _, b := range policy.window.window {
|
||
|
fmt.Println(b.Points)
|
||
|
}
|
||
|
if int(policy.window.window[1].Points[0]) != 1 {
|
||
|
t.Errorf("error, time since last append: %vms, last offset: %v", 300, 0)
|
||
|
}
|
||
|
if int(policy.window.window[2].Points[0]) != 1 {
|
||
|
t.Errorf("error, time since last append: %vms, last offset: %v", 301, 0)
|
||
|
}
|
||
|
|
||
|
// test func timespan return real span
|
||
|
table := []map[string][]int{
|
||
|
{
|
||
|
"timeSleep": []int{294, 3200},
|
||
|
"offsetAndPoints": []int{0, 1, 0, 1},
|
||
|
},
|
||
|
{
|
||
|
"timeSleep": []int{305, 3200, 6400},
|
||
|
"offsetAndPoints": []int{1, 1, 1, 1, 1, 1},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
Handler(t, table)
|
||
|
}
|