diff options
Diffstat (limited to 'p2p/peer_test.go')
-rw-r--r-- | p2p/peer_test.go | 59 |
1 files changed, 8 insertions, 51 deletions
diff --git a/p2p/peer_test.go b/p2p/peer_test.go index 59dcb7ba4..7b772e198 100644 --- a/p2p/peer_test.go +++ b/p2p/peer_test.go @@ -1,7 +1,6 @@ package p2p import ( - "bytes" "errors" "fmt" "math/rand" @@ -29,24 +28,20 @@ var discard = Protocol{ } func testPeer(protos []Protocol) (func(), *conn, *Peer, <-chan DiscReason) { - fd1, _ := net.Pipe() - hs1 := &protoHandshake{ID: randomID(), Version: baseProtocolVersion} - hs2 := &protoHandshake{ID: randomID(), Version: baseProtocolVersion} + fd1, fd2 := net.Pipe() + c1 := &conn{fd: fd1, transport: newTestTransport(randomID(), fd1)} + c2 := &conn{fd: fd2, transport: newTestTransport(randomID(), fd2)} for _, p := range protos { - hs1.Caps = append(hs1.Caps, p.cap()) - hs2.Caps = append(hs2.Caps, p.cap()) + c1.caps = append(c1.caps, p.cap()) + c2.caps = append(c2.caps, p.cap()) } - p1, p2 := MsgPipe() - peer := newPeer(fd1, &conn{p1, hs1}, protos) + peer := newPeer(c1, protos) errc := make(chan DiscReason, 1) go func() { errc <- peer.run() }() - closer := func() { - p1.Close() - fd1.Close() - } - return closer, &conn{p2, hs2}, peer, errc + closer := func() { c2.close(errors.New("close func called")) } + return closer, c2, peer, errc } func TestPeerProtoReadMsg(t *testing.T) { @@ -107,44 +102,6 @@ func TestPeerProtoEncodeMsg(t *testing.T) { } } -func TestPeerWriteForBroadcast(t *testing.T) { - closer, rw, peer, peerErr := testPeer([]Protocol{discard}) - defer closer() - - emptymsg := func(code uint64) Msg { - return Msg{Code: code, Size: 0, Payload: bytes.NewReader(nil)} - } - - // test write errors - if err := peer.writeProtoMsg("b", emptymsg(3)); err == nil { - t.Errorf("expected error for unknown protocol, got nil") - } - if err := peer.writeProtoMsg("discard", emptymsg(8)); err == nil { - t.Errorf("expected error for out-of-range msg code, got nil") - } else if perr, ok := err.(*peerError); !ok || perr.Code != errInvalidMsgCode { - t.Errorf("wrong error for out-of-range msg code, got %#v", err) - } - - // setup for reading the message on the other end - read := make(chan struct{}) - go func() { - if err := ExpectMsg(rw, 16, nil); err != nil { - t.Error(err) - } - close(read) - }() - - // test successful write - if err := peer.writeProtoMsg("discard", emptymsg(0)); err != nil { - t.Errorf("expect no error for known protocol: %v", err) - } - select { - case <-read: - case err := <-peerErr: - t.Fatalf("peer stopped: %v", err) - } -} - func TestPeerPing(t *testing.T) { closer, rw, _, _ := testPeer(nil) defer closer() |