Skip to content

Commit 6abd38c

Browse files
author
Anindita Das
committed
Jsonify network flavor functional tests
Some functional tests try to parse the CLI table output format, that cause much work on parse string by using regular expression. Using json format in functional tests is better and easier way, this patch reworks for network flavor related tests. Change-Id: I2bc5675409945c9ae79ac65df2d5d10781fe595a
1 parent 8bff115 commit 6abd38c

1 file changed

Lines changed: 93 additions & 70 deletions

File tree

openstackclient/tests/functional/network/v2/test_network_flavor.py

Lines changed: 93 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13-
import re
13+
14+
import json
1415
import uuid
1516

1617
from openstackclient.tests.functional import base
@@ -19,135 +20,157 @@
1920
class NetworkFlavorTests(base.TestCase):
2021
"""Functional tests for network flavor."""
2122

22-
@classmethod
23-
def setUpClass(cls):
24-
# Set up some regex for matching below
25-
cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
26-
cls.re_enabled = re.compile("enabled\s+\|\s+(\S+)")
27-
cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
28-
cls.SERVICE_TYPE = 'L3_ROUTER_NAT'
29-
3023
def test_network_flavor_delete(self):
3124
"""Test create, delete multiple"""
3225
name1 = uuid.uuid4().hex
33-
raw_output = self.openstack(
34-
'network flavor create --description testdescription --enable'
35-
' --service-type ' + self.SERVICE_TYPE + ' ' + name1,
36-
)
26+
cmd_output = json.loads(self.openstack(
27+
'network flavor create -f json --description testdescription '
28+
'--enable --service-type L3_ROUTER_NAT ' + name1,
29+
))
3730
self.assertEqual(
3831
name1,
39-
re.search(self.re_name, raw_output).group(1))
32+
cmd_output['name'],
33+
)
4034
self.assertEqual(
41-
'True',
42-
re.search(self.re_enabled, raw_output).group(1))
35+
True,
36+
cmd_output['enabled'],
37+
)
4338
self.assertEqual(
4439
'testdescription',
45-
re.search(self.re_description, raw_output).group(1))
40+
cmd_output['description'],
41+
)
4642

4743
name2 = uuid.uuid4().hex
48-
raw_output = self.openstack(
49-
'network flavor create --description testdescription1 --disable'
50-
' --service-type ' + self.SERVICE_TYPE + ' ' + name2,
51-
)
44+
cmd_output = json.loads(self.openstack(
45+
'network flavor create -f json --description testdescription1 '
46+
'--disable --service-type L3_ROUTER_NAT ' + name2,
47+
))
5248
self.assertEqual(
5349
name2,
54-
re.search(self.re_name, raw_output).group(1))
50+
cmd_output['name'],
51+
)
5552
self.assertEqual(
56-
'False',
57-
re.search(self.re_enabled, raw_output).group(1))
53+
False,
54+
cmd_output['enabled'],
55+
)
5856
self.assertEqual(
5957
'testdescription1',
60-
re.search(self.re_description, raw_output).group(1))
61-
58+
cmd_output['description'],
59+
)
6260
raw_output = self.openstack(
6361
'network flavor delete ' + name1 + " " + name2)
6462
self.assertOutput('', raw_output)
6563

6664
def test_network_flavor_list(self):
65+
"""Test create defaults, list filters, delete"""
6766
name1 = uuid.uuid4().hex
68-
raw_output = self.openstack(
69-
'network flavor create --description testdescription --enable'
70-
' --service-type ' + self.SERVICE_TYPE + ' ' + name1,
71-
)
67+
cmd_output = json.loads(self.openstack(
68+
'network flavor create -f json --description testdescription '
69+
'--enable --service-type L3_ROUTER_NAT ' + name1,
70+
))
7271
self.addCleanup(self.openstack, "network flavor delete " + name1)
7372
self.assertEqual(
7473
name1,
75-
re.search(self.re_name, raw_output).group(1))
74+
cmd_output['name'],
75+
)
7676
self.assertEqual(
77-
'True',
78-
re.search(self.re_enabled, raw_output).group(1))
77+
True,
78+
cmd_output['enabled'],
79+
)
7980
self.assertEqual(
8081
'testdescription',
81-
re.search(self.re_description, raw_output).group(1))
82+
cmd_output['description'],
83+
)
8284

