コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)