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

Function TestClosedHandlerOnConnectionClose

test/sub_test.go:1873–1936  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1871}
1872
1873func TestClosedHandlerOnConnectionClose(t *testing.T) {
1874 s := RunDefaultServer()
1875 defer s.Shutdown()
1876
1877 closedHandlerCalled := make(chan struct{}, 1)
1878
1879 t.Run("subscribe", func(t *testing.T) {
1880 nc, err := nats.Connect(s.ClientURL())
1881 if err != nil {
1882 t.Fatalf("Unexpected error: %v", err)
1883 }
1884 sub, err := nc.Subscribe("test.subject", func(m *nats.Msg) {})
1885 if err != nil {
1886 t.Fatalf("Unexpected error: %v", err)
1887 }
1888
1889 sub.SetClosedHandler(func(subject string) {
1890 closedHandlerCalled <- struct{}{}
1891 })
1892
1893 nc.Close()
1894
1895 WaitOnChannel(t, closedHandlerCalled, struct{}{})
1896 })
1897
1898 t.Run("chan subscribe", func(t *testing.T) {
1899 nc, err := nats.Connect(s.ClientURL())
1900 if err != nil {
1901 t.Fatalf("Unexpected error: %v", err)
1902 }
1903 msgCh := make(chan *nats.Msg, 64)
1904 sub, err := nc.ChanSubscribe("test.subject", msgCh)
1905 if err != nil {
1906 t.Fatalf("Unexpected error: %v", err)
1907 }
1908
1909 sub.SetClosedHandler(func(subject string) {
1910 closedHandlerCalled <- struct{}{}
1911 })
1912
1913 nc.Close()
1914
1915 WaitOnChannel(t, closedHandlerCalled, struct{}{})
1916 })
1917
1918 t.Run("sync subscribe", func(t *testing.T) {
1919 nc, err := nats.Connect(s.ClientURL())
1920 if err != nil {
1921 t.Fatalf("Unexpected error: %v", err)
1922 }
1923 sub, err := nc.SubscribeSync("test.subject")
1924 if err != nil {
1925 t.Fatalf("Unexpected error: %v", err)
1926 }
1927
1928 sub.SetClosedHandler(func(subject string) {
1929 closedHandlerCalled <- struct{}{}
1930 })

Callers

nothing calls this directly

Calls 9

WaitOnChannelFunction · 0.85
ConnectMethod · 0.80
FatalfMethod · 0.80
RunDefaultServerFunction · 0.70
SubscribeMethod · 0.65
ChanSubscribeMethod · 0.65
SubscribeSyncMethod · 0.65
SetClosedHandlerMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected