summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulia Kreger <juliaashleykreger@gmail.com>2019-04-04 13:43:17 -0700
committerJulia Kreger <juliaashleykreger@gmail.com>2019-04-09 19:34:15 -0700
commit3fce1a54a221cb556abddbe2d44e49521054496f (patch)
treecb9a8962642a34a2469f4d5d30e45f973f64f3ce
parentd2d08c06a8f662855bb984f1c98989fb498d6e28 (diff)
downloadironic-3fce1a54a221cb556abddbe2d44e49521054496f.tar.gz
Split ibmc power/reboot classes
We've seen some fun things in the past with the test runner and things like sleep getting mocked in the background resulting in some odd behaviors when multiple tests are iterating and performing calls. Since that is the case, and we've seen the ibmc reboot test case sporatically fail, lets try splitting the reboot testing into its own test class which results in a different runner thread and some minor restructuring to limit variables. Change-Id: I2051995cc7080ba42aedb57816ab8f63154c7f51
-rw-r--r--ironic/tests/unit/drivers/modules/ibmc/test_power.py73
1 files changed, 37 insertions, 36 deletions
diff --git a/ironic/tests/unit/drivers/modules/ibmc/test_power.py b/ironic/tests/unit/drivers/modules/ibmc/test_power.py
index 39c5c78d9..b0843022e 100644
--- a/ironic/tests/unit/drivers/modules/ibmc/test_power.py
+++ b/ironic/tests/unit/drivers/modules/ibmc/test_power.py
@@ -174,47 +174,56 @@ class IBMCPowerTestCase(base.IBMCTestCase):
connect_ibmc.assert_called_with(**self.ibmc)
conn.system.reset.assert_called_once_with(constants.RESET_ON)
+ def test_get_supported_power_states(self):
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ supported_power_states = (
+ task.driver.power.get_supported_power_states(task))
+ self.assertEqual(sorted(list(mappings.SET_POWER_STATE_MAP)),
+ sorted(supported_power_states))
+
+
+@mock.patch('eventlet.greenthread.sleep', lambda _t: None)
+class IBMCPowerRebootTestCase(base.IBMCTestCase):
+
@mock.patch.object(ibmc_client, 'connect', autospec=True)
def test_reboot(self, connect_ibmc):
conn = self.mock_ibmc_conn(connect_ibmc)
- with task_manager.acquire(self.context, self.node.uuid,
- shared=False) as task:
- self.config(power_state_change_timeout=2, group='conductor')
- expected_values = [
- (constants.SYSTEM_POWER_STATE_OFF, constants.RESET_ON),
- (constants.SYSTEM_POWER_STATE_ON,
- constants.RESET_FORCE_RESTART)
+ expected_values = [
+ (constants.SYSTEM_POWER_STATE_OFF, constants.RESET_ON),
+ (constants.SYSTEM_POWER_STATE_ON,
+ constants.RESET_FORCE_RESTART)
+ ]
+
+ # for (expect_state, reset_type) in state_mapping.items():
+ for current, reset_type in expected_values:
+ mock_system_get_results = [
+ # Initial state
+ mock.Mock(power_state=current),
+ # Transient state - powering off
+ mock.Mock(power_state=constants.SYSTEM_POWER_STATE_OFF),
+ # Final state - down powering off
+ mock.Mock(power_state=constants.SYSTEM_POWER_STATE_ON)
]
-
- # for (expect_state, reset_type) in state_mapping.items():
- for current, reset_type in expected_values:
- mock_system_get_results = [
- # Initial state
- mock.Mock(power_state=current),
- # Transient state - powering off
- mock.Mock(power_state=constants.SYSTEM_POWER_STATE_OFF),
- # Final state - down powering off
- mock.Mock(power_state=constants.SYSTEM_POWER_STATE_ON)
- ]
- conn.system.get.side_effect = mock_system_get_results
-
+ conn.system.get.side_effect = mock_system_get_results
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=False) as task:
task.driver.power.reboot(task)
- # Asserts
- connect_ibmc.assert_called_with(**self.ibmc)
- conn.system.reset.assert_called_once_with(reset_type)
+ # Asserts
+ connect_ibmc.assert_called_with(**self.ibmc)
+ conn.system.reset.assert_called_once_with(reset_type)
- # Reset Mocks
- connect_ibmc.reset_mock()
- conn.system.get.reset_mock()
- conn.system.reset.reset_mock()
+ # Reset Mocks
+ connect_ibmc.reset_mock()
+ conn.system.get.reset_mock()
+ conn.system.reset.reset_mock()
@mock.patch.object(ibmc_client, 'connect', autospec=True)
def test_reboot_not_reached(self, connect_ibmc):
conn = self.mock_ibmc_conn(connect_ibmc)
with task_manager.acquire(self.context, self.node.uuid,
shared=False) as task:
- self.config(power_state_change_timeout=2, group='conductor')
# Mocks
conn.system.get.return_value = mock.Mock(
@@ -274,11 +283,3 @@ class IBMCPowerTestCase(base.IBMCTestCase):
connect_ibmc.assert_called_with(**self.ibmc)
conn.system.reset.assert_called_once_with(
constants.RESET_ON)
-
- def test_get_supported_power_states(self):
- with task_manager.acquire(self.context, self.node.uuid,
- shared=True) as task:
- supported_power_states = (
- task.driver.power.get_supported_power_states(task))
- self.assertEqual(sorted(list(mappings.SET_POWER_STATE_MAP)),
- sorted(supported_power_states))