package lib
import (
"testing"
"time"
)
func TestDurationMinusBuffer ( t * testing . T ) {
const (
buffer = 10 * time . Second
jitter = 16
)
intv := 1 * time . Minute
minValue := ( intv - buffer ) - ( ( intv - buffer ) / jitter )
maxValue := intv - buffer
for i := 0 ; i < 10 ; i ++ {
d := DurationMinusBuffer ( intv , buffer , jitter )
if d < minValue || d > maxValue {
t . Fatalf ( "Bad: %v" , d )
}
}
}
func TestRandomStagger ( t * testing . T ) {
intv := time . Minute
for i := 0 ; i < 10 ; i ++ {
stagger := RandomStagger ( intv )
if stagger < 0 || stagger >= intv {
t . Fatalf ( "Bad: %v" , stagger )
}
}
}
func TestRateScaledInterval ( t * testing . T ) {
const min = 1 * time . Second
rate := 200.0
if v := RateScaledInterval ( rate , min , 0 ) ; v != min {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( rate , min , 100 ) ; v != min {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( rate , min , 200 ) ; v != 1 * time . Second {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( rate , min , 1000 ) ; v != 5 * time . Second {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( rate , min , 5000 ) ; v != 25 * time . Second {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( rate , min , 10000 ) ; v != 50 * time . Second {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( 0 , min , 10000 ) ; v != min {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( 0.0 , min , 10000 ) ; v != min {
t . Fatalf ( "Bad: %v" , v )
}
if v := RateScaledInterval ( - 1 , min , 10000 ) ; v != min {
t . Fatalf ( "Bad: %v" , v )
}
}