Skip to content

Commit aa5eb88

Browse files
committed
compute: Migrate tests for ShowServer to SDK objects
This is a little more realistic. We fix a minor bug along the way and start ignoring some newly added create-only fields. Change-Id: I93eae610e16e2a3a859f684b889546ace3afa683 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
1 parent 518420a commit aa5eb88

4 files changed

Lines changed: 97 additions & 21 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,11 @@ def _prep_server_detail(compute_client, image_client, server, refresh=True):
193193
'public_v6',
194194
# create-only columns
195195
'block_device_mapping',
196+
'host',
196197
'image_id',
197198
'max_count',
198199
'min_count',
200+
'personality',
199201
'scheduler_hints',
200202
# aliases
201203
'volumes',
@@ -283,7 +285,9 @@ def _prep_server_detail(compute_client, image_client, server, refresh=True):
283285
)
284286

285287
if 'tags' in info:
286-
info.update({'tags': format_columns.ListColumn(info.pop('tags'))})
288+
info.update(
289+
{'tags': format_columns.ListColumn(info.pop('tags') or [])}
290+
)
287291

288292
# Map 'networks' to 'addresses', if present. Note that the 'networks' key
289293
# is used for create responses, otherwise it's 'addresses'. We know it'll

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 89 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8222,12 +8222,10 @@ def setUp(self):
82228222
self.compute_sdk_client.get_server_diagnostics.return_value = {
82238223
'test': 'test'
82248224
}
8225-
server_method = {
8226-
'fetch_topology': self.topology,
8227-
}
8228-
self.server = compute_fakes.create_one_server(
8229-
attrs=server_info, methods=server_method
8225+
self.server = compute_fakes.create_one_sdk_server(
8226+
attrs=server_info,
82308227
)
8228+
self.server.fetch_topology = mock.MagicMock(return_value=self.topology)
82318229

82328230
# This is the return value for utils.find_resource()
82338231
self.compute_sdk_client.get_server.return_value = self.server
@@ -8238,28 +8236,101 @@ def setUp(self):
82388236
self.cmd = server.ShowServer(self.app, None)
82398237

82408238
self.columns = (
8239+
'OS-DCF:diskConfig',
8240+
'OS-EXT-AZ:availability_zone',
8241+
'OS-EXT-SRV-ATTR:host',
8242+
'OS-EXT-SRV-ATTR:hostname',
8243+
'OS-EXT-SRV-ATTR:hypervisor_hostname',
8244+
'OS-EXT-SRV-ATTR:instance_name',
8245+
'OS-EXT-SRV-ATTR:kernel_id',
8246+
'OS-EXT-SRV-ATTR:launch_index',
8247+
'OS-EXT-SRV-ATTR:ramdisk_id',
8248+
'OS-EXT-SRV-ATTR:reservation_id',
8249+
'OS-EXT-SRV-ATTR:root_device_name',
8250+
'OS-EXT-SRV-ATTR:user_data',
82418251
'OS-EXT-STS:power_state',
8252+
'OS-EXT-STS:task_state',
8253+
'OS-EXT-STS:vm_state',
8254+
'OS-SRV-USG:launched_at',
8255+
'OS-SRV-USG:terminated_at',
8256+
'accessIPv4',
8257+
'accessIPv6',
82428258
'addresses',
8259+
'config_drive',
8260+
'created',
8261+
'description',
82438262
'flavor',
8263+
'hostId',
8264+
'host_status',
82448265
'id',
82458266
'image',
8267+
'key_name',
8268+
'locked',
8269+
'locked_reason',
82468270
'name',
8271+
'pinned_availability_zone',
8272+
'progress',
82478273
'project_id',
82488274
'properties',
8275+
'server_groups',
8276+
'status',
8277+
'tags',
8278+
'trusted_image_certificates',
8279+
'updated',
8280+
'user_id',
8281+
'volumes_attached',
82498282
)
82508283

82518284
self.data = (
8285+
None, # OS-DCF:diskConfig
8286+
None, # OS-EXT-AZ:availability_zone
8287+
None, # OS-EXT-SRV-ATTR:host
8288+
None, # OS-EXT-SRV-ATTR:hostname
8289+
None, # OS-EXT-SRV-ATTR:hypervisor_hostname
8290+
None, # OS-EXT-SRV-ATTR:instance_name
8291+
None, # OS-EXT-SRV-ATTR:kernel_id
8292+
None, # OS-EXT-SRV-ATTR:launch_index
8293+
None, # OS-EXT-SRV-ATTR:ramdisk_id
8294+
None, # OS-EXT-SRV-ATTR:reservation_id
8295+
None, # OS-EXT-SRV-ATTR:root_device_name
8296+
None, # OS-EXT-SRV-ATTR:user_data
82528297
server.PowerStateColumn(
8253-
getattr(self.server, 'OS-EXT-STS:power_state')
8254-
),
8255-
self.flavor.name + " (" + self.flavor.id + ")",
8256-
self.server.id,
8257-
self.image.name + " (" + self.image.id + ")",
8298+
self.server.power_state
8299+
), # OS-EXT-STS:power_state # noqa: E501
8300+
None, # OS-EXT-STS:task_state
8301+
None, # OS-EXT-STS:vm_state
8302+
None, # OS-SRV-USG:launched_at
8303+
None, # OS-SRV-USG:terminated_at
8304+
None, # accessIPv4
8305+
None, # accessIPv6
8306+
server.AddressesColumn(
8307+
{'public': ['10.20.30.40', '2001:db8::f']}
8308+
), # addresses
8309+
None, # config_drive
8310+
None, # created
8311+
None, # description
8312+
self.flavor.name + " (" + self.flavor.id + ")", # flavor
8313+
None, # hostId
8314+
None, # host_status
8315+
self.server.id, # id
8316+
self.image.name + " (" + self.image.id + ")", # image
8317+
None, # key_name
8318+
None, # locked
8319+
None, # locked_reason
82588320
self.server.name,
8259-
server.AddressesColumn({'public': ['10.20.30.40', '2001:db8::f']}),
8260-
'tenant-id-xxx',
8261-
format_columns.DictColumn({}),
8262-
)
8321+
None, # pinned_availability_zone
8322+
None, # progress
8323+
'tenant-id-xxx', # project_id
8324+
format_columns.DictColumn({}), # properties
8325+
None, # server_groups
8326+
None, # status
8327+
format_columns.ListColumn([]), # tags
8328+
None, # trusted_image_certificates
8329+
None, # updated
8330+
None, # user_id
8331+
format_columns.ListDictColumn([]), # volumes_attached
8332+
)
8333+
self.assertEqual(len(self.columns), len(self.data))
82638334

