mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-15 20:55:17 +00:00
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
|
package ping_test
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/libp2p/go-libp2p/core/peer"
|
||
|
bhost "github.com/libp2p/go-libp2p/p2p/host/basic"
|
||
|
swarmt "github.com/libp2p/go-libp2p/p2p/net/swarm/testing"
|
||
|
"github.com/libp2p/go-libp2p/p2p/protocol/ping"
|
||
|
|
||
|
ma "github.com/multiformats/go-multiaddr"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestPing(t *testing.T) {
|
||
|
ctx, cancel := context.WithCancel(context.Background())
|
||
|
defer cancel()
|
||
|
h1, err := bhost.NewHost(swarmt.GenSwarm(t), nil)
|
||
|
require.NoError(t, err)
|
||
|
defer h1.Close()
|
||
|
h1.Start()
|
||
|
h2, err := bhost.NewHost(swarmt.GenSwarm(t), nil)
|
||
|
require.NoError(t, err)
|
||
|
defer h2.Close()
|
||
|
h2.Start()
|
||
|
|
||
|
err = h1.Connect(ctx, peer.AddrInfo{
|
||
|
ID: h2.ID(),
|
||
|
Addrs: []ma.Multiaddr{h2.Addrs()[0]},
|
||
|
})
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
ps1 := ping.NewPingService(h1)
|
||
|
ps2 := ping.NewPingService(h2)
|
||
|
|
||
|
testPing(t, ps1, h2.ID())
|
||
|
testPing(t, ps2, h1.ID())
|
||
|
}
|
||
|
|
||
|
func testPing(t *testing.T, ps *ping.PingService, p peer.ID) {
|
||
|
pctx, cancel := context.WithCancel(context.Background())
|
||
|
defer cancel()
|
||
|
ts := ps.Ping(pctx, p)
|
||
|
|
||
|
for i := 0; i < 5; i++ {
|
||
|
select {
|
||
|
case res := <-ts:
|
||
|
require.NoError(t, res.Error)
|
||
|
t.Log("ping took: ", res.RTT)
|
||
|
case <-time.After(time.Second * 4):
|
||
|
t.Fatal("failed to receive ping")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|