@@ -147,13 +147,13 @@ def test_check_devices_metadata_consistent_multiple_devices_consistent(self, moc
147147 self .assertTrue (result )
148148
149149 @patch ('crmsh.sbd.SBDUtils.get_sbd_device_metadata' )
150- @patch ('logging.Logger.warning ' )
151- def test_check_devices_metadata_consistent_multiple_devices_inconsistent (self , mock_logger_warning , mock_get_sbd_device_metadata ):
150+ @patch ('logging.Logger.error ' )
151+ def test_check_devices_metadata_consistent_multiple_devices_inconsistent (self , mock_logger_error , mock_get_sbd_device_metadata ):
152152 dev_list = ['/dev/sbd_device1' , '/dev/sbd_device2' ]
153153 mock_get_sbd_device_metadata .side_effect = ['metadata1' , 'metadata2' ]
154154 result = SBDUtils .check_devices_metadata_consistent (dev_list )
155155 self .assertFalse (result )
156- mock_logger_warning . assert_called ( )
156+ mock_logger_error . assert_called_once_with ( "Device %s doesn't have the same metadata as %s" , '/dev/sbd_device2' , '/dev/sbd_device1' )
157157
158158 @patch ('crmsh.sbd.SBDUtils.check_devices_metadata_consistent' )
159159 @patch ('crmsh.sbd.SBDUtils.no_overwrite_device_check' )
@@ -206,7 +206,7 @@ def test_get_sbd_systemd_start_timeout(self, mock_cluster_shell, mock_get_system
206206 mock_get_systemd_timeout_start_in_sec .return_value = 90
207207 result = sbd .SBDTimeout .get_sbd_systemd_start_timeout ()
208208 self .assertEqual (result , 90 )
209- mock_cluster_shell .return_value .get_stdout_or_raise_error .assert_called_once_with (sbd .SBDTimeout .SHOW_SBD_START_TIMEOUT_CMD )
209+ mock_cluster_shell .return_value .get_stdout_or_raise_error .assert_called_once_with (sbd .SBDTimeout .SHOW_SBD_START_TIMEOUT_CMD , None )
210210 mock_get_systemd_timeout_start_in_sec .assert_called_once_with ("1min 30s" )
211211
212212 @patch ('crmsh.corosync.token_and_consensus_timeout' )
@@ -263,73 +263,89 @@ def setUp(self):
263263 self .instance_check = sbd .SBDTimeoutChecker (fix = False )
264264 self .instance_fix = sbd .SBDTimeoutChecker (fix = True )
265265
266- @patch ('logging.Logger.warning' )
267266 @patch ('crmsh.sbd.ServiceManager' )
268- def test_check_and_fix_sbd_not_active (self , mock_service_manager , mock_logger_warning ):
267+ def test_check_and_fix_sbd_not_active (self , mock_service_manager ):
269268 mock_service_manager_inst = Mock ()
270269 mock_service_manager .return_value = mock_service_manager_inst
271270 mock_service_manager_inst .service_is_active = Mock (return_value = False )
272- with self .assertRaises (utils . TerminateSubCommand ):
271+ with self .assertRaises (sbd . FixAborted ) as context :
273272 self .instance_check .check_and_fix ()
273+ self .assertTrue ("sbd.service is not active" in str (context .exception ))
274274 mock_service_manager_inst .service_is_active .assert_called_once_with (constants .SBD_SERVICE )
275- mock_logger_warning .assert_called_once_with ('%s is not active, skip SBD timeout checks' , constants .SBD_SERVICE )
276275
276+ @patch ('crmsh.utils.list_cluster_nodes_except_me' )
277+ @patch ('crmsh.utils.check_all_nodes_reachable' )
277278 @patch ('crmsh.sbd.ServiceManager' )
278- def test_check_and_fix_sbd_inconsistent (self , mock_service_manager ):
279+ def test_check_and_fix_sbd_inconsistent (self , mock_service_manager , mock_check_all_nodes_reachable , mock_list_cluster_nodes_except_me ):
279280 mock_service_manager_inst = Mock ()
280281 mock_service_manager .return_value = mock_service_manager_inst
281282 mock_service_manager_inst .service_is_active = Mock (return_value = True )
282283 self .instance_check ._check_config_consistency = Mock (return_value = False )
283- with self .assertRaises (utils . TerminateSubCommand ):
284+ with self .assertRaises (sbd . FixAborted ):
284285 self .instance_check .check_and_fix ()
285286 mock_service_manager_inst .service_is_active .assert_called_once_with (constants .SBD_SERVICE )
286287 self .instance_check ._check_config_consistency .assert_called_once ()
287288
289+ @patch ('crmsh.utils.list_cluster_nodes_except_me' )
290+ @patch ('crmsh.utils.check_all_nodes_reachable' )
288291 @patch ('crmsh.sbd.ServiceManager' )
289- def test_check_and_fix_not_fix (self , mock_service_manager ):
292+ def test_check_and_fix_not_fix (self , mock_service_manager , mock_check_all_nodes_reachable , mock_list_cluster_nodes_except_me ):
290293 mock_service_manager_inst = Mock ()
291294 mock_service_manager .return_value = mock_service_manager_inst
292295 mock_service_manager_inst .service_is_active = Mock (return_value = True )
293296 self .instance_check ._check_config_consistency = Mock (return_value = True )
294297 self .instance_check ._load_configurations_from_runtime = Mock ()
295- self .instance_check ._check_sbd_disk_metadata = Mock (return_value = False )
296- self .instance_check ._check_sbd_watchdog_timeout = Mock (return_value = True )
297-
298- self .assertFalse (self .instance_check .check_and_fix ())
298+ self .instance_check ._check_sbd_disk_metadata = Mock (return_value = sbd .CheckResult .SUCCESS )
299+ self .instance_check ._check_sbd_device_metadata_consistency = Mock (return_value = sbd .CheckResult .SUCCESS )
300+ self .instance_check ._check_sbd_watchdog_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
301+ self .instance_check ._check_sbd_delay_start = Mock (return_value = sbd .CheckResult .SUCCESS )
302+ self .instance_check ._check_sbd_systemd_start_timeout = Mock (return_value = sbd .CheckResult .ERROR )
303+ self .instance_check ._check_stonith_watchdog_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
304+ self .instance_check ._check_stonith_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
305+ self .instance_check ._check_sbd_delay_start_unset_dropin = Mock (return_value = sbd .CheckResult .SUCCESS )
306+
307+ res = self .instance_check .check_and_fix ()
308+ self .assertEqual (res , sbd .CheckResult .ERROR )
299309
300310 mock_service_manager_inst .service_is_active .assert_called_once_with (constants .SBD_SERVICE )
301311 self .instance_check ._check_config_consistency .assert_called_once ()
302312 self .instance_check ._load_configurations_from_runtime .assert_called_once ()
303313 self .instance_check ._check_sbd_disk_metadata .assert_called_once ()
304- self .instance_check ._check_sbd_watchdog_timeout .assert_not_called ()
305314
315+ @patch ('crmsh.utils.list_cluster_nodes_except_me' )
316+ @patch ('crmsh.utils.check_all_nodes_reachable' )
306317 @patch ('crmsh.sbd.ServiceManager' )
307- def test_check_and_fix_fix_failure (self , mock_service_manager ):
318+ def test_check_and_fix_fix_failure (self , mock_service_manager , mock_check_all_nodes_reachable , mock_list_cluster_nodes_except_me ):
308319 mock_service_manager_inst = Mock ()
309320 mock_service_manager .return_value = mock_service_manager_inst
310321 mock_service_manager_inst .service_is_active = Mock (return_value = True )
311322 self .instance_fix ._check_config_consistency = Mock (return_value = True )
312323 self .instance_fix ._load_configurations_from_runtime = Mock ()
313- self .instance_fix ._check_sbd_disk_metadata = Mock (side_effect = [False , False ])
324+ self .instance_fix ._check_sbd_device_metadata_consistency = Mock (return_value = sbd .CheckResult .SUCCESS )
325+ self .instance_fix ._check_sbd_disk_metadata = Mock (side_effect = [sbd .CheckResult .ERROR , sbd .CheckResult .ERROR ])
314326 self .instance_fix ._fix_sbd_disk_metadata = Mock ()
315327
316328 with self .assertRaises (sbd .FixFailure ) as context :
317329 self .instance_fix .check_and_fix ()
318330 self .assertTrue ("Failed to fix SBD disk metadata" in str (context .exception ))
319331
332+ @patch ('crmsh.utils.list_cluster_nodes_except_me' )
333+ @patch ('crmsh.utils.check_all_nodes_reachable' )
320334 @patch ('crmsh.sbd.ServiceManager' )
321- def test_check_and_fix_fix_success (self , mock_service_manager ):
335+ def test_check_and_fix_fix_success (self , mock_service_manager , mock_check_all_nodes_reachable , mock_list_cluster_nodes_except_me ):
322336 mock_service_manager_inst = Mock ()
323337 mock_service_manager .return_value = mock_service_manager_inst
324338 mock_service_manager_inst .service_is_active = Mock (return_value = True )
325339 self .instance_fix ._check_config_consistency = Mock (return_value = True )
326340 self .instance_fix ._load_configurations_from_runtime = Mock ()
341+ self .instance_fix ._check_sbd_device_metadata_consistency = Mock (return_value = sbd .CheckResult .SUCCESS )
327342 self .instance_fix ._check_sbd_disk_metadata = Mock (return_value = sbd .CheckResult .SUCCESS )
328343 self .instance_fix ._check_sbd_watchdog_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
329344 self .instance_fix ._check_sbd_delay_start = Mock (return_value = sbd .CheckResult .SUCCESS )
330345 self .instance_fix ._check_sbd_systemd_start_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
331346 self .instance_fix ._check_stonith_watchdog_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
332347 self .instance_fix ._check_stonith_timeout = Mock (return_value = sbd .CheckResult .SUCCESS )
348+ self .instance_fix ._check_sbd_delay_start_unset_dropin = Mock (return_value = sbd .CheckResult .SUCCESS )
333349
334350 res = self .instance_fix .check_and_fix ()
335351 self .assertEqual (res , sbd .CheckResult .SUCCESS )
@@ -343,29 +359,24 @@ def test_check_and_fix_fix_success(self, mock_service_manager):
343359 self .instance_fix ._check_sbd_systemd_start_timeout .assert_called_once ()
344360 self .instance_fix ._check_stonith_watchdog_timeout .assert_called_once ()
345361 self .instance_fix ._check_stonith_timeout .assert_called_once ()
362+ self .instance_fix ._check_sbd_delay_start_unset_dropin .assert_called_once ()
346363
347- @patch ('crmsh.sbd.SBDUtils.check_devices_metadata_consistent' )
348- @patch ('crmsh.sbd.SBDUtils.get_sbd_device_from_config' )
349364 @patch ('logging.Logger.error' )
350365 @patch ('logging.Logger.warning' )
351366 @patch ('crmsh.utils.remote_diff_this' )
352367 @patch ('crmsh.corosync.conf' )
353- @patch ('crmsh.utils.list_cluster_nodes_except_me' )
354368 @patch ('crmsh.utils.this_node' )
355- def test_check_config_consistency (self , mock_this_node , mock_list_cluster_nodes_except_me , mock_corosync_conf , mock_remote_diff_this , mock_logger_warning , mock_logger_error , mock_get_sbd_device_from_config , mock_check_devices_metadata_consistent ):
369+ def test_check_config_consistency (self , mock_this_node , mock_corosync_conf , mock_remote_diff_this , mock_logger_warning , mock_logger_error ):
356370 mock_this_node .return_value = 'node1'
357- mock_list_cluster_nodes_except_me .return_value = ['node2' , 'node3' ]
358371 mock_corosync_conf .return_value = "corosync.conf"
359372 mock_remote_diff_this .side_effect = ["diff data1" , "diff data2" ]
360- mock_get_sbd_device_from_config .return_value = ['/dev/sbd_device' ]
361- mock_check_devices_metadata_consistent .return_value = False
373+ self .instance_check .peer_node_list = ["node2" , "node3" ]
362374
363375 self .assertFalse (self .instance_check ._check_config_consistency ())
364376
365377 mock_logger_error .assert_has_calls ([
366- call ('corosync.conf is not consistent across cluster nodes' ),
378+ call ('%s is not consistent across cluster nodes' , "corosync.conf" ),
367379 call ('%s is not consistent across cluster nodes' , sbd .SBDManager .SYSCONFIG_SBD ),
368- call ('SBD device metadata is not consistent across cluster nodes' )
369380 ])
370381
371382 @patch ('logging.Logger.error' )
@@ -442,7 +453,7 @@ def test_check_sbd_systemd_start_timeout_failure(self, mock_get_sbd_systemd_star
442453 mock_get_sbd_systemd_start_timeout .return_value = 30
443454 self .instance_check .sbd_systemd_start_timeout_expected = 60
444455 self .assertEqual (self .instance_check ._check_sbd_systemd_start_timeout (), sbd .CheckResult .ERROR )
445- mock_logger_error .assert_called_once_with ("It's recommended that systemd start timeout for sbd.service is set to %ds, now is %ds" , 60 , 30 )
456+ mock_logger_error .assert_called_once_with ("It's recommended that systemd start timeout for sbd.service is set to %ds, now is %ds on node %s " , 60 , 30 , utils . this_node () )
446457
447458 @patch ('crmsh.sbd.SBDTimeout.get_sbd_systemd_start_timeout' )
448459 def test_check_sbd_systemd_start_timeout_success (self , mock_get_sbd_systemd_start_timeout ):
0 commit comments