You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.3 KiB

package config
import (
"testing"
bhost "github.com/libp2p/go-libp2p/p2p/host/basic"
"github.com/libp2p/go-libp2p/p2p/muxer/yamux"
swarmt "github.com/libp2p/go-libp2p/p2p/net/swarm/testing"
"github.com/libp2p/go-libp2p-core/host"
"github.com/libp2p/go-libp2p-core/network"
"github.com/libp2p/go-libp2p-core/peer"
)
func TestMuxerSimple(t *testing.T) {
// single
_, err := MuxerConstructor(func(_ peer.ID) network.Multiplexer { return nil })
if err != nil {
t.Fatal(err)
}
}
func TestMuxerByValue(t *testing.T) {
_, err := MuxerConstructor(yamux.DefaultTransport)
if err != nil {
t.Fatal(err)
}
}
func TestMuxerDuplicate(t *testing.T) {
_, err := MuxerConstructor(func(_ peer.ID, _ peer.ID) network.Multiplexer { return nil })
if err != nil {
t.Fatal(err)
}
}
func TestMuxerError(t *testing.T) {
_, err := MuxerConstructor(func() (network.Multiplexer, error) { return nil, nil })
if err != nil {
t.Fatal(err)
}
}
func TestMuxerBadTypes(t *testing.T) {
for i, f := range []interface{}{
func() error { return nil },
func() string { return "" },
func() {},
func(string) network.Multiplexer { return nil },
func(string) (network.Multiplexer, error) { return nil, nil },
nil,
"testing",
} {
if _, err := MuxerConstructor(f); err == nil {
t.Fatalf("constructor %d with type %T should have failed", i, f)
}
}
}
func TestCatchDuplicateTransportsMuxer(t *testing.T) {
h, err := bhost.NewHost(swarmt.GenSwarm(t), nil)
if err != nil {
t.Fatal(err)
}
yamuxMuxer, err := MuxerConstructor(yamux.DefaultTransport)
if err != nil {
t.Fatal(err)
}
var tests = map[string]struct {
h host.Host
transports []MsMuxC
expectedError string
}{
"no duplicate transports": {
h: h,
transports: []MsMuxC{{yamuxMuxer, "yamux"}},
expectedError: "",
},
"duplicate transports": {
h: h,
transports: []MsMuxC{
{yamuxMuxer, "yamux"},
{yamuxMuxer, "yamux"},
},
expectedError: "duplicate muxer transport: yamux",
},
}
for testName, test := range tests {
t.Run(testName, func(t *testing.T) {
_, err = makeMuxer(test.h, test.transports)
if err != nil {
if err.Error() != test.expectedError {
t.Errorf(
"\nexpected: [%v]\nactual: [%v]\n",
test.expectedError,
err,
)
}
}
})
}
}