@@ -3550,6 +3550,53 @@ func TestConnection_NewWatcher(t *testing.T) {
3550
3550
}
3551
3551
}
3552
3552
3553
+ func TestNewWatcherDuringReconnectOrAfterClose (t * testing.T ) {
3554
+ test_helpers .SkipIfWatchersUnsupported (t )
3555
+
3556
+ const server = "127.0.0.1:3015"
3557
+ testDialer := dialer
3558
+ testDialer .Address = server
3559
+
3560
+ inst , err := test_helpers .StartTarantool (test_helpers.StartOpts {
3561
+ Dialer : testDialer ,
3562
+ InitScript : "config.lua" ,
3563
+ Listen : server ,
3564
+ WaitStart : 100 * time .Millisecond ,
3565
+ ConnectRetry : 10 ,
3566
+ RetryTimeout : 500 * time .Millisecond ,
3567
+ })
3568
+ defer test_helpers .StopTarantoolWithCleanup (inst )
3569
+ if err != nil {
3570
+ t .Fatalf ("Unable to start Tarantool: %s" , err )
3571
+ }
3572
+
3573
+ ctx , cancel := test_helpers .GetConnectContext ()
3574
+ defer cancel ()
3575
+
3576
+ reconnectOpts := opts
3577
+ reconnectOpts .Reconnect = 100 * time .Millisecond
3578
+ reconnectOpts .MaxReconnects = 0
3579
+ reconnectOpts .Notify = make (chan ConnEvent )
3580
+ conn , err := Connect (ctx , testDialer , reconnectOpts )
3581
+ if err != nil {
3582
+ t .Fatalf ("Connection was not established: %v" , err )
3583
+ }
3584
+ defer conn .Close ()
3585
+ test_helpers .StopTarantool (inst )
3586
+
3587
+ for conn .ConnectedNow () {
3588
+ time .Sleep (100 * time .Millisecond )
3589
+ }
3590
+ _ , err = conn .NewWatcher ("one" , func (event WatchEvent ) {})
3591
+ assert .NotNil (t , err )
3592
+ assert .ErrorContains (t , err , "client connection is not ready" )
3593
+
3594
+ conn .Close ()
3595
+ _ , err = conn .NewWatcher ("two" , func (event WatchEvent ) {})
3596
+ assert .NotNil (t , err )
3597
+ assert .ErrorContains (t , err , "client connection is not ready" )
3598
+ }
3599
+
3553
3600
func TestConnection_NewWatcher_noWatchersFeature (t * testing.T ) {
3554
3601
test_helpers .SkipIfWatchersSupported (t )
3555
3602
0 commit comments