summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/irmc/test_power.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/drivers/modules/irmc/test_power.py')
-rw-r--r--ironic/tests/unit/drivers/modules/irmc/test_power.py88
1 files changed, 85 insertions, 3 deletions
diff --git a/ironic/tests/unit/drivers/modules/irmc/test_power.py b/ironic/tests/unit/drivers/modules/irmc/test_power.py
index c4142202c..c2509af79 100644
--- a/ironic/tests/unit/drivers/modules/irmc/test_power.py
+++ b/ironic/tests/unit/drivers/modules/irmc/test_power.py
@@ -24,6 +24,8 @@ from ironic.conductor import task_manager
from ironic.drivers.modules.irmc import boot as irmc_boot
from ironic.drivers.modules.irmc import common as irmc_common
from ironic.drivers.modules.irmc import power as irmc_power
+from ironic.drivers.modules.redfish import power as redfish_power
+from ironic.drivers.modules.redfish import utils as redfish_util
from ironic.tests.unit.drivers.modules.irmc import test_common
@@ -289,17 +291,32 @@ class IRMCPowerTestCase(test_common.BaseIRMCTest):
for prop in irmc_common.COMMON_PROPERTIES:
self.assertIn(prop, properties)
+ @mock.patch.object(redfish_util, 'parse_driver_info', autospec=True)
@mock.patch.object(irmc_common, 'parse_driver_info', spec_set=True,
autospec=True)
- def test_validate(self, mock_drvinfo):
+ def test_validate_default(self, mock_drvinfo, redfish_parsedr_mock):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
task.driver.power.validate(task)
mock_drvinfo.assert_called_once_with(task.node)
+ redfish_parsedr_mock.assert_not_called()
+ @mock.patch.object(redfish_util, 'parse_driver_info', autospec=True)
@mock.patch.object(irmc_common, 'parse_driver_info', spec_set=True,
autospec=True)
- def test_validate_fail(self, mock_drvinfo):
+ def test_validate_ipmi(self, mock_drvinfo, redfish_parsedr_mock):
+ self.node.set_driver_internal_info('irmc_ipmi_succeed', True)
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ task.driver.power.validate(task)
+ mock_drvinfo.assert_called_once_with(task.node)
+ redfish_parsedr_mock.assert_not_called()
+
+ @mock.patch.object(redfish_util, 'parse_driver_info', autospec=True)
+ @mock.patch.object(irmc_common, 'parse_driver_info', spec_set=True,
+ autospec=True)
+ def test_validate_fail_ipmi(self, mock_drvinfo, redfish_parsedr_mock):
side_effect = exception.InvalidParameterValue("Invalid Input")
mock_drvinfo.side_effect = side_effect
with task_manager.acquire(self.context, self.node.uuid,
@@ -307,10 +324,40 @@ class IRMCPowerTestCase(test_common.BaseIRMCTest):
self.assertRaises(exception.InvalidParameterValue,
task.driver.power.validate,
task)
+ redfish_parsedr_mock.assert_not_called()
+
+ @mock.patch.object(redfish_util, 'parse_driver_info', autospec=True)
+ @mock.patch.object(irmc_common, 'parse_driver_info', spec_set=True,
+ autospec=True)
+ def test_validate_redfish(self, mock_drvinfo, redfish_parsedr_mock):
+ self.node.set_driver_internal_info('irmc_ipmi_succeed', False)
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ task.driver.power.validate(task)
+ mock_drvinfo.assert_called_once_with(task.node)
+ redfish_parsedr_mock.assert_called_once_with(task.node)
+ @mock.patch.object(redfish_util, 'parse_driver_info', autospec=True)
+ @mock.patch.object(irmc_common, 'parse_driver_info', spec_set=True,
+ autospec=True)
+ def test_validate_fail_redfish(self, mock_drvinfo, redfish_parsedr_mock):
+ self.node.set_driver_internal_info('irmc_ipmi_succeed', False)
+ self.node.save()
+ side_effect = exception.InvalidParameterValue("Invalid Input")
+ redfish_parsedr_mock.side_effect = side_effect
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ self.assertRaises(exception.InvalidParameterValue,
+ task.driver.power.validate,
+ task)
+ mock_drvinfo.assert_called_once_with(task.node)
+
+ @mock.patch.object(redfish_power.RedfishPower, 'get_power_state',
+ autospec=True)
@mock.patch('ironic.drivers.modules.irmc.power.ipmitool.IPMIPower',
spec_set=True, autospec=True)
- def test_get_power_state(self, mock_IPMIPower):
+ def test_get_power_state_default(self, mock_IPMIPower, redfish_getpw_mock):
ipmi_power = mock_IPMIPower.return_value
ipmi_power.get_power_state.return_value = states.POWER_ON
with task_manager.acquire(self.context, self.node.uuid,
@@ -318,6 +365,41 @@ class IRMCPowerTestCase(test_common.BaseIRMCTest):
self.assertEqual(states.POWER_ON,
task.driver.power.get_power_state(task))
ipmi_power.get_power_state.assert_called_once_with(task)
+ redfish_getpw_mock.assert_not_called()
+
+ @mock.patch.object(redfish_power.RedfishPower, 'get_power_state',
+ autospec=True)
+ @mock.patch('ironic.drivers.modules.irmc.power.ipmitool.IPMIPower',
+ spec_set=True, autospec=True)
+ def test_get_power_state_ipmi(self, mock_IPMIPower, redfish_getpw_mock):
+ self.node.set_driver_internal_info('irmc_ipmi_succeed', True)
+ self.node.save()
+ ipmi_power = mock_IPMIPower.return_value
+ ipmi_power.get_power_state.return_value = states.POWER_ON
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ self.assertEqual(states.POWER_ON,
+ task.driver.power.get_power_state(task))
+ ipmi_power.get_power_state.assert_called_once_with(task)
+ redfish_getpw_mock.assert_not_called()
+
+ @mock.patch.object(redfish_power.RedfishPower, 'get_power_state',
+ autospec=True)
+ @mock.patch('ironic.drivers.modules.irmc.power.ipmitool.IPMIPower',
+ spec_set=True, autospec=True)
+ def test_get_power_state_redfish(self, mock_IPMIPower, redfish_getpw_mock):
+ self.node.set_driver_internal_info('irmc_ipmi_succeed', False)
+ self.node.save()
+ ipmipw_instance = mock_IPMIPower()
+ ipmipw_instance.get_power_state.side_effect = exception.IPMIFailure
+ redfish_getpw_mock.return_value = states.POWER_ON
+ irmc_power_inst = irmc_power.IRMCPower()
+ with task_manager.acquire(self.context, self.node.uuid,
+ shared=True) as task:
+ self.assertEqual(states.POWER_ON,
+ irmc_power_inst.get_power_state(task))
+ ipmipw_instance.get_power_state.assert_called()
+ redfish_getpw_mock.assert_called_once_with(irmc_power_inst, task)
@mock.patch.object(irmc_power, '_set_power_state', spec_set=True,
autospec=True)