package p2p import ( "bytes" "testing" "github.com/tendermint/tmlibs/log" ) func TestListener(t *testing.T) { // Create a listener l := NewDefaultListener("tcp", ":8001", true, 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() }