diff --git a/rally/plugins/openstack/scenarios/cinder/volumes.py b/rally/plugins/openstack/scenarios/cinder/volumes.py index b8682ced..7a9bdef1 100644 --- a/rally/plugins/openstack/scenarios/cinder/volumes.py +++ b/rally/plugins/openstack/scenarios/cinder/volumes.py @@ -364,11 +364,9 @@ class CinderVolumes(cinder_utils.CinderScenario, @validation.required_services(consts.Service.NOVA, consts.Service.CINDER) @validation.required_openstack(users=True) @scenario.configure(context={"cleanup": ["cinder", "nova"]}) - @logging.log_deprecated_args("Use 'nested_level' as an int", "0.1.2", - ["nested_level"], once=True) def create_nested_snapshots_and_attach_volume(self, size=None, - nested_level=None, + nested_level=1, **kwargs): """Create a volume from snapshot and attach/detach the volume @@ -382,25 +380,12 @@ class CinderVolumes(cinder_utils.CinderScenario, min - minimum size volumes will be created as; max - maximum size volumes will be created as. default values: {"min": 1, "max": 5} - :param nested_level: Nested level - dictionary or int, dictionary - contains two values: - min - minimum number of volumes will be created - from snapshot; - max - maximum number of volumes will be created - from snapshot. - due to its deprecated would be taken min value. - int, means the exact nested level. - default value: 1. + :param nested_level: amount of nested levels :param kwargs: Optional parameters used during volume snapshot creation. """ if size is None: size = {"min": 1, "max": 5} - if nested_level is None: - nested_level = 1 - nested_level = nested_level or 1 - if isinstance(nested_level, dict): - nested_level = nested_level.get("min", 1) # NOTE: Volume size cannot be smaller than the snapshot size, so # volume with specified size should be created to avoid diff --git a/tests/unit/plugins/openstack/cleanup/test_manager.py b/tests/unit/plugins/openstack/cleanup/test_manager.py index 06540320..1573dd83 100644 --- a/tests/unit/plugins/openstack/cleanup/test_manager.py +++ b/tests/unit/plugins/openstack/cleanup/test_manager.py @@ -238,8 +238,10 @@ class SeekAndDestroyTestCase(test.TestCase): expected_queue += [(admin, users[1], x) for x in range(4, 6)] self.assertEqual(queue, expected_queue) + @mock.patch("%s.LOG" % BASE) @mock.patch("%s.SeekAndDestroy._get_cached_client" % BASE) - def test__gen_publisher_tenant_resource(self, mock__get_cached_client): + def test__gen_publisher_tenant_resource(self, mock__get_cached_client, + mock_log): mock_mgr = self._manager([Exception, [1, 2, 3], Exception, Exception, Exception, ["this shouldn't be in results"]], @@ -273,6 +275,8 @@ class SeekAndDestroyTestCase(test.TestCase): mock.call(users[2]) ]) self.assertEqual(queue, [(None, users[0], x) for x in range(1, 4)]) + self.assertTrue(mock_log.warning.mock_called) + self.assertTrue(mock_log.exception.mock_called) @mock.patch("%s.SeekAndDestroy._get_cached_client" % BASE) @mock.patch("%s.SeekAndDestroy._delete_single_resource" % BASE) diff --git a/tests/unit/plugins/openstack/wrappers/test_cinder.py b/tests/unit/plugins/openstack/wrappers/test_cinder.py index daa1da0c..9edacc87 100644 --- a/tests/unit/plugins/openstack/wrappers/test_cinder.py +++ b/tests/unit/plugins/openstack/wrappers/test_cinder.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. +import ddt import mock from rally import exceptions @@ -20,16 +21,30 @@ from rally.plugins.openstack.wrappers import cinder as cinder_wrapper from tests.unit import test -class CinderWrapperTestBase(object): - def test_wrap(self): +@ddt.ddt +class CinderWrapperTestCase(test.ScenarioTestCase): + + @ddt.data( + {"version": "1", "expected_class": cinder_wrapper.CinderV1Wrapper}, + {"version": "2", "expected_class": cinder_wrapper.CinderV2Wrapper} + ) + @ddt.unpack + def test_wrap(self, version, expected_class): client = mock.MagicMock() - owner = mock.Mock() - client.version = "dummy" + client.choose_version.return_value = version + self.assertIsInstance(cinder_wrapper.wrap(client, mock.Mock()), + expected_class) + + @mock.patch("rally.plugins.openstack.wrappers.cinder.LOG") + def test_wrap_wrong_version(self, mock_log): + client = mock.MagicMock() + client.choose_version.return_value = "dummy" self.assertRaises(exceptions.InvalidArgumentsException, - cinder_wrapper.wrap, client, owner) + cinder_wrapper.wrap, client, mock.Mock()) + self.assertTrue(mock_log.warning.mock_called) -class CinderV1WrapperTestCase(test.TestCase, CinderWrapperTestBase): +class CinderV1WrapperTestCase(test.TestCase): def setUp(self): super(CinderV1WrapperTestCase, self).setUp() self.client = mock.MagicMock() @@ -59,7 +74,7 @@ class CinderV1WrapperTestCase(test.TestCase, CinderWrapperTestBase): display_name=self.owner.generate_random_name.return_value)) -class CinderV2WrapperTestCase(test.TestCase, CinderWrapperTestBase): +class CinderV2WrapperTestCase(test.TestCase): def setUp(self): super(CinderV2WrapperTestCase, self).setUp() self.client = mock.MagicMock() diff --git a/tests/unit/plugins/openstack/wrappers/test_glance.py b/tests/unit/plugins/openstack/wrappers/test_glance.py index 1104113d..8f9dbc2a 100644 --- a/tests/unit/plugins/openstack/wrappers/test_glance.py +++ b/tests/unit/plugins/openstack/wrappers/test_glance.py @@ -27,17 +27,31 @@ from tests.unit import test CONF = cfg.CONF -class GlanceWrapperTestBase(object): - def test_wrap(self): +@ddt.ddt +class GlanceWrapperTestCase(test.ScenarioTestCase): + + @ddt.data( + {"version": "1", "expected_class": glance_wrapper.GlanceV1Wrapper}, + {"version": "2", "expected_class": glance_wrapper.GlanceV2Wrapper} + ) + @ddt.unpack + def test_wrap(self, version, expected_class): client = mock.MagicMock() - owner = mock.Mock() - client.version = "dummy" + client.choose_version.return_value = version + self.assertIsInstance(glance_wrapper.wrap(client, mock.Mock()), + expected_class) + + @mock.patch("rally.plugins.openstack.wrappers.glance.LOG") + def test_wrap_wrong_version(self, mock_log): + client = mock.MagicMock() + client.choose_version.return_value = "dummy" self.assertRaises(exceptions.InvalidArgumentsException, - glance_wrapper.wrap, client, owner) + glance_wrapper.wrap, client, mock.Mock()) + self.assertTrue(mock_log.warning.mock_called) @ddt.ddt -class GlanceV1WrapperTestCase(test.ScenarioTestCase, GlanceWrapperTestBase): +class GlanceV1WrapperTestCase(test.ScenarioTestCase): _tempfile = tempfile.NamedTemporaryFile() def setUp(self): @@ -102,7 +116,7 @@ class GlanceV1WrapperTestCase(test.ScenarioTestCase, GlanceWrapperTestBase): @ddt.ddt -class GlanceV2WrapperTestCase(test.ScenarioTestCase, GlanceWrapperTestBase): +class GlanceV2WrapperTestCase(test.ScenarioTestCase): _tempfile = tempfile.NamedTemporaryFile() def setUp(self):