diff options
Diffstat (limited to 'ironic/tests/unit/drivers')
-rw-r--r-- | ironic/tests/unit/drivers/modules/ansible/test_deploy.py | 8 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/network/test_common.py | 3 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/network/test_flat.py | 1 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/network/test_noop.py | 1 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/storage/test_cinder.py | 64 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/test_deploy_utils.py | 54 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/test_fake_hardware.py (renamed from ironic/tests/unit/drivers/test_fake.py) | 20 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/test_generic.py | 6 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/test_utils.py | 63 |
9 files changed, 81 insertions, 139 deletions
diff --git a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py index 6c21dc76e..e2eacb71b 100644 --- a/ironic/tests/unit/drivers/modules/ansible/test_deploy.py +++ b/ironic/tests/unit/drivers/modules/ansible/test_deploy.py @@ -55,10 +55,10 @@ class AnsibleDeployTestCaseBase(db_base.DbTestCase): def setUp(self): super(AnsibleDeployTestCaseBase, self).setUp() - self.config(enabled_hardware_types='manual-management', - enabled_deploy_interfaces='ansible', - enabled_power_interfaces='fake', - enabled_management_interfaces='fake') + self.config(enabled_hardware_types=['manual-management'], + enabled_deploy_interfaces=['ansible'], + enabled_power_interfaces=['fake'], + enabled_management_interfaces=['fake']) node = { 'driver': 'manual-management', 'instance_info': INSTANCE_INFO, diff --git a/ironic/tests/unit/drivers/modules/network/test_common.py b/ironic/tests/unit/drivers/modules/network/test_common.py index a68867244..ac9d4e4a4 100644 --- a/ironic/tests/unit/drivers/modules/network/test_common.py +++ b/ironic/tests/unit/drivers/modules/network/test_common.py @@ -29,7 +29,6 @@ class TestCommonFunctions(db_base.DbTestCase): def setUp(self): super(TestCommonFunctions, self).setUp() - self.config(enabled_drivers=['fake']) self.node = obj_utils.create_test_node(self.context, network_interface='neutron') self.port = obj_utils.create_test_port( @@ -436,7 +435,6 @@ class TestVifPortIDMixin(db_base.DbTestCase): def setUp(self): super(TestVifPortIDMixin, self).setUp() - self.config(enabled_drivers=['fake']) self.interface = common.VIFPortIDMixin() self.node = obj_utils.create_test_node(self.context, network_interface='neutron') @@ -660,7 +658,6 @@ class TestNeutronVifPortIDMixin(db_base.DbTestCase): def setUp(self): super(TestNeutronVifPortIDMixin, self).setUp() - self.config(enabled_drivers=['fake']) self.interface = common.NeutronVIFPortIDMixin() self.node = obj_utils.create_test_node(self.context, network_interface='neutron') diff --git a/ironic/tests/unit/drivers/modules/network/test_flat.py b/ironic/tests/unit/drivers/modules/network/test_flat.py index 5cb9075ac..31462c3fb 100644 --- a/ironic/tests/unit/drivers/modules/network/test_flat.py +++ b/ironic/tests/unit/drivers/modules/network/test_flat.py @@ -30,7 +30,6 @@ class TestFlatInterface(db_base.DbTestCase): def setUp(self): super(TestFlatInterface, self).setUp() - self.config(enabled_drivers=['fake']) self.interface = flat_interface.FlatNetwork() self.node = utils.create_test_node(self.context) self.port = utils.create_test_port( diff --git a/ironic/tests/unit/drivers/modules/network/test_noop.py b/ironic/tests/unit/drivers/modules/network/test_noop.py index 0d969131e..156af25df 100644 --- a/ironic/tests/unit/drivers/modules/network/test_noop.py +++ b/ironic/tests/unit/drivers/modules/network/test_noop.py @@ -20,7 +20,6 @@ class NoopInterfaceTestCase(db_base.DbTestCase): def setUp(self): super(NoopInterfaceTestCase, self).setUp() - self.config(enabled_drivers=['fake']) self.interface = noop.NoopNetwork() self.node = utils.create_test_node(self.context, network_interface='noop') diff --git a/ironic/tests/unit/drivers/modules/storage/test_cinder.py b/ironic/tests/unit/drivers/modules/storage/test_cinder.py index afcfada42..b2f6a4553 100644 --- a/ironic/tests/unit/drivers/modules/storage/test_cinder.py +++ b/ironic/tests/unit/drivers/modules/storage/test_cinder.py @@ -35,13 +35,15 @@ class CinderInterfaceTestCase(db_base.DbTestCase): self.config(action_retries=3, action_retry_interval=0, group='cinder') - self.config(enabled_storage_interfaces=['noop', 'cinder']) + self.config(enabled_boot_interfaces=['fake'], + enabled_storage_interfaces=['noop', 'cinder']) self.interface = cinder.CinderStorage() + self.node = object_utils.create_test_node(self.context, + boot_interface='fake', + storage_interface='cinder') @mock.patch.object(cinder, 'LOG', autospec=True) def test__fail_validation(self, mock_log): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') """Ensure the validate helper logs and raises exceptions.""" fake_error = 'a error!' expected = ("Failed to validate cinder storage interface for node " @@ -55,8 +57,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test__generate_connector_raises_with_insufficent_data(self, mock_log): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') with task_manager.acquire(self.context, self.node.id) as task: self.assertRaises(exception.StorageError, self.interface._generate_connector, @@ -64,8 +64,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): self.assertTrue(mock_log.error.called) def test__generate_connector_iscsi(self): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') expected = { 'initiator': 'iqn.address', 'ip': 'ip.address', @@ -84,8 +82,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test__generate_connector_iscsi_and_unknown(self, mock_log): """Validate we return and log with valid and invalid connectors.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') expected = { 'initiator': 'iqn.address', 'host': self.node.uuid, @@ -104,8 +100,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test__generate_connector_unknown_raises_excption(self, mock_log): """Validate an exception is raised with only an invalid connector.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='foo', connector_id='bar') @@ -119,8 +113,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): def test__generate_connector_single_path(self): """Validate an exception is raised with only an invalid connector.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') expected = { 'initiator': 'iqn.address', 'host': self.node.uuid} @@ -132,8 +124,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): self.assertDictEqual(expected, return_value) def test__generate_connector_multiple_fc_wwns(self): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') """Validate handling of WWPNs and WWNNs.""" expected = { 'wwpns': ['wwpn1', 'wwpn2'], @@ -171,8 +161,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder.CinderStorage, '_fail_validation', autospec=True) @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_no_settings(self, mock_log, mock_fail): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') with task_manager.acquire(self.context, self.node.id) as task: self.interface.validate(task) self.assertFalse(mock_fail.called) @@ -180,9 +168,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_failure_if_iscsi_boot_no_connectors(self, mock_log): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') - valid_types = ', '.join(cinder.VALID_ISCSI_TYPES) expected_msg = ("Failed to validate cinder storage interface for node " "%(id)s. In order to enable the 'iscsi_boot' " @@ -200,8 +185,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_failure_if_fc_boot_no_connectors(self, mock_log): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') valid_types = ', '.join(cinder.VALID_FC_TYPES) expected_msg = ("Failed to validate cinder storage interface for node " "%(id)s. In order to enable the 'fibre_channel_boot' " @@ -222,8 +205,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_iscsi_connector(self, mock_log, mock_fail): """Perform validate with only an iSCSI connector in place.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='iqn.address') @@ -236,8 +217,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_fc_connectors(self, mock_log, mock_fail): """Perform validate with only FC connectors in place""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='wwpn', connector_id='wwpn.address', uuid=uuidutils.generate_uuid()) @@ -253,8 +232,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_connectors_and_boot(self, mock_log, mock_fail): """Perform validate with volume connectors and boot capabilities.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='iqn.address', uuid=uuidutils.generate_uuid()) @@ -277,8 +254,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_iscsi_targets(self, mock_log, mock_fail): """Validate success with full iscsi scenario.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='iqn.address', uuid=uuidutils.generate_uuid()) @@ -295,8 +270,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_success_fc_targets(self, mock_log, mock_fail): """Validate success with full fc scenario.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='wwpn', connector_id='fc.address', uuid=uuidutils.generate_uuid()) @@ -318,8 +291,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): def test_validate_fails_with_ipxe_not_enabled(self, mock_log): """Ensure a validation failure is raised when iPXE not enabled.""" self.config(ipxe_enabled=False, group='pxe') - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='foo.address') @@ -336,8 +307,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_fails_when_fc_connectors_unequal(self, mock_log): """Validate should fail with only wwnn FC connector in place""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='wwnn', connector_id='wwnn.address') @@ -350,8 +319,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_fail_on_unknown_volume_types(self, mock_log): """Ensure exception is raised when connector/target do not match.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='foo.address') @@ -368,8 +335,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_fails_iscsi_conn_fc_target(self, mock_log): """Validate failure of iSCSI connectors with FC target.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='iqn', connector_id='foo.address') @@ -386,8 +351,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_validate_fails_fc_conn_iscsi_target(self, mock_log): """Validate failure of FC connectors with iSCSI target.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_connector( self.context, node_id=self.node.id, type='fibre_channel', connector_id='foo.address') @@ -408,8 +371,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG') def test_attach_detach_volumes_no_volumes(self, mock_log, mock_attach, mock_detach): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') with task_manager.acquire(self.context, self.node.id) as task: self.interface.attach_volumes(task) self.interface.detach_volumes(task) @@ -424,8 +385,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): mock_attach, mock_detach): """Without connectors, attach and detach should fail.""" - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') @@ -447,8 +406,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): mock_log, mock_attach, mock_detach): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') target_uuid = uuidutils.generate_uuid() test_volume_target = object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', @@ -481,9 +438,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder, 'LOG', autospec=True) def test_attach_volumes_failure(self, mock_log, mock_attach, mock_detach): """Verify detach is called upon attachment failing.""" - - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') @@ -516,8 +470,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): Volume attachment fails if the number of attachments completed does not match the number of configured targets. """ - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') @@ -538,8 +490,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): @mock.patch.object(cinder_common, 'detach_volumes', autospec=True) @mock.patch.object(cinder, 'LOG', autospec=True) def test_detach_volumes_failure(self, mock_log, mock_detach): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') @@ -568,8 +518,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): def test_detach_volumes_failure_raises_exception(self, mock_log, mock_detach): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') @@ -589,8 +537,6 @@ class CinderInterfaceTestCase(db_base.DbTestCase): self.assertEqual(4, mock_detach.call_count) def test_should_write_image(self): - self.node = object_utils.create_test_node(self.context, - storage_interface='cinder') object_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') diff --git a/ironic/tests/unit/drivers/modules/test_deploy_utils.py b/ironic/tests/unit/drivers/modules/test_deploy_utils.py index 331645b4e..28f93be8e 100644 --- a/ironic/tests/unit/drivers/modules/test_deploy_utils.py +++ b/ironic/tests/unit/drivers/modules/test_deploy_utils.py @@ -975,7 +975,8 @@ class GetPxeBootConfigTestCase(db_base.DbTestCase): def setUp(self): super(GetPxeBootConfigTestCase, self).setUp() - self.node = obj_utils.get_test_node(self.context, driver='fake') + self.node = obj_utils.get_test_node(self.context, + driver='fake-hardware') self.config(pxe_bootfile_name='bios-bootfile', group='pxe') self.config(uefi_pxe_bootfile_name='uefi-bootfile', group='pxe') self.config(pxe_config_template='bios-template', group='pxe') @@ -1308,7 +1309,8 @@ class ParseInstanceInfoCapabilitiesTestCase(tests_base.TestCase): def setUp(self): super(ParseInstanceInfoCapabilitiesTestCase, self).setUp() - self.node = obj_utils.get_test_node(self.context, driver='fake') + self.node = obj_utils.get_test_node(self.context, + driver='fake-hardware') def test_parse_instance_info_capabilities_string(self): self.node.instance_info = {'capabilities': '{"cat": "meow"}'} @@ -1440,7 +1442,8 @@ class TrySetBootDeviceTestCase(db_base.DbTestCase): def setUp(self): super(TrySetBootDeviceTestCase, self).setUp() - self.node = obj_utils.create_test_node(self.context, driver="fake") + self.node = obj_utils.create_test_node(self.context, + driver="fake-hardware") @mock.patch.object(manager_utils, 'node_set_boot_device', autospec=True) def test_try_set_boot_device_okay(self, node_set_boot_device_mock): @@ -2380,7 +2383,8 @@ class TestStorageInterfaceUtils(db_base.DbTestCase): def setUp(self): super(TestStorageInterfaceUtils, self).setUp() self.node = obj_utils.create_test_node(self.context, - driver='fake') + driver='fake-hardware') + self.config(enabled_storage_interfaces=['noop', 'fake', 'cinder']) def test_check_interface_capability(self): class fake_driver(object): @@ -2415,18 +2419,14 @@ class TestStorageInterfaceUtils(db_base.DbTestCase): self.context, self.node.uuid, shared=False) as task: self.assertIsNone(utils.get_remote_boot_volume(task)) - @mock.patch.object(fake, 'FakeBoot', autospec=True) - @mock.patch.object(fake, 'FakeDeploy', autospec=True) + @mock.patch.object(fake.FakeBoot, 'capabilities', + ['iscsi_volume_boot'], create=True) + @mock.patch.object(fake.FakeDeploy, 'capabilities', + ['iscsi_volume_deploy'], create=True) @mock.patch.object(cinder.CinderStorage, 'should_write_image', autospec=True) def test_populate_storage_driver_internal_info_iscsi(self, - mock_should_write, - mock_deploy, - mock_boot): - mock_deploy.return_value = mock.Mock( - capabilities=['iscsi_volume_deploy']) - mock_boot.return_value = mock.Mock( - capabilities=['iscsi_volume_boot']) + mock_should_write): mock_should_write.return_value = True vol_uuid = uuidutils.generate_uuid() obj_utils.create_test_volume_target( @@ -2453,18 +2453,14 @@ class TestStorageInterfaceUtils(db_base.DbTestCase): task.node.driver_internal_info.get('boot_from_volume_deploy', None)) - @mock.patch.object(fake, 'FakeBoot', autospec=True) - @mock.patch.object(fake, 'FakeDeploy', autospec=True) + @mock.patch.object(fake.FakeBoot, 'capabilities', + ['fibre_channel_volume_boot'], create=True) + @mock.patch.object(fake.FakeDeploy, 'capabilities', + ['fibre_channel_volume_deploy'], create=True) @mock.patch.object(cinder.CinderStorage, 'should_write_image', autospec=True) def test_populate_storage_driver_internal_info_fc(self, - mock_should_write, - mock_deploy, - mock_boot): - mock_deploy.return_value = mock.Mock( - capabilities=['fibre_channel_volume_deploy']) - mock_boot.return_value = mock.Mock( - capabilities=['fibre_channel_volume_boot']) + mock_should_write): mock_should_write.return_value = True self.node.storage_interface = "cinder" self.node.save() @@ -2487,15 +2483,11 @@ class TestStorageInterfaceUtils(db_base.DbTestCase): task.node.driver_internal_info.get('boot_from_volume_deploy', None)) - @mock.patch.object(fake, 'FakeBoot', autospec=True) - @mock.patch.object(fake, 'FakeDeploy', autospec=True) - def test_populate_storage_driver_internal_info_error( - self, mock_deploy, mock_boot): - mock_deploy.return_value = mock.Mock( - capabilities=['fibre_channel_volume_deploy']) - mock_boot.return_value = mock.Mock( - capabilities=['fibre_channel_volume_boot']) - + @mock.patch.object(fake.FakeBoot, 'capabilities', + ['fibre_channel_volume_boot'], create=True) + @mock.patch.object(fake.FakeDeploy, 'capabilities', + ['fibre_channel_volume_deploy'], create=True) + def test_populate_storage_driver_internal_info_error(self): obj_utils.create_test_volume_target( self.context, node_id=self.node.id, volume_type='iscsi', boot_index=0, volume_id='1234') diff --git a/ironic/tests/unit/drivers/test_fake.py b/ironic/tests/unit/drivers/test_fake_hardware.py index 0d6df7a3a..7091db4a5 100644 --- a/ironic/tests/unit/drivers/test_fake.py +++ b/ironic/tests/unit/drivers/test_fake_hardware.py @@ -17,28 +17,24 @@ """Test class for Fake driver.""" -import mock from ironic.common import boot_devices -from ironic.common import driver_factory from ironic.common import exception from ironic.common import states from ironic.conductor import task_manager from ironic.drivers import base as driver_base from ironic.tests.unit.db import base as db_base -from ironic.tests.unit.objects import utils as obj_utils +from ironic.tests.unit.db import utils as db_utils -class FakeDriverTestCase(db_base.DbTestCase): +class FakeHardwareTestCase(db_base.DbTestCase): def setUp(self): - super(FakeDriverTestCase, self).setUp() - self.driver = driver_factory.get_driver("fake") - self.node = obj_utils.get_test_node(self.context) - self.task = mock.MagicMock(spec=task_manager.TaskManager) - self.task.shared = False - self.task.node = self.node - self.task.driver = self.driver + super(FakeHardwareTestCase, self).setUp() + self.node = db_utils.create_test_node() + self.task = task_manager.acquire(self.context, self.node.id) + self.addCleanup(self.task.release_resources) + self.driver = self.task.driver def test_driver_interfaces(self): self.assertIsInstance(self.driver.power, driver_base.PowerInterface) @@ -49,7 +45,7 @@ class FakeDriverTestCase(db_base.DbTestCase): driver_base.ConsoleInterface) def test_get_properties(self): - expected = ['A1', 'A2', 'B1', 'B2'] + expected = ['B1', 'B2'] properties = self.driver.get_properties() self.assertEqual(sorted(expected), sorted(properties)) diff --git a/ironic/tests/unit/drivers/test_generic.py b/ironic/tests/unit/drivers/test_generic.py index fd70b4405..e1f4a9093 100644 --- a/ironic/tests/unit/drivers/test_generic.py +++ b/ironic/tests/unit/drivers/test_generic.py @@ -34,8 +34,7 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase): super(ManualManagementHardwareTestCase, self).setUp() self.config(enabled_hardware_types=['manual-management'], enabled_power_interfaces=['fake'], - enabled_management_interfaces=['fake'], - enabled_inspect_interfaces=['no-inspect']) + enabled_management_interfaces=['fake']) self.config(enabled=True, group='inspector') def test_default_interfaces(self): @@ -50,7 +49,8 @@ class ManualManagementHardwareTestCase(db_base.DbTestCase): self.assertIsInstance(task.driver.raid, noop.NoRAID) def test_supported_interfaces(self): - self.config(enabled_inspect_interfaces=['inspector', 'no-inspect']) + self.config(enabled_inspect_interfaces=['inspector', 'no-inspect'], + enabled_raid_interfaces=['agent']) node = obj_utils.create_test_node(self.context, driver='manual-management', deploy_interface='direct', diff --git a/ironic/tests/unit/drivers/test_utils.py b/ironic/tests/unit/drivers/test_utils.py index 115550b7c..b09915704 100644 --- a/ironic/tests/unit/drivers/test_utils.py +++ b/ironic/tests/unit/drivers/test_utils.py @@ -20,7 +20,6 @@ import mock from oslo_config import cfg from oslo_utils import timeutils -from ironic.common import driver_factory from ironic.common import exception from ironic.common import swift from ironic.conductor import task_manager @@ -37,32 +36,8 @@ class UtilsTestCase(db_base.DbTestCase): def setUp(self): super(UtilsTestCase, self).setUp() - self.driver = driver_factory.get_driver("fake") self.node = obj_utils.create_test_node(self.context) - def test_vendor_interface_get_properties(self): - expected = {'A1': 'A1 description. Required.', - 'A2': 'A2 description. Optional.', - 'B1': 'B1 description. Required.', - 'B2': 'B2 description. Required.'} - props = self.driver.vendor.get_properties() - self.assertEqual(expected, props) - - @mock.patch.object(fake.FakeVendorA, 'validate', autospec=True) - def test_vendor_interface_validate_valid_methods(self, - mock_fakea_validate): - with task_manager.acquire(self.context, self.node.uuid) as task: - self.driver.vendor.validate(task, method='first_method') - mock_fakea_validate.assert_called_once_with( - self.driver.vendor.mapping['first_method'], - task, method='first_method') - - def test_vendor_interface_validate_bad_method(self): - with task_manager.acquire(self.context, self.node.uuid) as task: - self.assertRaises(exception.InvalidParameterValue, - self.driver.vendor.validate, - task, method='fake_method') - def test_get_node_mac_addresses(self): ports = [] ports.append( @@ -378,3 +353,41 @@ class UtilsRamdiskLogsTestCase(tests_base.TestCase): mock_makedirs.assert_called_once_with(log_path) mock_logs_name.assert_called_once_with(self.node, label=None) + + +class MixinVendorInterfaceTestCase(db_base.DbTestCase): + + def setUp(self): + super(MixinVendorInterfaceTestCase, self).setUp() + self.a = fake.FakeVendorA() + self.b = fake.FakeVendorB() + self.mapping = {'first_method': self.a, + 'second_method': self.b, + 'third_method_sync': self.b, + 'fourth_method_shared_lock': self.b} + self.vendor = driver_utils.MixinVendorInterface(self.mapping) + self.node = obj_utils.create_test_node(self.context, + driver='fake-hardware') + + def test_vendor_interface_get_properties(self): + expected = {'A1': 'A1 description. Required.', + 'A2': 'A2 description. Optional.', + 'B1': 'B1 description. Required.', + 'B2': 'B2 description. Required.'} + props = self.vendor.get_properties() + self.assertEqual(expected, props) + + @mock.patch.object(fake.FakeVendorA, 'validate', autospec=True) + def test_vendor_interface_validate_valid_methods(self, + mock_fakea_validate): + with task_manager.acquire(self.context, self.node.uuid) as task: + self.vendor.validate(task, method='first_method') + mock_fakea_validate.assert_called_once_with( + self.vendor.mapping['first_method'], + task, method='first_method') + + def test_vendor_interface_validate_bad_method(self): + with task_manager.acquire(self.context, self.node.uuid) as task: + self.assertRaises(exception.InvalidParameterValue, + self.vendor.validate, + task, method='fake_method') |