Merge "ironic/tests/drivers/amt: Add autospec=True to mocks"

This commit is contained in:
Jenkins 2015-04-23 16:44:25 +00:00 committed by Gerrit Code Review
commit 00c0499838
4 changed files with 72 additions and 58 deletions

View File

@ -25,6 +25,7 @@ from ironic.tests import base
from ironic.tests.db import base as db_base
from ironic.tests.db import utils as db_utils
from ironic.tests.drivers.drac import utils as test_utils
from ironic.tests.drivers import third_party_driver_mock_specs as mock_specs
from ironic.tests.objects import utils as obj_utils
INFO_DICT = db_utils.get_test_amt_info()
@ -75,7 +76,7 @@ class AMTCommonMethodsTestCase(db_base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
amt_common.parse_driver_info, self.node)
@mock.patch.object(amt_common, 'Client')
@mock.patch.object(amt_common, 'Client', autospec=True)
def test_get_wsman_client(self, mock_client):
info = amt_common.parse_driver_info(self.node)
amt_common.get_wsman_client(self.node)
@ -103,7 +104,7 @@ class AMTCommonMethodsTestCase(db_base.DbTestCase):
mock_doc, 'namespace', 'test_element')
@mock.patch.object(amt_common, 'pywsman')
@mock.patch.object(amt_common, 'pywsman', spec_set=mock_specs.PYWSMAN_SPEC)
class AMTCommonClientTestCase(base.TestCase):
def setUp(self):
super(AMTCommonClientTestCase, self).setUp()
@ -143,7 +144,7 @@ class AMTCommonClientTestCase(base.TestCase):
mock_pywsman = mock_client_pywsman.Client.return_value
mock_pywsman.invoke.return_value = mock_doc
method = 'ChangeBootOrder'
options = mock.Mock()
options = mock.Mock(spec_set=[])
client = amt_common.Client(**self.info)
doc = None
client.wsman_invoke(options, namespace, method, doc)
@ -161,7 +162,7 @@ class AMTCommonClientTestCase(base.TestCase):
mock_pywsman = mock_client_pywsman.Client.return_value
mock_pywsman.invoke.return_value = mock_doc
method = 'fake-method'
options = mock.Mock()
options = mock.Mock(spec_set=[])
client = amt_common.Client(**self.info)

View File

@ -28,13 +28,14 @@ from ironic.tests.conductor import utils as mgr_utils
from ironic.tests.db import base as db_base
from ironic.tests.db import utils as db_utils
from ironic.tests.drivers.drac import utils as test_utils
from ironic.tests.drivers import third_party_driver_mock_specs as mock_specs
from ironic.tests.objects import utils as obj_utils
INFO_DICT = db_utils.get_test_amt_info()
CONF = cfg.CONF
@mock.patch.object(amt_common, 'pywsman')
@mock.patch.object(amt_common, 'pywsman', spec_set=mock_specs.PYWSMAN_SPEC)
class AMTManagementInteralMethodsTestCase(db_base.DbTestCase):
def setUp(self):
@ -127,14 +128,14 @@ class AMTManagementTestCase(db_base.DbTestCase):
shared=True) as task:
self.assertEqual(expected, task.driver.get_properties())
@mock.patch.object(amt_common, 'parse_driver_info')
@mock.patch.object(amt_common, 'parse_driver_info', autospec=True)
def test_validate(self, mock_drvinfo):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
task.driver.management.validate(task)
mock_drvinfo.assert_called_once_with(task.node)
@mock.patch.object(amt_common, 'parse_driver_info')
@mock.patch.object(amt_common, 'parse_driver_info', autospec=True)
def test_validate_fail(self, mock_drvinfo):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
@ -177,8 +178,8 @@ class AMTManagementTestCase(db_base.DbTestCase):
task.driver.management.set_boot_device,
task, 'fake-device')
@mock.patch.object(amt_mgmt, '_enable_boot_config')
@mock.patch.object(amt_mgmt, '_set_boot_device_order')
@mock.patch.object(amt_mgmt, '_enable_boot_config', autospec=True)
@mock.patch.object(amt_mgmt, '_set_boot_device_order', autospec=True)
def test_ensure_next_boot_device_one_time(self, mock_sbdo, mock_ebc):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
@ -192,8 +193,8 @@ class AMTManagementTestCase(db_base.DbTestCase):
mock_sbdo.assert_called_once_with(task.node, device)
mock_ebc.assert_called_once_with(task.node)
@mock.patch.object(amt_mgmt, '_enable_boot_config')
@mock.patch.object(amt_mgmt, '_set_boot_device_order')
@mock.patch.object(amt_mgmt, '_enable_boot_config', autospec=True)
@mock.patch.object(amt_mgmt, '_set_boot_device_order', autospec=True)
def test_ensure_next_boot_device_persistent(self, mock_sbdo, mock_ebc):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:

