diff options
Diffstat (limited to 'vendor/github.com/hashicorp/memberlist/transport_test.go')
-rw-r--r-- | vendor/github.com/hashicorp/memberlist/transport_test.go | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/memberlist/transport_test.go b/vendor/github.com/hashicorp/memberlist/transport_test.go new file mode 100644 index 000000000..b5249eb5f --- /dev/null +++ b/vendor/github.com/hashicorp/memberlist/transport_test.go @@ -0,0 +1,124 @@ +package memberlist + +import ( + "bytes" + "testing" + "time" +) + +func TestTransport_Join(t *testing.T) { + net := &MockNetwork{} + + t1 := net.NewTransport() + + c1 := DefaultLANConfig() + c1.Name = "node1" + c1.Transport = t1 + m1, err := Create(c1) + if err != nil { + t.Fatalf("err: %v", err) + } + m1.setAlive() + m1.schedule() + defer m1.Shutdown() + + c2 := DefaultLANConfig() + c2.Name = "node2" + c2.Transport = net.NewTransport() + m2, err := Create(c2) + if err != nil { + t.Fatalf("err: %v", err) + } + m2.setAlive() + m2.schedule() + defer m2.Shutdown() + + num, err := m2.Join([]string{t1.addr.String()}) + if num != 1 { + t.Fatalf("bad: %d", num) + } + if err != nil { + t.Fatalf("err: %v", err) + } + + if len(m2.Members()) != 2 { + t.Fatalf("bad: %v", m2.Members()) + } + if m2.estNumNodes() != 2 { + t.Fatalf("bad: %v", m2.Members()) + } + +} + +func TestTransport_Send(t *testing.T) { + net := &MockNetwork{} + + t1 := net.NewTransport() + d1 := &MockDelegate{} + + c1 := DefaultLANConfig() + c1.Name = "node1" + c1.Transport = t1 + c1.Delegate = d1 + m1, err := Create(c1) + if err != nil { + t.Fatalf("err: %v", err) + } + m1.setAlive() + m1.schedule() + defer m1.Shutdown() + + c2 := DefaultLANConfig() + c2.Name = "node2" + c2.Transport = net.NewTransport() + m2, err := Create(c2) + if err != nil { + t.Fatalf("err: %v", err) + } + m2.setAlive() + m2.schedule() + defer m2.Shutdown() + + num, err := m2.Join([]string{t1.addr.String()}) + if num != 1 { + t.Fatalf("bad: %d", num) + } + if err != nil { + t.Fatalf("err: %v", err) + } + + if err := m2.SendTo(t1.addr, []byte("SendTo")); err != nil { + t.Fatalf("err: %v", err) + } + + var n1 *Node + for _, n := range m2.Members() { + if n.Name == c1.Name { + n1 = n + break + } + } + if n1 == nil { + t.Fatalf("bad") + } + + if err := m2.SendToUDP(n1, []byte("SendToUDP")); err != nil { + t.Fatalf("err: %v", err) + } + if err := m2.SendToTCP(n1, []byte("SendToTCP")); err != nil { + t.Fatalf("err: %v", err) + } + if err := m2.SendBestEffort(n1, []byte("SendBestEffort")); err != nil { + t.Fatalf("err: %v", err) + } + if err := m2.SendReliable(n1, []byte("SendReliable")); err != nil { + t.Fatalf("err: %v", err) + } + time.Sleep(100 * time.Millisecond) + + received := bytes.Join(d1.msgs, []byte("|")) + expected := []byte("SendTo|SendToUDP|SendToTCP|SendBestEffort|SendReliable") + if !bytes.Equal(received, expected) { + t.Fatalf("bad: %s", received) + } +} |