diff options
author | Zenghui Shi <zshi@redhat.com> | 2018-05-14 13:45:55 +0800 |
---|---|---|
committer | Zenghui Shi <zshi@redhat.com> | 2018-05-17 17:41:42 +0800 |
commit | af7c6c4c2411627885ea65095c400a8c658cb3d4 (patch) | |
tree | d61bcfeda13121be6675f77e612db769f965d2a7 /ironic/tests/unit | |
parent | b118671c9825440c7d114332232628e996af18db (diff) | |
download | ironic-af7c6c4c2411627885ea65095c400a8c658cb3d4.tar.gz |
Change exception msg of BIOS caching
Indicate the continuation of cleaning steps in
BIOS caching exception msg.
Fix the unit test coverage for
test__do_node_clean_cache_bios.
This is a follow-up patch to address outstanding
comments in d01715321a484c24767f64edf77514b9609c279c
Change-Id: Ic7c61ce68319808ea7194fa8c656598a91b4394c
Story: #1712032
Diffstat (limited to 'ironic/tests/unit')
-rw-r--r-- | ironic/tests/unit/conductor/test_manager.py | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/ironic/tests/unit/conductor/test_manager.py b/ironic/tests/unit/conductor/test_manager.py index 03833859d..28fd34399 100644 --- a/ironic/tests/unit/conductor/test_manager.py +++ b/ironic/tests/unit/conductor/test_manager.py @@ -2420,33 +2420,55 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase): def test__do_node_clean_manual_network_validate_fail(self, mock_validate): self.__do_node_clean_validate_fail(mock_validate, clean_steps=[]) + @mock.patch.object(manager, 'LOG', autospec=True) + @mock.patch.object(conductor_utils, 'set_node_cleaning_steps') + @mock.patch('ironic.conductor.manager.ConductorManager.' + '_do_next_clean_step') + @mock.patch('ironic.drivers.modules.fake.FakeDeploy.prepare_cleaning') @mock.patch('ironic.drivers.modules.network.flat.FlatNetwork.validate') @mock.patch('ironic.drivers.modules.fake.FakeBIOS.cache_bios_settings') - def test__do_node_clean_cache_bios(self, mock_bios, mock_validate, - clean_steps=None): + def _test__do_node_clean_cache_bios(self, mock_bios, mock_validate, + mock_prep, mock_next_step, mock_steps, + mock_log, clean_steps=None, + enable_exception=False): + if enable_exception: + mock_bios.side_effect = exception.IronicException('test') + mock_prep.return_value = states.NOSTATE tgt_prov_state = states.MANAGEABLE if clean_steps else states.AVAILABLE node = obj_utils.create_test_node( - self.context, driver='fake', + self.context, driver='fake-hardware', provision_state=states.CLEANING, target_provision_state=tgt_prov_state) with task_manager.acquire( self.context, node.uuid, shared=False) as task: self.service._do_node_clean(task, clean_steps=clean_steps) node.refresh() - self.assertFalse(mock_bios.called) + mock_bios.assert_called_once_with(task) if clean_steps: - self.assertEqual(states.CLEANFAIL, node.provision_state) + self.assertEqual(states.CLEANING, node.provision_state) self.assertEqual(tgt_prov_state, node.target_provision_state) else: - self.assertEqual(states.AVAILABLE, node.provision_state) - self.assertEqual(states.NOSTATE, node.target_provision_state) + self.assertEqual(states.CLEANING, node.provision_state) + self.assertEqual(states.AVAILABLE, node.target_provision_state) mock_validate.assert_called_once_with(task) + if enable_exception: + mock_log.exception.assert_called_once_with( + 'Caching of bios settings failed on node {}. ' + 'Continuing with node cleaning.' + .format(node.uuid)) def test__do_node_clean_manual_cache_bios(self): - self.test__do_node_clean_cache_bios(clean_steps=[self.deploy_raid]) + self._test__do_node_clean_cache_bios(clean_steps=[self.deploy_raid]) def test__do_node_clean_automated_cache_bios(self): - self.test__do_node_clean_cache_bios() + self._test__do_node_clean_cache_bios() + + def test__do_node_clean_manual_cache_bios_exception(self): + self._test__do_node_clean_cache_bios(clean_steps=[self.deploy_raid], + enable_exception=True) + + def test__do_node_clean_automated_cache_bios_exception(self): + self._test__do_node_clean_cache_bios(enable_exception=True) @mock.patch('ironic.drivers.modules.fake.FakePower.validate') def test__do_node_clean_automated_disabled(self, mock_validate): |