View File

@ -48,7 +48,7 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
CONF.set_override('max_attempts', 2, 'amt')
CONF.set_override('action_wait', 0, 'amt')
@mock.patch.object(amt_common, 'get_wsman_client')
@mock.patch.object(amt_common, 'get_wsman_client', autospec=True)
def test__set_power_state(self, mock_client_pywsman):
namespace = resource_uris.CIM_PowerManagementService
mock_client = mock_client_pywsman.return_value
@ -56,7 +56,7 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
mock_client.wsman_invoke.assert_called_once_with(mock.ANY,
namespace, 'RequestPowerStateChange', mock.ANY)
@mock.patch.object(amt_common, 'get_wsman_client')
@mock.patch.object(amt_common, 'get_wsman_client', autospec=True)
def test__set_power_state_fail(self, mock_client_pywsman):
mock_client = mock_client_pywsman.return_value
mock_client.wsman_invoke.side_effect = exception.AMTFailure('x')
@ -64,7 +64,7 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
amt_power._set_power_state,
self.node, states.POWER_ON)
@mock.patch.object(amt_common, 'get_wsman_client')
@mock.patch.object(amt_common, 'get_wsman_client', autospec=True)
def test__power_status(self, mock_gwc):
namespace = resource_uris.CIM_AssociatedPowerManagementService
result_xml = test_utils.build_soap_xml([{'PowerState':
@ -94,7 +94,7 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
self.assertEqual(
states.ERROR, amt_power._power_status(self.node))
@mock.patch.object(amt_common, 'get_wsman_client')
@mock.patch.object(amt_common, 'get_wsman_client', autospec=True)
def test__power_status_fail(self, mock_gwc):
mock_client = mock_gwc.return_value
mock_client.wsman_get.side_effect = exception.AMTFailure('x')
@ -102,30 +102,32 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
amt_power._power_status,
self.node)
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device')
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_set_power_state')
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device',
autospec=True)
@mock.patch.object(amt_power, '_power_status', autospec=True)
@mock.patch.object(amt_power, '_set_power_state', autospec=True)
def test__set_and_wait_power_on_with_boot_device(self, mock_sps,
mock_ps, mock_snbd):
mock_ps, mock_enbd):
target_state = states.POWER_ON
boot_device = boot_devices.PXE
mock_ps.side_effect = [states.POWER_OFF, states.POWER_ON]
mock_snbd.return_value = None
mock_ps.side_effect = iter([states.POWER_OFF, states.POWER_ON])
mock_enbd.return_value = None
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
task.node.driver_internal_info['amt_boot_device'] = boot_device
self.assertEqual(states.POWER_ON,
amt_power._set_and_wait(task, target_state))
mock_snbd.assert_called_with(task.node, boot_devices.PXE)
result = amt_power._set_and_wait(task, target_state)
self.assertEqual(states.POWER_ON, result)
mock_enbd.assert_called_with(task.driver.management, task.node,
boot_devices.PXE)
mock_sps.assert_called_once_with(task.node, states.POWER_ON)
mock_ps.assert_called_with(task.node)
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_set_power_state')
@mock.patch.object(amt_power, '_power_status', autospec=True)
@mock.patch.object(amt_power, '_set_power_state', autospec=True)
def test__set_and_wait_power_on_without_boot_device(self, mock_sps,
mock_ps):
target_state = states.POWER_ON
mock_ps.side_effect = [states.POWER_OFF, states.POWER_ON]
mock_ps.side_effect = iter([states.POWER_OFF, states.POWER_ON])
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
self.assertEqual(states.POWER_ON,
@ -135,7 +137,7 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
boot_device = boot_devices.DISK
self.node.driver_internal_info['amt_boot_device'] = boot_device
mock_ps.side_effect = [states.POWER_OFF, states.POWER_ON]
mock_ps.side_effect = iter([states.POWER_OFF, states.POWER_ON])
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
self.assertEqual(states.POWER_ON,
@ -150,13 +152,13 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
self.assertRaises(exception.InvalidParameterValue,
amt_power._set_and_wait, task, target_state)
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_set_power_state')
@mock.patch.object(amt_power, '_power_status', autospec=True)
@mock.patch.object(amt_power, '_set_power_state', autospec=True)
def test__set_and_wait_exceed_iterations(self, mock_sps,
mock_ps):
target_state = states.POWER_ON
mock_ps.side_effect = [states.POWER_OFF, states.POWER_OFF,
states.POWER_OFF]
mock_ps.side_effect = iter([states.POWER_OFF, states.POWER_OFF,
states.POWER_OFF])
mock_sps.return_value = exception.AMTFailure('x')
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
@ -166,21 +168,21 @@ class AMTPowerInteralMethodsTestCase(db_base.DbTestCase):
mock_ps.assert_called_with(task.node)
self.assertEqual(3, mock_ps.call_count)
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_power_status', autospec=True)
def test__set_and_wait_already_target_state(self, mock_ps):
target_state = states.POWER_ON
mock_ps.side_effect = [states.POWER_ON]
mock_ps.side_effect = iter([states.POWER_ON])
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
self.assertEqual(states.POWER_ON,
amt_power._set_and_wait(task, target_state))
mock_ps.assert_called_with(task.node)
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_set_power_state')
@mock.patch.object(amt_power, '_power_status', autospec=True)
@mock.patch.object(amt_power, '_set_power_state', autospec=True)
def test__set_and_wait_power_off(self, mock_sps, mock_ps):
target_state = states.POWER_OFF
mock_ps.side_effect = [states.POWER_ON, states.POWER_OFF]
mock_ps.side_effect = iter([states.POWER_ON, states.POWER_OFF])
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
self.assertEqual(states.POWER_OFF,
@ -205,14 +207,14 @@ class AMTPowerTestCase(db_base.DbTestCase):
shared=True) as task:
self.assertEqual(expected, task.driver.get_properties())
@mock.patch.object(amt_common, 'parse_driver_info')
@mock.patch.object(amt_common, 'parse_driver_info', autospec=True)
def test_validate(self, mock_drvinfo):
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)
@mock.patch.object(amt_common, 'parse_driver_info')
@mock.patch.object(amt_common, 'parse_driver_info', autospec=True)
def test_validate_fail(self, mock_drvinfo):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
@ -221,7 +223,7 @@ class AMTPowerTestCase(db_base.DbTestCase):
task.driver.power.validate,
task)
@mock.patch.object(amt_power, '_power_status')
@mock.patch.object(amt_power, '_power_status', autospec=True)
def test_get_power_state(self, mock_ps):
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
@ -230,7 +232,7 @@ class AMTPowerTestCase(db_base.DbTestCase):
task.driver.power.get_power_state(task))
mock_ps.assert_called_once_with(task.node)
@mock.patch.object(amt_power, '_set_and_wait')
@mock.patch.object(amt_power, '_set_and_wait', autospec=True)
def test_set_power_state(self, mock_saw):
with task_manager.acquire(self.context, self.node.uuid,
shared=False) as task:
@ -239,7 +241,7 @@ class AMTPowerTestCase(db_base.DbTestCase):
task.driver.power.set_power_state(task, pstate)
mock_saw.assert_called_once_with(task, pstate)
@mock.patch.object(amt_power, '_set_and_wait')
@mock.patch.object(amt_power, '_set_and_wait', autospec=True)
def test_set_power_state_fail(self, mock_saw):
with task_manager.acquire(self.context, self.node.uuid,
shared=False) as task:
@ -250,11 +252,11 @@ class AMTPowerTestCase(db_base.DbTestCase):
task, pstate)
mock_saw.assert_called_once_with(task, pstate)
@mock.patch.object(amt_power, '_set_and_wait')
@mock.patch.object(amt_power, '_set_and_wait', autospec=True)
def test_reboot(self, mock_saw):
with task_manager.acquire(self.context, self.node.uuid,
shared=False) as task:
task.driver.power.reboot(task)
calls = [mock.call(task, states.POWER_OFF),
mock.call(task, states.POWER_ON)]
mock_saw.has_calls(calls)
mock_saw.assert_has_calls(calls)

