diff options
| author | Rui Chen <chenrui.momo@gmail.com> | 2017-03-10 17:32:44 +0800 |
|---|---|---|
| committer | Rui Chen <chenrui.momo@gmail.com> | 2017-09-18 15:14:22 +0800 |
| commit | ff9bd34b3c63c22c96d7a0711939828a38f003d8 (patch) | |
| tree | a2e26ad3861c5450518cf65d9c8b614da79d16e9 /openstackclient/tests/functional/compute | |
| parent | 5309bf5f873aba4e994c9011a893987c40d56eda (diff) | |
| download | python-openstackclient-ff9bd34b3c63c22c96d7a0711939828a38f003d8.tar.gz | |
[Compute]Make column content readable for both human and machine
Currently, we use utils.format_dict(), utils.format_list(),
utils.format_list_of_dicts to make column value can be easy to read by
human, but osc support to format the CLI output into several format,
like: json, shell, csv, yaml, most of these should be understand by
program and code, so keeping the column content as the original value
make sense, like {u'name': u'RuiChen'} than name='RuiChen'
The patch include all compute commands.
Change-Id: I313a52f94895625e6045df870320840fee157759
Implements: blueprint osc-formattable-columns
Partial-Bug: #1538015
Partial-Bug: #1538006
Diffstat (limited to 'openstackclient/tests/functional/compute')
4 files changed, 48 insertions, 74 deletions
diff --git a/openstackclient/tests/functional/compute/v2/test_aggregate.py b/openstackclient/tests/functional/compute/v2/test_aggregate.py index 1eba3ffe..4e57dbce 100644 --- a/openstackclient/tests/functional/compute/v2/test_aggregate.py +++ b/openstackclient/tests/functional/compute/v2/test_aggregate.py @@ -136,14 +136,7 @@ class AggregateTests(base.TestCase): 'internal', cmd_output['availability_zone'] ) - self.assertIn( - "c='d'", - cmd_output['properties'] - ) - self.assertNotIn( - "a='b'", - cmd_output['properties'] - ) + self.assertEqual({'c': 'd'}, cmd_output['properties']) # Test unset raw_output = self.openstack( @@ -157,10 +150,7 @@ class AggregateTests(base.TestCase): 'aggregate show -f json ' + name2 )) - self.assertNotIn( - "c='d'", - cmd_output['properties'] - ) + self.assertEqual({}, cmd_output['properties']) def test_aggregate_add_and_remove_host(self): """Test aggregate add and remove host""" diff --git a/openstackclient/tests/functional/compute/v2/test_flavor.py b/openstackclient/tests/functional/compute/v2/test_flavor.py index eefd3fab..8415a397 100644 --- a/openstackclient/tests/functional/compute/v2/test_flavor.py +++ b/openstackclient/tests/functional/compute/v2/test_flavor.py @@ -91,7 +91,7 @@ class FlavorTests(base.TestCase): "--ram 123 " + "--private " + "--property a=b2 " + - "--property b=d2 " + + "--property c=d2 " + name2 )) self.addCleanup(self.openstack, "flavor delete " + name2) @@ -116,10 +116,7 @@ class FlavorTests(base.TestCase): False, cmd_output["os-flavor-access:is_public"], ) - self.assertEqual( - "a='b2', b='d2'", - cmd_output["properties"], - ) + self.assertEqual({'a': 'b2', 'c': 'd2'}, cmd_output["properties"]) # Test list cmd_output = json.loads(self.openstack( @@ -135,11 +132,11 @@ class FlavorTests(base.TestCase): "--long" )) col_name = [x["Name"] for x in cmd_output] - col_properties = [x['Properties'] for x in cmd_output] self.assertIn(name1, col_name) - self.assertIn("a='b', c='d'", col_properties) self.assertNotIn(name2, col_name) - self.assertNotIn("b2', b='d2'", col_properties) + + props = [x['Properties'] for x in cmd_output] + self.assertIn({'a': 'b', 'c': 'd'}, props) # Test list --public cmd_output = json.loads(self.openstack( @@ -203,10 +200,8 @@ class FlavorTests(base.TestCase): False, cmd_output["os-flavor-access:is_public"], ) - self.assertEqual( - "a='first', b='second'", - cmd_output["properties"], - ) + self.assertEqual({'a': 'first', 'b': 'second'}, + cmd_output['properties']) raw_output = self.openstack( "flavor set " + @@ -224,10 +219,8 @@ class FlavorTests(base.TestCase): "qaz", cmd_output["id"], ) - self.assertEqual( - "a='third and 10', b='second', g='fourth'", - cmd_output['properties'], - ) + self.assertEqual({'a': 'third and 10', 'b': 'second', 'g': 'fourth'}, + cmd_output['properties']) raw_output = self.openstack( "flavor unset " + @@ -240,7 +233,5 @@ class FlavorTests(base.TestCase): "flavor show -f json " + name1 )) - self.assertEqual( - "a='third and 10', g='fourth'", - cmd_output["properties"], - ) + self.assertEqual({'a': 'third and 10', 'g': 'fourth'}, + cmd_output['properties']) diff --git a/openstackclient/tests/functional/compute/v2/test_server.py b/openstackclient/tests/functional/compute/v2/test_server.py index b7a25996..75cef255 100644 --- a/openstackclient/tests/functional/compute/v2/test_server.py +++ b/openstackclient/tests/functional/compute/v2/test_server.py @@ -107,25 +107,19 @@ class ServerTests(common.ComputeTestCase): 'server show -f json ' + name )) - # Really, shouldn't this be a list? - self.assertEqual( - "a='b', c='d'", - cmd_output['properties'], - ) + self.assertEqual({'a': 'b', 'c': 'd'}, cmd_output['properties']) raw_output = self.openstack( 'server unset ' + '--property a ' + name ) + self.assertOutput('', raw_output) cmd_output = json.loads(self.openstack( 'server show -f json ' + name )) - self.assertEqual( - "c='d'", - cmd_output['properties'], - ) + self.assertEqual({'c': 'd'}, cmd_output['properties']) # Test set --name new_name = uuid.uuid4().hex @@ -248,10 +242,8 @@ class ServerTests(common.ComputeTestCase): 'server show -f json ' + name )) - self.assertIn( - floating_ip, - cmd_output['addresses'], - ) + self.assertIsInstance(cmd_output['addresses'], dict) + self.assertIn(floating_ip, cmd_output['addresses']['private']) # detach ip raw_output = self.openstack( @@ -265,10 +257,8 @@ class ServerTests(common.ComputeTestCase): 'server show -f json ' + name )) - self.assertNotIn( - floating_ip, - cmd_output['addresses'], - ) + self.assertIsInstance(cmd_output['addresses'], dict) + self.assertNotIn(floating_ip, cmd_output['addresses']['private']) def test_server_reboot(self): """Test server reboot""" @@ -456,8 +446,10 @@ class ServerTests(common.ComputeTestCase): server_name )) volumes_attached = cmd_output['volumes_attached'] - self.assertTrue(volumes_attached.startswith('id=')) - attached_volume_id = volumes_attached.replace('id=', '') + self.assertIsInstance(volumes_attached, list) + self.assertEqual(1, len(volumes_attached)) + self.assertIn('id', volumes_attached[0]) + attached_volume_id = volumes_attached[0]['id'] # check the volume that attached on server cmd_output = json.loads(self.openstack( @@ -514,7 +506,7 @@ class ServerTests(common.ComputeTestCase): 'server show -f json ' + server_name )) self.assertIsNotNone(server['addresses']) - self.assertEqual('', server['addresses']) + self.assertEqual({}, server['addresses']) def test_server_create_with_security_group(self): """Test server create with security group ID and name""" @@ -553,14 +545,27 @@ class ServerTests(common.ComputeTestCase): self.assertIsNotNone(server['id']) self.assertEqual(server_name, server['name']) - self.assertIn(str(security_group1['id']), server['security_groups']) - self.assertIn(str(security_group2['id']), server['security_groups']) + self.assertIsInstance(server['security_groups'], list) + self.assertEqual(2, len(server['security_groups'])) + # NOTE(RuiChen): Nova return security group id in response of server + # create API, but return security group name in server + # show API for the same server, so we assert id and name + # for different create and show commands in the + # following code. + sg_ids = [each_sg['name'] for each_sg in server['security_groups']] + # Security group id is integer in nova-network, convert to string + self.assertIn(str(security_group1['id']), sg_ids) + self.assertIn(str(security_group2['id']), sg_ids) + self.wait_for_status(server_name, 'ACTIVE') server = json.loads(self.openstack( 'server show -f json ' + server_name )) - self.assertIn(sg_name1, server['security_groups']) - self.assertIn(sg_name2, server['security_groups']) + self.assertIsInstance(server['security_groups'], list) + self.assertEqual(2, len(server['security_groups'])) + sg_names = [each_sg['name'] for each_sg in server['security_groups']] + self.assertIn(sg_name1, sg_names) + self.assertIn(sg_name2, sg_names) def test_server_create_with_empty_network_option_latest(self): """Test server create with empty network option in nova 2.latest.""" diff --git a/openstackclient/tests/functional/compute/v2/test_server_group.py b/openstackclient/tests/functional/compute/v2/test_server_group.py index 44ecda1d..2d703ff7 100644 --- a/openstackclient/tests/functional/compute/v2/test_server_group.py +++ b/openstackclient/tests/functional/compute/v2/test_server_group.py @@ -32,10 +32,7 @@ class ServerGroupTests(base.TestCase): name1, cmd_output['name'] ) - self.assertEqual( - 'affinity', - cmd_output['policies'] - ) + self.assertEqual(['affinity'], cmd_output['policies']) cmd_output = json.loads(self.openstack( 'server group create -f json ' + @@ -46,10 +43,7 @@ class ServerGroupTests(base.TestCase): name2, cmd_output['name'] ) - self.assertEqual( - 'anti-affinity', - cmd_output['policies'] - ) + self.assertEqual(['anti-affinity'], cmd_output['policies']) del_output = self.openstack( 'server group delete ' + name1 + ' ' + name2) @@ -73,10 +67,7 @@ class ServerGroupTests(base.TestCase): name1, cmd_output['name'] ) - self.assertEqual( - 'affinity', - cmd_output['policies'] - ) + self.assertEqual(['affinity'], cmd_output['policies']) cmd_output = json.loads(self.openstack( 'server group create -f json ' + @@ -90,10 +81,7 @@ class ServerGroupTests(base.TestCase): name2, cmd_output['name'] ) - self.assertEqual( - 'anti-affinity', - cmd_output['policies'] - ) + self.assertEqual(['anti-affinity'], cmd_output['policies']) # test server group list cmd_output = json.loads(self.openstack( @@ -102,5 +90,5 @@ class ServerGroupTests(base.TestCase): self.assertIn(name1, names) self.assertIn(name2, names) policies = [x["Policies"] for x in cmd_output] - self.assertIn('affinity', policies) - self.assertIn('anti-affinity', policies) + self.assertIn(['affinity'], policies) + self.assertIn(['anti-affinity'], policies) |
