@@ -69,6 +69,66 @@ def test_multi_instrumentation
6969 ]
7070 end
7171
72+ def test_final_errors
73+ client = new_client ( reconnect_attempts : 1 )
74+ simulate_network_errors ( client , [ "PING" ] ) do
75+ assert_equal ( "PONG" , client . call ( "PING" ) )
76+ end
77+
78+ calls = TestMiddleware . calls . select { |type , _ | type == :call }
79+ assert_equal 2 , calls . size
80+
81+ call = calls [ 0 ]
82+ assert_equal :error , call [ 1 ]
83+ assert_equal [ "PING" ] , call [ 2 ]
84+ refute_predicate call [ 3 ] , :final?
85+
86+ call = calls [ 1 ]
87+ assert_equal :success , call [ 1 ]
88+ assert_equal [ "PING" ] , call [ 2 ]
89+
90+ TestMiddleware . calls . clear
91+
92+ client = new_client ( reconnect_attempts : 1 )
93+ simulate_network_errors ( client , [ "PING" , "PING" ] ) do
94+ assert_raises ConnectionError do
95+ client . call ( "PING" )
96+ end
97+ end
98+
99+ calls = TestMiddleware . calls . select { |type , _ | type == :call }
100+ assert_equal 2 , calls . size
101+
102+ call = calls [ 0 ]
103+ assert_equal :error , call [ 1 ]
104+ assert_equal [ "PING" ] , call [ 2 ]
105+ refute_predicate call [ 3 ] , :final?
106+
107+ call = calls [ 1 ]
108+ assert_equal :error , call [ 1 ]
109+ assert_equal [ "PING" ] , call [ 2 ]
110+ assert_predicate call [ 3 ] , :final?
111+
112+ TestMiddleware . calls . clear
113+
114+ client = new_client ( reconnect_attempts : 1 )
115+ simulate_network_errors ( client , [ "PING" ] ) do
116+ assert_raises ConnectionError do
117+ client . call_once ( "PING" )
118+ end
119+ end
120+
121+ calls = TestMiddleware . calls . select { |type , _ | type == :call }
122+ assert_equal 1 , calls . size
123+
124+ call = calls [ 0 ]
125+ assert_equal :error , call [ 1 ]
126+ assert_equal [ "PING" ] , call [ 2 ]
127+ assert_predicate call [ 3 ] , :final?
128+
129+ TestMiddleware . calls . clear
130+ end
131+
72132 module DummyMiddleware
73133 def call ( command , _config , &_ )
74134 command
0 commit comments