|
|
- package p2p
-
- import (
- "bytes"
- "net"
- "strings"
- "testing"
-
- "github.com/stretchr/testify/require"
- "github.com/tendermint/tendermint/libs/log"
- )
-
- func TestListener(t *testing.T) {
- // Create a listener
- l := NewDefaultListener("tcp://:8001", "", false, log.TestingLogger())
-
- // Dial the listener
- lAddr := l.ExternalAddress()
- connOut, err := lAddr.Dial()
- if err != nil {
- t.Fatalf("Could not connect to listener address %v", lAddr)
- } else {
- t.Logf("Created a connection to listener address %v", lAddr)
- }
- connIn, ok := <-l.Connections()
- if !ok {
- t.Fatalf("Could not get inbound connection from listener")
- }
-
- msg := []byte("hi!")
- go func() {
- _, err := connIn.Write(msg)
- if err != nil {
- t.Error(err)
- }
- }()
- b := make([]byte, 32)
- n, err := connOut.Read(b)
- if err != nil {
- t.Fatalf("Error reading off connection: %v", err)
- }
-
- b = b[:n]
- if !bytes.Equal(msg, b) {
- t.Fatalf("Got %s, expected %s", b, msg)
- }
-
- // Close the server, no longer needed.
- l.Stop()
- }
-
- func TestExternalAddress(t *testing.T) {
- {
- // Create a listener with no external addr. Should default
- // to local ipv4.
- l := NewDefaultListener("tcp://:8001", "", false, log.TestingLogger())
- lAddr := l.ExternalAddress().String()
- _, _, err := net.SplitHostPort(lAddr)
- require.Nil(t, err)
- spl := strings.Split(lAddr, ".")
- require.Equal(t, len(spl), 4)
- l.Stop()
- }
-
- {
- // Create a listener with set external ipv4 addr.
- setExAddr := "8.8.8.8:8080"
- l := NewDefaultListener("tcp://:8001", setExAddr, false, log.TestingLogger())
- lAddr := l.ExternalAddress().String()
- require.Equal(t, lAddr, setExAddr)
- l.Stop()
- }
-
- {
- // Invalid external addr causes panic
- setExAddr := "awrlsckjnal:8080"
- require.Panics(t, func() { NewDefaultListener("tcp://:8001", setExAddr, false, log.TestingLogger()) })
- }
- }
|