@@ -21,39 +21,37 @@ def setup
2121 print "\n "
2222 @logger . info ( 'setup: test' )
2323 prepare_test_data
24- @clients = Array . new ( 3 ) do
25- build_client . tap { |c | c . call ( 'echo' , 'init' ) }
26- end
24+ @clients = Array . new ( 3 ) { build_client . tap { |c | c . call ( 'echo' , 'init' ) } }
2725 end
2826
2927 def teardown
3028 @logger . info ( 'teardown: test' )
3129 revive_dead_nodes
3230 @clients . each ( &:close )
3331 @controller &.close
34- refute ( @captured_commands . count ( 'cluster' , 'nodes' ) . zero? , @captured_commands . to_a . map ( &:command ) )
35- print "#{ @redirect_count . get } , " \
36- "ClusterNodesCall: #{ @captured_commands . count ( 'cluster' , 'nodes' ) } , " \
37- "ClusterDownError: #{ @cluster_down_error_count } = "
3832 end
3933
4034 def test_client_patience
35+ do_manual_failover
36+ wait_for_cluster_to_be_ready
37+ do_assertions ( offset : 0 )
38+
4139 # a replica
4240 sacrifice_replica = @controller . select_sacrifice_of_replica
4341 kill_a_node ( sacrifice_replica )
4442 wait_for_cluster_to_be_ready ( ignore : [ sacrifice_replica ] )
45- do_assertions ( offset : 0 )
43+ do_assertions ( offset : 1 )
4644
4745 # a primary
4846 sacrifice_primary = @controller . select_sacrifice_of_primary
4947 kill_a_node ( sacrifice_primary )
5048 wait_for_cluster_to_be_ready ( ignore : [ sacrifice_replica , sacrifice_primary ] )
51- do_assertions ( offset : 1 )
49+ do_assertions ( offset : 2 )
5250
5351 # recovery
5452 revive_dead_nodes
5553 wait_for_cluster_to_be_ready
56- do_assertions ( offset : 2 )
54+ do_assertions ( offset : 3 )
5755 end
5856
5957 private
@@ -77,6 +75,10 @@ def prepare_test_data
7775 end
7876
7977 def do_assertions ( offset :)
78+ @captured_commands . clear
79+ @redirect_count . clear
80+ @cluster_down_error_count = 0
81+
8082 log_info ( 'assertions' ) do
8183 log_info ( 'assertions: single' ) do
8284 NUMBER_OF_KEYS . times do |i |
@@ -122,6 +124,8 @@ def do_assertions(offset:)
122124 assert_equal ( want , got , 'Case: Transaction: SET' )
123125 end
124126 end
127+
128+ log_metrics
125129 end
126130 end
127131
@@ -139,6 +143,12 @@ def wait_for_cluster_to_be_ready(ignore: [])
139143 end
140144 end
141145
146+ def do_manual_failover
147+ log_info ( 'failover' ) do
148+ @controller . failover
149+ end
150+ end
151+
142152 def kill_a_node ( sacrifice )
143153 log_info ( "kill #{ sacrifice . config . host } :#{ sacrifice . config . port } " ) do
144154 refute_nil ( sacrifice , "#{ sacrifice . config . host } :#{ sacrifice . config . port } " )
@@ -171,6 +181,12 @@ def log_info(message)
171181 @logger . info ( " done: #{ message } " )
172182 end
173183
184+ def log_metrics
185+ print "#{ @redirect_count . get } , " \
186+ "ClusterNodesCall: #{ @captured_commands . count ( 'cluster' , 'nodes' ) } , " \
187+ "ClusterDownError: #{ @cluster_down_error_count } \n "
188+ end
189+
174190 def retryable ( attempts : MAX_ATTEMPTS , wait_sec : WAIT_SEC )
175191 loop do
176192 raise MaxRetryExceeded if attempts <= 0
0 commit comments