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 <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane 2025-04-14 14:04:34 +01:00
parent db4739fc5c
commit b0fe724caf
3 changed files with 65 additions and 216 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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)