MCPcopy
hub / github.com/nats-io/nats.go / TestConnectHandler

Function TestConnectHandler

test/conn_test.go:1131–1282  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1129}
1130
1131func TestConnectHandler(t *testing.T) {
1132 handler := func(ch chan bool) func(*nats.Conn) {
1133 return func(*nats.Conn) {
1134 ch <- true
1135 }
1136 }
1137 t.Run("with RetryOnFailedConnect, connection established", func(t *testing.T) {
1138 s := RunDefaultServer()
1139 defer s.Shutdown()
1140
1141 connected := make(chan bool)
1142 reconnected := make(chan bool)
1143
1144 nc, err := nats.Connect(nats.DefaultURL,
1145 nats.ConnectHandler(handler(connected)),
1146 nats.ReconnectHandler(handler(reconnected)),
1147 nats.RetryOnFailedConnect(true))
1148 if err != nil {
1149 t.Fatalf("Unexpected error: %v", err)
1150 }
1151 defer nc.Close()
1152 if err = Wait(connected); err != nil {
1153 t.Fatal("Timeout waiting for connect handler")
1154 }
1155 if err = WaitTime(reconnected, 100*time.Millisecond); err == nil {
1156 t.Fatal("Reconnect handler should not have been invoked")
1157 }
1158 })
1159 t.Run("with RetryOnFailedConnect, connection failed", func(t *testing.T) {
1160 connected := make(chan bool)
1161 reconnected := make(chan bool)
1162
1163 nc, err := nats.Connect(nats.DefaultURL,
1164 nats.ConnectHandler(handler(connected)),
1165 nats.ReconnectHandler(handler(reconnected)),
1166 nats.RetryOnFailedConnect(true))
1167 if err != nil {
1168 t.Fatalf("Unexpected error: %v", err)
1169 }
1170 defer nc.Close()
1171 if err = WaitTime(connected, 100*time.Millisecond); err == nil {
1172 t.Fatal("Connected handler should not have been invoked")
1173 }
1174 if err = WaitTime(reconnected, 100*time.Millisecond); err == nil {
1175 t.Fatal("Reconnect handler should not have been invoked")
1176 }
1177 })
1178 t.Run("no RetryOnFailedConnect, connection established", func(t *testing.T) {
1179 s := RunDefaultServer()
1180 defer s.Shutdown()
1181
1182 connected := make(chan bool)
1183 reconnected := make(chan bool)
1184 nc, err := nats.Connect(nats.DefaultURL,
1185 nats.ConnectHandler(handler(connected)),
1186 nats.ReconnectHandler(handler(reconnected)))
1187 if err != nil {
1188 t.Fatalf("Unexpected error: %v", err)

Callers

nothing calls this directly

Calls 7

ConnectMethod · 0.80
ReconnectHandlerMethod · 0.80
FatalfMethod · 0.80
RunDefaultServerFunction · 0.70
WaitFunction · 0.70
WaitTimeFunction · 0.70
CloseMethod · 0.45

Tested by

no test coverage detected