package netsize import ( "testing" "time" kbucket "github.com/libp2p/go-libp2p-kbucket" pt "github.com/libp2p/go-libp2p/core/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ks "github.com/whyrusleeping/go-keyspace" ) func TestNewEstimator(t *testing.T) { bucketSize := 20 pid, err := pt.RandPeerID() require.NoError(t, err) rt, err := kbucket.NewRoutingTable(bucketSize, kbucket.ConvertPeerID(pid), time.Second, nil, time.Second, nil) require.NoError(t, err) e := NewEstimator(pid, rt, bucketSize) assert.Equal(t, rt, e.rt) assert.Equal(t, kbucket.ConvertPeerID(pid), e.localID) assert.Len(t, e.measurements, bucketSize) assert.Equal(t, invalidEstimate, e.netSizeCache) } func TestNormedDistance(t *testing.T) { pid, err := pt.RandPeerID() require.NoError(t, err) dist := NormedDistance(pid, ks.XORKeySpace.Key([]byte(pid))) assert.Zero(t, dist) pid2, err := pt.RandPeerID() require.NoError(t, err) dist = NormedDistance(pid, ks.XORKeySpace.Key([]byte(pid2))) assert.Greater(t, 1.0, dist) assert.Less(t, dist, 1.0) }