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  }