summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/memberlist/transport_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/memberlist/transport_test.go')
-rw-r--r--vendor/github.com/hashicorp/memberlist/transport_test.go124
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)
+ }
+}