(t *testing.T)
| 1871 | } |
| 1872 | |
| 1873 | func 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 | }) |
nothing calls this directly
no test coverage detected