summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladyslav Drok <vdrok@mirantis.com>2017-02-10 20:53:33 +0200
committerVladyslav Drok <vdrok@mirantis.com>2017-02-10 20:53:33 +0200
commitdd2a85af09f4274f95466c657f85e0e08f52903e (patch)
treeee735347ae76fce47da3a5946b30e55b055724f1
parent03cd4c4291c063dd07973089662e8f430ae9ef51 (diff)
downloadironic-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.py5
-rw-r--r--ironic/tests/unit/drivers/third_party_driver_mocks.py15
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