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

Function TestForceReconnectDisallowReconnect

test/reconnect_test.go:968–1021  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

966}
967
968func TestForceReconnectDisallowReconnect(t *testing.T) {
969 s := RunDefaultServer()
970 defer s.Shutdown()
971
972 nc, err := nats.Connect(s.ClientURL(), nats.NoReconnect())
973 if err != nil {
974 t.Fatalf("Unexpected error on connect: %v", err)
975 }
976 defer nc.Close()
977
978 statusCh := nc.StatusChanged(nats.RECONNECTING, nats.CONNECTED)
979 defer close(statusCh)
980 newStatus := make(chan nats.Status, 10)
981 // non-blocking channel, so we need to be constantly listening
982 go func() {
983 for {
984 s, ok := <-statusCh
985 if !ok {
986 return
987 }
988 newStatus <- s
989 }
990 }()
991
992 sub, err := nc.SubscribeSync("foo")
993 if err != nil {
994 t.Fatalf("Error on subscribe: %v", err)
995 }
996 if err := nc.Publish("foo", []byte("msg")); err != nil {
997 t.Fatalf("Error on publish: %v", err)
998 }
999 _, err = sub.NextMsg(time.Second)
1000 if err != nil {
1001 t.Fatalf("Error getting message: %v", err)
1002 }
1003
1004 // Force a reconnect
1005 err = nc.ForceReconnect()
1006 if err != nil {
1007 t.Fatalf("Unexpected error on reconnect: %v", err)
1008 }
1009
1010 WaitOnChannel(t, newStatus, nats.RECONNECTING)
1011 WaitOnChannel(t, newStatus, nats.CONNECTED)
1012
1013 if err := nc.Publish("foo", []byte("msg")); err != nil {
1014 t.Fatalf("Error on publish: %v", err)
1015 }
1016 _, err = sub.NextMsg(time.Second)
1017 if err != nil {
1018 t.Fatalf("Error getting message: %v", err)
1019 }
1020
1021}
1022
1023func TestForceReconnectSubsequentCalls(t *testing.T) {
1024 s := RunDefaultServer()

Callers

nothing calls this directly

Calls 10

WaitOnChannelFunction · 0.85
ConnectMethod · 0.80
FatalfMethod · 0.80
NextMsgMethod · 0.80
ForceReconnectMethod · 0.80
RunDefaultServerFunction · 0.70
SubscribeSyncMethod · 0.65
PublishMethod · 0.65
CloseMethod · 0.45
StatusChangedMethod · 0.45

Tested by

no test coverage detected