forked from zeromq/gyre
-
Notifications
You must be signed in to change notification settings - Fork 0
/
group_test.go
64 lines (50 loc) · 1.02 KB
/
group_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
60
61
62
63
64
package gyre
import (
"bytes"
crand "crypto/rand"
"io"
"testing"
zmq "github.com/pebbe/zmq4"
"github.com/zeromq/gyre/zre/msg"
)
func TestGroup(t *testing.T) {
mailbox, err := zmq.NewSocket(zmq.DEALER)
if err != nil {
t.Fatal(err)
}
mailbox.Bind("tcp://127.0.0.1:5552")
group := newGroup("tlests")
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:5552")
if err != nil {
t.Fatal(err)
}
if !peer.connected {
t.Fatal("Peer should be connected")
}
group.join(peer)
m := msg.NewHello()
m.Endpoint = "tcp://127.0.0.1:5551"
group.send(m)
exp, err := m.Marshal()
if err != nil {
t.Fatal(err)
}
exp[5] = 1 // Sequence now is 1
got, err := mailbox.Recv(0)
if err != nil {
t.Fatal(err)
}
gotb := []byte(got)
if !bytes.Equal(gotb, exp) {
t.Errorf("Hello message is corrupted")
}
peer.destroy()
}