github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/p2p/peer/metrics_test.go (about) 1 package peer_test 2 3 import ( 4 "fmt" 5 "math/rand" 6 "testing" 7 "time" 8 9 peer "github.com/ipfs/go-ipfs/p2p/peer" 10 testutil "github.com/ipfs/go-ipfs/util/testutil" 11 ) 12 13 func TestLatencyEWMAFun(t *testing.T) { 14 t.Skip("run it for fun") 15 16 m := peer.NewMetrics() 17 id, err := testutil.RandPeerID() 18 if err != nil { 19 t.Fatal(err) 20 } 21 22 mu := 100.0 23 sig := 10.0 24 next := func() time.Duration { 25 mu = (rand.NormFloat64() * sig) + mu 26 return time.Duration(mu) 27 } 28 29 print := func() { 30 fmt.Printf("%3.f %3.f --> %d\n", sig, mu, m.LatencyEWMA(id)) 31 } 32 33 for { 34 select { 35 case <-time.After(200 * time.Millisecond): 36 m.RecordLatency(id, next()) 37 print() 38 } 39 } 40 }