View File

@ -53,8 +53,9 @@ class AMTPXEVendorPassthruTestCase(db_base.DbTestCase):
self.assertIsInstance(driver_routes, dict)
self.assertEqual(sorted(expected), sorted(list(driver_routes)))
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device')
@mock.patch.object(pxe.VendorPassthru, 'pass_deploy_info')
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device',
autospec=True)
@mock.patch.object(pxe.VendorPassthru, 'pass_deploy_info', autospec=True)
def test_vendorpassthru_pass_deploy_info_netboot(self,
mock_pxe_vendorpassthru,
mock_ensure):
@ -67,11 +68,14 @@ class AMTPXEVendorPassthruTestCase(db_base.DbTestCase):
"boot_option": "netboot"
}
task.driver.vendor.pass_deploy_info(task, **kwargs)
mock_ensure.assert_called_with(task.node, boot_devices.PXE)
mock_pxe_vendorpassthru.assert_called_once_with(task, **kwargs)
mock_ensure.assert_called_with(
task.driver.management, task.node, boot_devices.PXE)
mock_pxe_vendorpassthru.assert_called_once_with(
task.driver.vendor, task, **kwargs)
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device')
@mock.patch.object(pxe.VendorPassthru, 'pass_deploy_info')
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device',
autospec=True)
@mock.patch.object(pxe.VendorPassthru, 'pass_deploy_info', autospec=True)
def test_vendorpassthru_pass_deploy_info_localboot(self,
mock_pxe_vendorpassthru,
mock_ensure):
@ -83,10 +87,12 @@ class AMTPXEVendorPassthruTestCase(db_base.DbTestCase):
task.node.instance_info['capabilities'] = {"boot_option": "local"}
task.driver.vendor.pass_deploy_info(task, **kwargs)
self.assertFalse(mock_ensure.called)
mock_pxe_vendorpassthru.assert_called_once_with(task, **kwargs)
mock_pxe_vendorpassthru.assert_called_once_with(
task.driver.vendor, task, **kwargs)
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device')
@mock.patch.object(pxe.VendorPassthru, 'continue_deploy')
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device',
autospec=True)
@mock.patch.object(pxe.VendorPassthru, 'continue_deploy', autospec=True)
def test_vendorpassthru_continue_deploy_netboot(self,
mock_pxe_vendorpassthru,
mock_ensure):
@ -99,11 +105,14 @@ class AMTPXEVendorPassthruTestCase(db_base.DbTestCase):
"boot_option": "netboot"
}
task.driver.vendor.continue_deploy(task, **kwargs)
mock_ensure.assert_called_with(task.node, boot_devices.PXE)
mock_pxe_vendorpassthru.assert_called_once_with(task, **kwargs)
mock_ensure.assert_called_with(
task.driver.management, task.node, boot_devices.PXE)
mock_pxe_vendorpassthru.assert_called_once_with(
task.driver.vendor, task, **kwargs)
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device')
@mock.patch.object(pxe.VendorPassthru, 'continue_deploy')
@mock.patch.object(amt_mgmt.AMTManagement, 'ensure_next_boot_device',
autospec=True)
@mock.patch.object(pxe.VendorPassthru, 'continue_deploy', autospec=True)
def test_vendorpassthru_continue_deploy_localboot(self,
mock_pxe_vendorpassthru,
mock_ensure):
@ -115,4 +124,5 @@ class AMTPXEVendorPassthruTestCase(db_base.DbTestCase):
task.node.instance_info['capabilities'] = {"boot_option": "local"}
task.driver.vendor.continue_deploy(task, **kwargs)
self.assertFalse(mock_ensure.called)
mock_pxe_vendorpassthru.assert_called_once_with(task, **kwargs)
mock_pxe_vendorpassthru.assert_called_once_with(
task.driver.vendor, task, **kwargs)