nps/lib/rate/rate_test.go
2022-01-23 17:30:38 +08:00

53 lines
729 B
Go

package rate
import (
"math"
"testing"
"time"
)
func TestRate_GetWrite(t *testing.T) {
r := NewRate(1024)
r.Write(2048)
n := 0
go func() {
for {
r.Get(1024)
n += 1024
}
}()
select {
case <-time.After(time.Second):
r.Stop()
if n != 2048 {
t.Fatal("get token error", n)
}
}
}
func TestRate_StartGetRate(t *testing.T) {
r := NewRate(1024)
r.Start()
n := 0
go func() {
for {
err := r.Get(1024)
if err != nil {
return
}
n += 1024
}
}()
select {
case <-time.After(time.Second * 5):
r.Stop()
time.Sleep(time.Second * 2)
if n < 4*1024 || n > 1024*5 {
t.Fatal("get error", n)
}
if math.Abs(float64(r.GetNowRate()-1024)) > 100 {
t.Fatal("rate error", n)
}
}
}