MCPcopy
hub / github.com/hashicorp/memberlist / TestMemberList_Ping

Function TestMemberList_Ping

state_test.go:1077–1128  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1075}
1076
1077func 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
1130func TestMemberList_ResetNodes(t *testing.T) {
1131 m := GetMemberlist(t, func(c *Config) {

Callers

nothing calls this directly

Calls 8

getBindAddrFunction · 0.85
HostMemberlistFunction · 0.85
FatalMethod · 0.80
aliveNodeMethod · 0.80
FatalfMethod · 0.80
PingMethod · 0.80
ShutdownMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…