From b0fe724cafa72c224d253c849c025c1b8a838219 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 14 Apr 2025 14:04:34 +0100 Subject: [PATCH] tests: Remove use of legacy resource helpers This allows us to remove get_servers, create_servers, and create_one_servers. Change-Id: I31a86b6333fdc3da1b54407f077873511260a5df Signed-off-by: Stephen Finucane --- .../tests/unit/compute/v2/fakes.py | 73 ------------ .../unit/compute/v2/test_server_backup.py | 103 ++++++----------- .../unit/compute/v2/test_server_image.py | 105 ++++++------------ 3 files changed, 65 insertions(+), 216 deletions(-) diff --git a/openstackclient/tests/unit/compute/v2/fakes.py b/openstackclient/tests/unit/compute/v2/fakes.py index ef868a8e30..2ab996e515 100644 --- a/openstackclient/tests/unit/compute/v2/fakes.py +++ b/openstackclient/tests/unit/compute/v2/fakes.py @@ -313,61 +313,6 @@ def create_security_group_rules(attrs=None, count=2): return security_group_rules -def create_one_server(attrs=None, methods=None): - """Create a fake server. - - :param dict attrs: - A dictionary with all attributes - :param dict methods: - A dictionary with all methods - :return: - A FakeResource object, with id, name, metadata, and so on - """ - attrs = attrs or {} - methods = methods or {} - - # Set default attributes. - server_info = { - 'id': 'server-id-' + uuid.uuid4().hex, - 'name': 'server-name-' + uuid.uuid4().hex, - 'metadata': {}, - 'image': { - 'id': 'image-id-' + uuid.uuid4().hex, - }, - 'flavor': { - 'id': 'flavor-id-' + uuid.uuid4().hex, - }, - 'OS-EXT-STS:power_state': 1, - } - - # Overwrite default attributes. - server_info.update(attrs) - - server = fakes.FakeResource( - info=copy.deepcopy(server_info), methods=methods, loaded=True - ) - return server - - -def create_servers(attrs=None, methods=None, count=2): - """Create multiple fake servers. - - :param dict attrs: - A dictionary with all attributes - :param dict methods: - A dictionary with all methods - :param int count: - The number of servers to fake - :return: - A list of FakeResource objects faking the servers - """ - servers = [] - for i in range(0, count): - servers.append(create_one_server(attrs, methods)) - - return servers - - def create_one_sdk_server(attrs=None): """Create a fake server for testing migration to sdk @@ -414,24 +359,6 @@ def create_sdk_servers(attrs=None, count=2): return servers -def get_servers(servers=None, count=2): - """Get an iterable MagicMock object with a list of faked servers. - - If servers list is provided, then initialize the Mock object with the - list. Otherwise create one. - - :param list servers: A list of fake openstack.compute.v2.server.Server - objects - :param int count: - The number of servers to fake - :return: An iterable Mock object with side_effect set to a list of faked - servers - """ - if servers is None: - servers = create_servers(count) - return mock.Mock(side_effect=servers) - - def create_one_server_action(attrs=None): """Create a fake server action. diff --git a/openstackclient/tests/unit/compute/v2/test_server_backup.py b/openstackclient/tests/unit/compute/v2/test_server_backup.py index bc1fca2b88..e473c7e1bd 100644 --- a/openstackclient/tests/unit/compute/v2/test_server_backup.py +++ b/openstackclient/tests/unit/compute/v2/test_server_backup.py @@ -22,22 +22,8 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestServerBackup(compute_fakes.TestComputev2): - def setup_servers_mock(self, count): - servers = compute_fakes.create_sdk_servers( - count=count, - ) - self.compute_client.find_server = compute_fakes.get_servers( - servers, - 0, - ) - return servers - - -class TestServerBackupCreate(TestServerBackup): - # Just return whatever Image is testing with these days +class TestServerBackupCreate(compute_fakes.TestComputev2): def image_columns(self, image): - # columnlist = tuple(sorted(image.keys())) columnlist = ( 'id', 'name', @@ -64,42 +50,27 @@ class TestServerBackupCreate(TestServerBackup): def setUp(self): super().setUp() + self.server = compute_fakes.create_one_sdk_server() + self.compute_client.find_server.return_value = self.server + + self.image = image_fakes.create_one_image( + {'name': self.server.name, 'status': 'active'} + ) + self.image_client.find_image.return_value = self.image + # Get the command object to test self.cmd = server_backup.CreateServerBackup(self.app, None) - def setup_images_mock(self, count, servers=None): - if servers: - images = image_fakes.create_images( - attrs={ - 'name': servers[0].name, - 'status': 'active', - }, - count=count, - ) - else: - images = image_fakes.create_images( - attrs={ - 'status': 'active', - }, - count=count, - ) - - self.image_client.find_image = mock.Mock(side_effect=images) - return images - def test_server_backup_defaults(self): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ - servers[0].id, + self.server.id, ] verifylist = [ ('name', None), ('type', None), ('rotate', None), ('wait', False), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -109,19 +80,16 @@ class TestServerBackupCreate(TestServerBackup): columns, data = self.cmd.take_action(parsed_args) self.compute_client.backup_server.assert_called_with( - servers[0].id, - servers[0].name, + self.server.id, + self.server.name, '', 1, ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data) def test_server_backup_create_options(self): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ '--name', 'image', @@ -129,13 +97,13 @@ class TestServerBackupCreate(TestServerBackup): 'daily', '--rotate', '2', - servers[0].id, + self.server.id, ] verifylist = [ ('name', 'image'), ('type', 'daily'), ('rotate', 2), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -145,22 +113,18 @@ class TestServerBackupCreate(TestServerBackup): columns, data = self.cmd.take_action(parsed_args) self.compute_client.backup_server.assert_called_with( - servers[0].id, + self.server.id, 'image', 'daily', 2, ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data) @mock.patch.object(common_utils, 'wait_for_status', return_value=False) def test_server_backup_wait_fail(self, mock_wait_for_status): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - self.image_client.get_image = mock.Mock( - side_effect=images[0], - ) + self.image_client.get_image.return_value = self.image arglist = [ '--name', @@ -168,13 +132,13 @@ class TestServerBackupCreate(TestServerBackup): '--type', 'daily', '--wait', - servers[0].id, + self.server.id, ] verifylist = [ ('name', 'image'), ('type', 'daily'), ('wait', True), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -185,23 +149,20 @@ class TestServerBackupCreate(TestServerBackup): ) self.compute_client.backup_server.assert_called_with( - servers[0].id, + self.server.id, 'image', 'daily', 1, ) mock_wait_for_status.assert_called_once_with( - self.image_client.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, self.image.id, callback=mock.ANY ) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) def test_server_backup_wait_ok(self, mock_wait_for_status): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - self.image_client.get_image = mock.Mock( - side_effect=images[0], + side_effect=self.image, ) arglist = [ @@ -210,13 +171,13 @@ class TestServerBackupCreate(TestServerBackup): '--type', 'daily', '--wait', - servers[0].id, + self.server.id, ] verifylist = [ ('name', 'image'), ('type', 'daily'), ('wait', True), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -226,15 +187,15 @@ class TestServerBackupCreate(TestServerBackup): columns, data = self.cmd.take_action(parsed_args) self.compute_client.backup_server.assert_called_with( - servers[0].id, + self.server.id, 'image', 'daily', 1, ) mock_wait_for_status.assert_called_once_with( - self.image_client.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, self.image.id, callback=mock.ANY ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data) diff --git a/openstackclient/tests/unit/compute/v2/test_server_image.py b/openstackclient/tests/unit/compute/v2/test_server_image.py index 7feb0b22f4..f4a56ff132 100644 --- a/openstackclient/tests/unit/compute/v2/test_server_image.py +++ b/openstackclient/tests/unit/compute/v2/test_server_image.py @@ -21,21 +21,8 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes -class TestServerImage(compute_fakes.TestComputev2): - def setup_servers_mock(self, count): - servers = compute_fakes.create_sdk_servers( - count=count, - ) - self.compute_client.find_server = compute_fakes.get_servers( - servers, - 0, - ) - return servers - - -class TestServerImageCreate(TestServerImage): +class TestServerImageCreate(compute_fakes.TestComputev2): def image_columns(self, image): - # columnlist = tuple(sorted(image.keys())) columnlist = ( 'id', 'name', @@ -62,41 +49,24 @@ class TestServerImageCreate(TestServerImage): def setUp(self): super().setUp() + self.server = compute_fakes.create_one_sdk_server() + self.compute_client.find_server.return_value = self.server + + self.image = image_fakes.create_one_image( + {'name': self.server.name, 'status': 'active'} + ) + self.image_client.find_image.return_value = self.image + self.compute_client.create_server_image.return_value = self.image + # Get the command object to test self.cmd = server_image.CreateServerImage(self.app, None) - def setup_images_mock(self, count, servers=None): - if servers: - images = image_fakes.create_images( - attrs={ - 'name': servers[0].name, - 'status': 'active', - }, - count=count, - ) - else: - images = image_fakes.create_images( - attrs={ - 'status': 'active', - }, - count=count, - ) - - self.image_client.find_image = mock.Mock(side_effect=images) - self.compute_client.create_server_image = mock.Mock( - return_value=images[0], - ) - return images - def test_server_image_create_defaults(self): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ - servers[0].id, + self.server.id, ] verifylist = [ - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -106,28 +76,25 @@ class TestServerImageCreate(TestServerImage): columns, data = self.cmd.take_action(parsed_args) self.compute_client.create_server_image.assert_called_with( - servers[0].id, - servers[0].name, + self.server.id, + self.server.name, None, ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data) def test_server_image_create_options(self): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ '--name', 'img-nam', '--property', 'key=value', - servers[0].id, + self.server.id, ] verifylist = [ ('name', 'img-nam'), - ('server', servers[0].id), + ('server', self.server.id), ('properties', {'key': 'value'}), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -138,26 +105,23 @@ class TestServerImageCreate(TestServerImage): columns, data = self.cmd.take_action(parsed_args) self.compute_client.create_server_image.assert_called_with( - servers[0].id, + self.server.id, 'img-nam', {'key': 'value'}, ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data) @mock.patch.object(common_utils, 'wait_for_status', return_value=False) def test_server_create_image_wait_fail(self, mock_wait_for_status): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ '--wait', - servers[0].id, + self.server.id, ] verifylist = [ ('wait', True), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -168,27 +132,24 @@ class TestServerImageCreate(TestServerImage): ) self.compute_client.create_server_image.assert_called_with( - servers[0].id, - servers[0].name, + self.server.id, + self.server.name, None, ) mock_wait_for_status.assert_called_once_with( - self.image_client.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, self.image.id, callback=mock.ANY ) @mock.patch.object(common_utils, 'wait_for_status', return_value=True) def test_server_create_image_wait_ok(self, mock_wait_for_status): - servers = self.setup_servers_mock(count=1) - images = self.setup_images_mock(count=1, servers=servers) - arglist = [ '--wait', - servers[0].id, + self.server.id, ] verifylist = [ ('wait', True), - ('server', servers[0].id), + ('server', self.server.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -198,14 +159,14 @@ class TestServerImageCreate(TestServerImage): columns, data = self.cmd.take_action(parsed_args) self.compute_client.create_server_image.assert_called_with( - servers[0].id, - servers[0].name, + self.server.id, + self.server.name, None, ) mock_wait_for_status.assert_called_once_with( - self.image_client.get_image, images[0].id, callback=mock.ANY + self.image_client.get_image, self.image.id, callback=mock.ANY ) - self.assertEqual(self.image_columns(images[0]), columns) - self.assertCountEqual(self.image_data(images[0]), data) + self.assertEqual(self.image_columns(self.image), columns) + self.assertCountEqual(self.image_data(self.image), data)