-
Notifications
You must be signed in to change notification settings - Fork 20
/
peer_test.go
59 lines (47 loc) · 958 Bytes
/
peer_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package gyre
import (
"bytes"
crand "crypto/rand"
"io"
"testing"
zmq "github.com/pebbe/zmq4"
"github.com/zeromq/gyre/zre/msg"
)
func TestPeer(t *testing.T) {
mailbox, err := zmq.NewSocket(zmq.DEALER)
if err != nil {
t.Fatal(err)
}
mailbox.Bind("tcp://127.0.0.1:5551")
me := make([]byte, 16)
io.ReadFull(crand.Reader, me)
you := make([]byte, 16)
io.ReadFull(crand.Reader, you)
peer := newPeer(string(you))
if peer.connected {
t.Fatal("Peer shouldn't be connected yet")
}
err = peer.connect(me, "tcp://127.0.0.1:5551")
if err != nil {
t.Fatal(err)
}
if !peer.connected {
t.Fatal("Peer should be connected")
}
m := msg.NewHello()
m.Endpoint = "tcp://127.0.0.1:5551"
peer.send(m)
exp, err := m.Marshal()
if err != nil {
t.Fatal(err)
}
got, err := mailbox.Recv(0)
if err != nil {
t.Fatal(err)
}
gotb := []byte(got)
if !bytes.Equal(gotb, exp) {
t.Error("Hello message was corrupted")
}
peer.destroy()
}