diff options
author | Vladyslav Drok <vdrok@mirantis.com> | 2017-02-10 20:53:33 +0200 |
---|---|---|
committer | Vladyslav Drok <vdrok@mirantis.com> | 2017-02-10 20:53:33 +0200 |
commit | dd2a85af09f4274f95466c657f85e0e08f52903e (patch) | |
tree | ee735347ae76fce47da3a5946b30e55b055724f1 | |
parent | 03cd4c4291c063dd07973089662e8f430ae9ef51 (diff) | |
download | ironic-dd2a85af09f4274f95466c657f85e0e08f52903e.tar.gz |
Mock client initializations for irmc and oneview
This fixes an irmc test and oneview mock that were causing timeouts
in unittests with driver-requirements installed, as they were trying
to establish a connection to oneview/irmc management controller.
Change-Id: I1c01e6744064e3f0b8ed8188fb5d5edf9f544682
Closes-Bug: #1663709
-rw-r--r-- | ironic/tests/unit/drivers/modules/irmc/test_power.py | 5 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/third_party_driver_mocks.py | 15 |
2 files changed, 15 insertions, 5 deletions
diff --git a/ironic/tests/unit/drivers/modules/irmc/test_power.py b/ironic/tests/unit/drivers/modules/irmc/test_power.py index ee54970c8..5f7f85e19 100644 --- a/ironic/tests/unit/drivers/modules/irmc/test_power.py +++ b/ironic/tests/unit/drivers/modules/irmc/test_power.py @@ -260,9 +260,12 @@ class IRMCPowerInternalMethodsTestCase(db_base.DbTestCase): @mock.patch.object(irmc_power, '_wait_power_state', spec_set=True, autospec=True) + @mock.patch.object(irmc_common, 'get_irmc_client', spec_set=True, + autospec=True) @mock.patch.object(irmc_boot, 'attach_boot_iso_if_needed') def test__set_power_state_snmp_exception(self, attach_boot_iso_if_needed_mock, + get_irmc_client_mock, _wait_power_state_mock): target_state = states.SOFT_REBOOT _wait_power_state_mock.side_effect = exception.SNMPFailure( @@ -276,6 +279,8 @@ class IRMCPowerInternalMethodsTestCase(db_base.DbTestCase): target_state) attach_boot_iso_if_needed_mock.assert_called_once_with( task) + get_irmc_client_mock.return_value.assert_called_once_with( + irmc_power.STATES_MAP[target_state]) _wait_power_state_mock.assert_called_once_with( task, target_state, timeout=None) diff --git a/ironic/tests/unit/drivers/third_party_driver_mocks.py b/ironic/tests/unit/drivers/third_party_driver_mocks.py index 5c1a373e6..817fec03d 100644 --- a/ironic/tests/unit/drivers/third_party_driver_mocks.py +++ b/ironic/tests/unit/drivers/third_party_driver_mocks.py @@ -94,9 +94,6 @@ if not oneview_client: oneview_client = mock.MagicMock(spec_set=mock_specs.ONEVIEWCLIENT_SPEC) sys.modules['oneview_client'] = oneview_client sys.modules['oneview_client.client'] = oneview_client.client - sys.modules['oneview_client.client.Client'] = mock.MagicMock( - spec_set=mock_specs.ONEVIEWCLIENT_CLIENT_CLS_SPEC - ) states = mock.MagicMock( spec_set=mock_specs.ONEVIEWCLIENT_STATES_SPEC, ONEVIEW_POWER_OFF='Off', @@ -111,8 +108,16 @@ if not oneview_client: oneview_client.exceptions.OneViewException = type('OneViewException', (Exception,), {}) sys.modules['oneview_client.models'] = oneview_client.models - if 'ironic.drivers.oneview' in sys.modules: - six.moves.reload_module(sys.modules['ironic.drivers.modules.oneview']) + +oneview_client_module = importutils.try_import('oneview_client.client') +# NOTE(vdrok): Always mock the oneview client, as it tries to establish +# connection to oneview right in __init__, and stevedore does not seem to care +# about mocks when it loads a module in mock_the_extension_manager +sys.modules['oneview_client.client'].Client = mock.MagicMock( + spec_set=mock_specs.ONEVIEWCLIENT_CLIENT_CLS_SPEC +) +if 'ironic.drivers.oneview' in sys.modules: + six.moves.reload_module(sys.modules['ironic.drivers.modules.oneview']) # attempt to load the external 'python-dracclient' library, which is required |