(t *testing.T)
| 966 | } |
| 967 | |
| 968 | func 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 | |
| 1023 | func TestForceReconnectSubsequentCalls(t *testing.T) { |
| 1024 | s := RunDefaultServer() |
nothing calls this directly
no test coverage detected