def test_shutdown_mdadm_in_container(self, mock_mdadm, mock_log, mock_util, mock_time, mock_sysdev, mock_path, mock_wipe): """test clear_holders.shutdown_mdadm""" devices = ['/dev/wda1', '/dev/wda2'] spares = ['/dev/wdb1'] mock_sysdev.return_value = self.test_blockdev mock_path.return_value = self.test_blockdev mock_mdadm.md_present.return_value = False mock_mdadm.md_get_devices_list.return_value = devices mock_mdadm.md_get_spares_list.return_value = spares mock_mdadm.mdadm_query_detail.return_value = \ {'MD_CONTAINER': '/dev/md/imsm0'} clear_holders.shutdown_mdadm(self.test_syspath) mock_wipe.assert_called_with(self.test_blockdev, exclusive=False, mode='superblock', strict=True) mock_mdadm.set_sync_action.assert_has_calls([ mock.call(self.test_blockdev, action="idle"), mock.call(self.test_blockdev, action="frozen") ]) mock_mdadm.mdadm_stop.assert_called_with(self.test_blockdev) mock_mdadm.md_present.assert_called_with(self.test_blockdev) self.assertTrue(mock_log.debug.called)
def test_shutdown_mdadm(self, mock_mdadm, mock_log, mock_util, mock_time, mock_sysdev, mock_path, mock_wipe): """test clear_holders.shutdown_mdadm""" devices = ['/dev/wda1', '/dev/wda2'] spares = ['/dev/wdb1'] md_devs = (devices + spares) mock_sysdev.return_value = self.test_blockdev mock_path.return_value = self.test_blockdev mock_mdadm.md_present.return_value = False mock_mdadm.md_get_devices_list.return_value = devices mock_mdadm.md_get_spares_list.return_value = spares mock_mdadm.md_is_in_container.return_value = False clear_holders.shutdown_mdadm(self.test_syspath) mock_wipe.assert_called_with(self.test_blockdev, exclusive=False, mode='superblock', strict=True) mock_mdadm.set_sync_action.assert_has_calls([ mock.call(self.test_blockdev, action="idle"), mock.call(self.test_blockdev, action="frozen") ]) mock_mdadm.fail_device.assert_has_calls( [mock.call(self.test_blockdev, dev) for dev in md_devs]) mock_mdadm.remove_device.assert_has_calls( [mock.call(self.test_blockdev, dev) for dev in md_devs]) mock_mdadm.zero_device.assert_has_calls( [mock.call(dev, force=True) for dev in md_devs]) mock_mdadm.mdadm_stop.assert_called_with(self.test_blockdev) mock_mdadm.md_present.assert_called_with(self.test_blockdev) self.assertTrue(mock_log.debug.called)
def test_shutdown_mdadm_fails_no_proc_mdstat(self, mock_block, mock_mdadm, mock_log, mock_util, mock_time, mock_os): """test clear_holders.shutdown_mdadm handles no /proc/mdstat""" mock_block.sysfs_to_devpath.return_value = self.test_blockdev mock_block.path_to_kname.return_value = self.test_blockdev mock_mdadm.md_present.return_value = True mock_os.path.exists.return_value = False with self.assertRaises(OSError): clear_holders.shutdown_mdadm(self.test_syspath) mock_mdadm.mdadm_stop.assert_called_with(self.test_blockdev) mock_mdadm.md_present.assert_called_with(self.test_blockdev) self.assertEqual([], mock_util.subp.call_args_list) self.assertTrue(mock_log.debug.called) self.assertTrue(mock_log.critical.called)
def test_shutdown_mdadm_fail_raises_oserror(self, mock_block, mock_mdadm, mock_log, mock_util, mock_time, mock_os): """test clear_holders.shutdown_mdadm raises OSError on failure""" mock_block.sysfs_to_devpath.return_value = self.test_blockdev mock_block.path_to_kname.return_value = self.test_blockdev mock_mdadm.md_present.return_value = True mock_util.subp.return_value = ("", "") mock_os.path.exists.return_value = True with self.assertRaises(OSError): clear_holders.shutdown_mdadm(self.test_syspath) mock_mdadm.mdadm_stop.assert_called_with(self.test_blockdev) mock_mdadm.md_present.assert_called_with(self.test_blockdev) mock_util.load_file.assert_called_with('/proc/mdstat') self.assertTrue(mock_log.debug.called) self.assertTrue(mock_log.critical.called)