82648335
def test_show_no_options(self):
82658336
arglist = []
@@ -8286,8 +8357,8 @@ def test_show(self):
82868357

82878358
columns, data = self.cmd.take_action(parsed_args)
82888359

8289-
self.assertEqual(self.columns, columns)
8290-
self.assertCountEqual(self.data, data)
8360+
self.assertTupleEqual(self.columns, columns)
8361+
self.assertTupleEqual(self.data, data)
82918362

82928363
def test_show_embedded_flavor(self):
82938364
# Tests using --os-compute-api-version >= 2.47 where the flavor
@@ -8301,7 +8372,7 @@ def test_show_embedded_flavor(self):
83018372
('server', self.server.name),
83028373
]
83038374
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
8304-
self.server.info['flavor'] = {
8375+
self.server.flavor = {
83058376
'ephemeral': 0,
83068377
'ram': 512,
83078378
'original_name': 'm1.tiny',
@@ -8315,7 +8386,7 @@ def test_show_embedded_flavor(self):
83158386
self.assertEqual(self.columns, columns)
83168387
# Since the flavor details are in a dict we can't be sure of the
83178388
# ordering so just assert that one of the keys is in the output.
8318-
self.assertIn('original_name', data[2]._value)
8389+
self.assertIn('original_name', data[columns.index('flavor')]._value)
83198390

83208391
def test_show_diagnostics(self):
83218392
arglist = [

openstackclient/tests/unit/utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ def __eq__(self, other):
3535

3636

3737
class TestCase(testtools.TestCase):
38+
# provide additional context for failures
39+
maxDiff = None
40+
3841
def setUp(self):
3942
testtools.TestCase.setUp(self)
4043

openstackclient/tests/unit/volume/v3/test_volume_group_type.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ def setUp(self):
2929

3030

3131
class TestVolumeGroupTypeCreate(TestVolumeGroupType):
32-
maxDiff = 2000
33-
3432
fake_volume_group_type = volume_fakes.create_one_volume_group_type()
3533

3634
columns = (

0 commit comments

Comments
 (0)