mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-30 18:35:18 +00:00
73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
|
package basichost
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/libp2p/go-libp2p"
|
||
|
"github.com/libp2p/go-libp2p/core/network"
|
||
|
"github.com/libp2p/go-libp2p/core/peer"
|
||
|
"github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/client"
|
||
|
"github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/relay"
|
||
|
ma "github.com/multiformats/go-multiaddr"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestNoStreamOverTransientConnection(t *testing.T) {
|
||
|
h1, err := libp2p.New(
|
||
|
libp2p.NoListenAddrs,
|
||
|
libp2p.EnableRelay(),
|
||
|
)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
h2, err := libp2p.New(
|
||
|
libp2p.NoListenAddrs,
|
||
|
libp2p.EnableRelay(),
|
||
|
)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
relay1, err := libp2p.New()
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
_, err = relay.New(relay1)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
relay1info := peer.AddrInfo{
|
||
|
ID: relay1.ID(),
|
||
|
Addrs: relay1.Addrs(),
|
||
|
}
|
||
|
err = h1.Connect(context.Background(), relay1info)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
err = h2.Connect(context.Background(), relay1info)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
h2.SetStreamHandler("/testprotocol", func(s network.Stream) {
|
||
|
fmt.Println("testprotocol")
|
||
|
|
||
|
// End the example
|
||
|
s.Close()
|
||
|
})
|
||
|
|
||
|
_, err = client.Reserve(context.Background(), h2, relay1info)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
relayaddr := ma.StringCast("/p2p/" + relay1info.ID.String() + "/p2p-circuit/p2p/" + h2.ID().String())
|
||
|
|
||
|
h2Info := peer.AddrInfo{
|
||
|
ID: h2.ID(),
|
||
|
Addrs: []ma.Multiaddr{relayaddr},
|
||
|
}
|
||
|
err = h1.Connect(context.Background(), h2Info)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
ctx := network.WithNoDial(context.Background(), "test")
|
||
|
_, err = h1.NewStream(ctx, h2.ID(), "/testprotocol")
|
||
|
|
||
|
require.ErrorIs(t, err, network.ErrTransientConn)
|
||
|
|
||
|
_, err = h1.NewStream(network.WithUseTransient(context.Background(), "test"), h2.ID(), "/testprotocol")
|
||
|
require.NoError(t, err)
|
||
|
}
|