summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional/compute
diff options
context:
space:
mode:
authorRui Chen <chenrui.momo@gmail.com>2017-03-10 17:32:44 +0800
committerRui Chen <chenrui.momo@gmail.com>2017-09-18 15:14:22 +0800
commitff9bd34b3c63c22c96d7a0711939828a38f003d8 (patch)
treea2e26ad3861c5450518cf65d9c8b614da79d16e9 /openstackclient/tests/functional/compute
parent5309bf5f873aba4e994c9011a893987c40d56eda (diff)
downloadpython-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')
-rw-r--r--openstackclient/tests/functional/compute/v2/test_aggregate.py14
-rw-r--r--openstackclient/tests/functional/compute/v2/test_flavor.py31
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server.py53
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server_group.py24
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)