(t *testing.T)
| 1075 | } |
| 1076 | |
| 1077 | func TestMemberList_Ping(t *testing.T) { |
| 1078 | addr1 := getBindAddr() |
| 1079 | addr2 := getBindAddr() |
| 1080 | ip1 := []byte(addr1) |
| 1081 | ip2 := []byte(addr2) |
| 1082 | |
| 1083 | m1 := HostMemberlist(addr1.String(), t, func(c *Config) { |
| 1084 | c.ProbeTimeout = 1 * time.Second |
| 1085 | c.ProbeInterval = 10 * time.Second |
| 1086 | }) |
| 1087 | defer func() { |
| 1088 | if err := m1.Shutdown(); err != nil { |
| 1089 | t.Fatal(err) |
| 1090 | } |
| 1091 | }() |
| 1092 | |
| 1093 | bindPort := m1.config.BindPort |
| 1094 | |
| 1095 | m2 := HostMemberlist(addr2.String(), t, func(c *Config) { |
| 1096 | c.BindPort = bindPort |
| 1097 | }) |
| 1098 | defer func() { |
| 1099 | if err := m2.Shutdown(); err != nil { |
| 1100 | t.Fatal(err) |
| 1101 | } |
| 1102 | }() |
| 1103 | |
| 1104 | a1 := alive{Node: addr1.String(), Addr: ip1, Port: uint16(bindPort), Incarnation: 1} |
| 1105 | m1.aliveNode(&a1, nil, true) |
| 1106 | a2 := alive{Node: addr2.String(), Addr: ip2, Port: uint16(bindPort), Incarnation: 1} |
| 1107 | m1.aliveNode(&a2, nil, false) |
| 1108 | |
| 1109 | // Do a legit ping. |
| 1110 | n := m1.nodeMap[addr2.String()] |
| 1111 | addr, err := net.ResolveUDPAddr("udp", net.JoinHostPort(addr2.String(), strconv.Itoa(bindPort))) |
| 1112 | if err != nil { |
| 1113 | t.Fatalf("err: %v", err) |
| 1114 | } |
| 1115 | rtt, err := m1.Ping(n.Name, addr) |
| 1116 | if err != nil { |
| 1117 | t.Fatalf("err: %v", err) |
| 1118 | } |
| 1119 | if rtt <= 0 { |
| 1120 | t.Fatalf("bad: %v", rtt) |
| 1121 | } |
| 1122 | |
| 1123 | // This ping has a bad node name so should timeout. |
| 1124 | _, err = m1.Ping("bad", addr) |
| 1125 | if _, ok := err.(NoPingResponseError); !ok || err == nil { |
| 1126 | t.Fatalf("bad: %v", err) |
| 1127 | } |
| 1128 | } |
| 1129 | |
| 1130 | func TestMemberList_ResetNodes(t *testing.T) { |
| 1131 | m := GetMemberlist(t, func(c *Config) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…