mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 13:10:42 +00:00
53 lines
729 B
Go
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)
|
|
}
|
|
}
|
|
}
|