From 5f4fe579ab9cdcaead186af351fbfb89e7565c74 Mon Sep 17 00:00:00 2001 From: Waldemar Quevedo Date: Mon, 4 Apr 2022 09:52:49 -0700 Subject: [PATCH] Add test that disables reconnect buf Signed-off-by: Waldemar Quevedo --- test/reconnect_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/reconnect_test.go b/test/reconnect_test.go index 03d6ad2b8..d1023a21d 100644 --- a/test/reconnect_test.go +++ b/test/reconnect_test.go @@ -784,3 +784,45 @@ func TestConnCloseNoCallback(t *testing.T) { t.Fatalf("%s issued a callback and it shouldn't have", what) } } + +func TestReconnectBufSizeDisable(t *testing.T) { + s := RunDefaultServer() + defer s.Shutdown() + + o := nats.GetDefaultOptions() + + // Disable buffering to always get a synchronous error when publish fails. + o.ReconnectBufSize = -1 + + dch := make(chan bool) + o.DisconnectedErrCB = func(_ *nats.Conn, _ error) { + dch <- true + } + + nc, err := o.Connect() + if err != nil { + t.Fatalf("Should have connected ok: %v", err) + } + defer nc.Close() + + err = nc.Flush() + if err != nil { + t.Fatalf("Error during flush: %v", err) + } + + // Force disconnected state. + s.Shutdown() + + if e := Wait(dch); e != nil { + t.Fatal("DisconnectedErrCB should have been triggered") + } + + msg := []byte("food") + if err := nc.Publish("foo", msg); err != nats.ErrReconnectBufExceeded { + t.Fatalf("Unexpected error: %v\n", err) + } + got, _ := nc.Buffered() + if got != 0 { + t.Errorf("Unexpected buffered bytes: %v", got) + } +}