go-libp2p-peerstore/metrics_test.go

64 lines
1.0 KiB
Go
Raw Normal View History

2016-06-01 02:31:50 +08:00
package peerstore
2015-10-01 06:42:55 +08:00
import (
"fmt"
"math/rand"
"testing"
"time"
"github.com/libp2p/go-libp2p-core/test"
2015-10-01 06:42:55 +08:00
)
func TestLatencyEWMAFun(t *testing.T) {
t.Skip("run it for fun")
2016-06-01 02:31:50 +08:00
m := NewMetrics()
id, err := test.RandPeerID()
2015-10-01 06:42:55 +08:00
if err != nil {
t.Fatal(err)
}
mu := 100.0
sig := 10.0
next := func() time.Duration {
mu = (rand.NormFloat64() * sig) + mu
return time.Duration(mu)
}
print := func() {
fmt.Printf("%3.f %3.f --> %d\n", sig, mu, m.LatencyEWMA(id))
}
for {
2021-07-16 08:47:50 +08:00
time.Sleep(200 * time.Millisecond)
m.RecordLatency(id, next())
print()
2015-10-01 06:42:55 +08:00
}
}
2016-04-21 01:20:46 +08:00
func TestLatencyEWMA(t *testing.T) {
2016-06-01 02:31:50 +08:00
m := NewMetrics()
id, err := test.RandPeerID()
2016-04-21 01:20:46 +08:00
if err != nil {
t.Fatal(err)
}
2022-08-13 03:10:01 +08:00
const exp = 100
const mu = exp
const sig = 10
next := func() time.Duration { return time.Duration(rand.Intn(20) - 10 + mu) }
2016-04-21 01:20:46 +08:00
for i := 0; i < 10; i++ {
2021-07-16 08:47:50 +08:00
m.RecordLatency(id, next())
2016-04-21 01:20:46 +08:00
}
lat := m.LatencyEWMA(id)
2022-08-13 03:10:01 +08:00
diff := exp - lat
if diff < 0 {
diff = -diff
}
if diff > sig {
t.Fatalf("latency outside of expected range. expected %d ± %d, got %d", exp, sig, lat)
2016-04-21 01:20:46 +08:00
}
}