mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-11 02:35:18 +00:00
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
// This separate testing package helps to resolve a circular dependency potentially
|
|
// being created between libp2p and libp2p-autonat
|
|
package autonattest
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/libp2p/go-libp2p"
|
|
"github.com/libp2p/go-libp2p/core/event"
|
|
"github.com/libp2p/go-libp2p/core/network"
|
|
"github.com/libp2p/go-libp2p/p2p/host/autonat"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAutonatRoundtrip(t *testing.T) {
|
|
t.Skip("this test doesn't work")
|
|
|
|
// 3 hosts are used: [client] and [service + dialback dialer]
|
|
client, err := libp2p.New(libp2p.ListenAddrStrings("/ip4/127.0.0.1/tcp/0"), libp2p.EnableNATService())
|
|
require.NoError(t, err)
|
|
service, err := libp2p.New(libp2p.ListenAddrStrings("/ip4/127.0.0.1/tcp/0"))
|
|
require.NoError(t, err)
|
|
dialback, err := libp2p.New(libp2p.NoListenAddrs)
|
|
require.NoError(t, err)
|
|
if _, err := autonat.New(service, autonat.EnableService(dialback.Network())); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
client.Peerstore().AddAddrs(service.ID(), service.Addrs(), time.Hour)
|
|
require.NoError(t, client.Connect(context.Background(), service.Peerstore().PeerInfo(service.ID())))
|
|
|
|
cSub, err := client.EventBus().Subscribe(new(event.EvtLocalReachabilityChanged))
|
|
require.NoError(t, err)
|
|
defer cSub.Close()
|
|
|
|
select {
|
|
case stat := <-cSub.Out():
|
|
if stat == network.ReachabilityUnknown {
|
|
t.Fatalf("After status update, client did not know its status")
|
|
}
|
|
case <-time.After(30 * time.Second):
|
|
t.Fatal("sub timed out.")
|
|
}
|
|
}
|