OSDN Git Service

Merge pull request #713 from Bytom/p2p_test
[bytom/bytom.git] / p2p / listener_test.go
1 // +build !network
2
3 package p2p
4
5 import (
6         "bytes"
7         "testing"
8
9         "github.com/tendermint/tmlibs/log"
10 )
11
12 func TestListener(t *testing.T) {
13         // Create a listener
14         l := NewDefaultListener("tcp", ":8001", true, log.TestingLogger())
15
16         // Dial the listener
17         lAddr := l.ExternalAddress()
18         connOut, err := lAddr.Dial()
19         if err != nil {
20                 t.Fatalf("Could not connect to listener address %v", lAddr)
21         } else {
22                 t.Logf("Created a connection to listener address %v", lAddr)
23         }
24         connIn, ok := <-l.Connections()
25         if !ok {
26                 t.Fatalf("Could not get inbound connection from listener")
27         }
28
29         msg := []byte("hi!")
30         go connIn.Write(msg)
31         b := make([]byte, 32)
32         n, err := connOut.Read(b)
33         if err != nil {
34                 t.Fatalf("Error reading off connection: %v", err)
35         }
36
37         b = b[:n]
38         if !bytes.Equal(msg, b) {
39                 t.Fatalf("Got %s, expected %s", b, msg)
40         }
41
42         // Close the server, no longer needed.
43         l.Stop()
44 }