mirror of
https://github.com/libp2p/go-libp2p.git
synced 2025-10-25 09:10:23 +08:00
93 lines
2.0 KiB
Go
93 lines
2.0 KiB
Go
package tcp
|
|
|
|
import (
|
|
"github.com/libp2p/go-libp2p-core/crypto"
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
"testing"
|
|
|
|
"github.com/libp2p/go-libp2p-core/sec/insecure"
|
|
mplex "github.com/libp2p/go-libp2p-mplex"
|
|
tptu "github.com/libp2p/go-libp2p-transport-upgrader"
|
|
|
|
ttransport "github.com/libp2p/go-libp2p-testing/suites/transport"
|
|
|
|
ma "github.com/multiformats/go-multiaddr"
|
|
)
|
|
|
|
func TestTcpTransport(t *testing.T) {
|
|
for i := 0; i < 2; i++ {
|
|
ia := makeInsecureTransport(t)
|
|
ib := makeInsecureTransport(t)
|
|
|
|
ta := NewTCPTransport(&tptu.Upgrader{
|
|
Secure: ia,
|
|
Muxer: new(mplex.Transport),
|
|
})
|
|
tb := NewTCPTransport(&tptu.Upgrader{
|
|
Secure: ib,
|
|
Muxer: new(mplex.Transport),
|
|
})
|
|
|
|
zero := "/ip4/127.0.0.1/tcp/0"
|
|
ttransport.SubtestTransport(t, ta, tb, zero, ia.LocalPeer())
|
|
|
|
envReuseportVal = false
|
|
}
|
|
envReuseportVal = true
|
|
}
|
|
|
|
func TestTcpTransportCantDialDNS(t *testing.T) {
|
|
for i := 0; i < 2; i++ {
|
|
dnsa, err := ma.NewMultiaddr("/dns4/example.com/tcp/1234")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tpt := NewTCPTransport(&tptu.Upgrader{
|
|
Secure: makeInsecureTransport(t),
|
|
Muxer: new(mplex.Transport),
|
|
})
|
|
|
|
if tpt.CanDial(dnsa) {
|
|
t.Fatal("shouldn't be able to dial dns")
|
|
}
|
|
|
|
envReuseportVal = false
|
|
}
|
|
envReuseportVal = true
|
|
}
|
|
|
|
func TestTcpTransportCantListenUtp(t *testing.T) {
|
|
for i := 0; i < 2; i++ {
|
|
utpa, err := ma.NewMultiaddr("/ip4/127.0.0.1/udp/0/utp")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tpt := NewTCPTransport(&tptu.Upgrader{
|
|
Secure: makeInsecureTransport(t),
|
|
Muxer: new(mplex.Transport),
|
|
})
|
|
|
|
_, err = tpt.Listen(utpa)
|
|
if err == nil {
|
|
t.Fatal("shouldnt be able to listen on utp addr with tcp transport")
|
|
}
|
|
|
|
envReuseportVal = false
|
|
}
|
|
envReuseportVal = true
|
|
}
|
|
|
|
func makeInsecureTransport(t *testing.T) *insecure.Transport {
|
|
priv, pub, err := crypto.GenerateKeyPair(crypto.Ed25519, 256)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
id, err := peer.IDFromPublicKey(pub)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return insecure.NewWithIdentity(id, priv)
|
|
}
|