8385
name2 = uuid.uuid4().hex
84-
raw_output = self.openstack(
85-
'network flavor create --description testdescription --disable'
86-
' --service-type ' + self.SERVICE_TYPE + ' ' + name2,
87-
)
86+
cmd_output = json.loads(self.openstack(
87+
'network flavor create -f json --description testdescription1 '
88+
'--disable --service-type L3_ROUTER_NAT ' + name2,
89+
))
8890
self.assertEqual(
8991
name2,
90-
re.search(self.re_name, raw_output).group(1))
92+
cmd_output['name'],
93+
)
9194
self.assertEqual(
92-
'False',
93-
re.search(self.re_enabled, raw_output).group(1))
95+
False,
96+
cmd_output['enabled'],
97+
)
9498
self.assertEqual(
95-
'testdescription',
96-
re.search(self.re_description, raw_output).group(1))
99+
'testdescription1',
100+
cmd_output['description'],
101+
)
97102
self.addCleanup(self.openstack, "network flavor delete " + name2)
98103

99104
# Test list
100-
raw_output = self.openstack('network flavor list')
101-
self.assertIsNotNone(raw_output)
102-
self.assertIsNotNone(re.search(name1, raw_output))
103-
self.assertIsNotNone(re.search(name2, raw_output))
105+
cmd_output = json.loads(self.openstack(
106+
'network flavor list -f json ',))
107+
self.assertIsNotNone(cmd_output)
108+
109+
name_list = [item.get('Name') for item in cmd_output]
110+
self.assertIn(name1, name_list)
111+
self.assertIn(name2, name_list)
104112

105113
def test_network_flavor_set(self):
114+
"""Tests create options, set, show, delete"""
106115
name = uuid.uuid4().hex
107116
newname = name + "_"
108-
raw_output = self.openstack(
109-
'network flavor create --description testdescription --enable'
110-
' --service-type ' + self.SERVICE_TYPE + ' ' + name,
111-
)
117+
cmd_output = json.loads(self.openstack(
118+
'network flavor create -f json --description testdescription '
119+
'--disable --service-type L3_ROUTER_NAT ' + name,
120+
))
112121
self.addCleanup(self.openstack, "network flavor delete " + newname)
113122
self.assertEqual(
114123
name,
115-
re.search(self.re_name, raw_output).group(1))
124+
cmd_output['name'],
125+
)
116126
self.assertEqual(
117-
'True',
118-
re.search(self.re_enabled, raw_output).group(1))
127+
False,
128+
cmd_output['enabled'],
129+
)
119130
self.assertEqual(
120131
'testdescription',
121-
re.search(self.re_description, raw_output).group(1))
132+
cmd_output['description'],
133+
)
122134

123-
self.openstack(
135+
raw_output = self.openstack(
124136
'network flavor set --name ' + newname + ' --disable ' + name
125137
)
126-
raw_output = self.openstack('network flavor show ' + newname)
138+
self.assertOutput('', raw_output)
139+
140+
cmd_output = json.loads(self.openstack(
141+
'network flavor show -f json ' + newname,))
127142
self.assertEqual(
128143
newname,
129-
re.search(self.re_name, raw_output).group(1))
144+
cmd_output['name'],
145+
)
130146
self.assertEqual(
131-
'False',
132-
re.search(self.re_enabled, raw_output).group(1))
147+
False,
148+
cmd_output['enabled'],
149+
)
133150
self.assertEqual(
134151
'testdescription',
135-
re.search(self.re_description, raw_output).group(1))
152+
cmd_output['description'],
153+
)
136154

137155
def test_network_flavor_show(self):
156+
"""Test show network flavor"""
138157
name = uuid.uuid4().hex
139-
self.openstack(
140-
'network flavor create --description testdescription --enable'
141-
' --service-type ' + self.SERVICE_TYPE + ' ' + name,
142-
)
158+
cmd_output = json.loads(self.openstack(
159+
'network flavor create -f json --description testdescription '
160+
'--disable --service-type L3_ROUTER_NAT ' + name,
161+
))
143162
self.addCleanup(self.openstack, "network flavor delete " + name)
144-
raw_output = self.openstack('network flavor show ' + name)
163+
cmd_output = json.loads(self.openstack(
164+
'network flavor show -f json ' + name,))
145165
self.assertEqual(
146166
name,
147-
re.search(self.re_name, raw_output).group(1))
167+
cmd_output['name'],
168+
)
148169
self.assertEqual(
149-
'True',
150-
re.search(self.re_enabled, raw_output).group(1))
170+
False,
171+
cmd_output['enabled'],
172+
)
151173
self.assertEqual(
152174
'testdescription',
153-
re.search(self.re_description, raw_output).group(1))
175+
cmd_output['description'],
176+
)

0 commit comments

Comments
 (0)