Skip to content

Commit a76d381

Browse files
stevemarDean Troyer
authored andcommitted
Fix network functional tests for sdk 0.9.12
it seems the SDK returns "is_default", but doesn't actually set it based on --default or --is-default I already had these functioanl tests mostly converted to JSON, so I dumped that in here too to make the is_default stuff cleaner. Change-Id: I47ca62f57c73aa7fa984ca54742fc86b6bb837c4
1 parent 339ab40 commit a76d381

1 file changed

Lines changed: 125 additions & 104 deletions

File tree

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

Lines changed: 125 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -10,195 +10,212 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13-
import re
13+
import json
1414
import uuid
1515

16-
import testtools
17-
1816
from openstackclient.tests.functional import base
1917

2018

2119
class NetworkTests(base.TestCase):
2220
"""Functional tests for network"""
2321

24-
@classmethod
25-
def setUpClass(cls):
26-
# Set up some regex for matching below
27-
cls.re_id = re.compile("id\s+\|\s+(\S+)")
28-
cls.re_description = re.compile("description\s+\|\s+([^|]+?)\s+\|")
29-
cls.re_enabled = re.compile("admin_state_up\s+\|\s+(\S+)")
30-
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
31-
cls.re_external = re.compile("router:external\s+\|\s+(\S+)")
32-
cls.re_default = re.compile("is_default\s+\|\s+(\S+)")
33-
cls.re_port_security = re.compile(
34-
"port_security_enabled\s+\|\s+(\S+)"
35-
)
36-
3722
def test_network_delete(self):
3823
"""Test create, delete multiple"""
3924
name1 = uuid.uuid4().hex
40-
raw_output = self.openstack(
41-
'network create ' +
25+
cmd_output = json.loads(self.openstack(
26+
'network create -f json ' +
4227
'--description aaaa ' +
4328
name1
44-
)
29+
))
30+
self.assertIsNotNone(cmd_output["id"])
4531
self.assertEqual(
4632
'aaaa',
47-
re.search(self.re_description, raw_output).group(1),
33+
cmd_output["description"],
4834
)
35+
4936
name2 = uuid.uuid4().hex
50-
raw_output = self.openstack(
51-
'network create ' +
37+
cmd_output = json.loads(self.openstack(
38+
'network create -f json ' +
5239
'--description bbbb ' +
5340
name2
54-
)
41+
))
42+
self.assertIsNotNone(cmd_output["id"])
5543
self.assertEqual(
5644
'bbbb',
57-
re.search(self.re_description, raw_output).group(1),
45+
cmd_output["description"],
5846
)
5947

6048
del_output = self.openstack('network delete ' + name1 + ' ' + name2)
6149
self.assertOutput('', del_output)
6250

63-
@testtools.skip('broken SDK testing')
6451
def test_network_list(self):
6552
"""Test create defaults, list filters, delete"""
6653
name1 = uuid.uuid4().hex
67-
raw_output = self.openstack(
68-
'network create ' +
54+
cmd_output = json.loads(self.openstack(
55+
'network create -f json ' +
6956
'--description aaaa ' +
7057
name1
71-
)
58+
))
7259
self.addCleanup(self.openstack, 'network delete ' + name1)
60+
self.assertIsNotNone(cmd_output["id"])
7361
self.assertEqual(
7462
'aaaa',
75-
re.search(self.re_description, raw_output).group(1),
63+
cmd_output["description"],
7664
)
7765
# Check the default values
7866
self.assertEqual(
7967
'UP',
80-
re.search(self.re_enabled, raw_output).group(1),
68+
cmd_output["admin_state_up"],
8169
)
8270
self.assertEqual(
83-
'False',
84-
re.search(self.re_shared, raw_output).group(1),
71+
False,
72+
cmd_output["shared"],
8573
)
8674
self.assertEqual(
8775
'Internal',
88-
re.search(self.re_external, raw_output).group(1),
76+
cmd_output["router:external"],
8977
)
9078
# NOTE(dtroyer): is_default is not present in the create output
9179
# so make sure it stays that way.
92-
self.assertIsNone(re.search(self.re_default, raw_output))
80+
# NOTE(stevemar): is_default *is* present in SDK 0.9.11 and newer,
81+
# but the value seems to always be None, regardless
82+
# of the --default or --no-default value.
83+
# self.assertEqual('x', cmd_output)
84+
if ('is_default' in cmd_output):
85+
self.assertEqual(
86+
None,
87+
cmd_output["is_default"],
88+
)
9389
self.assertEqual(
94-
'True',
95-
re.search(self.re_port_security, raw_output).group(1),
90+
True,
91+
cmd_output["port_security_enabled"],
9692
)
9793

9894
name2 = uuid.uuid4().hex
99-
raw_output = self.openstack(
100-
'network create ' +
95+
cmd_output = json.loads(self.openstack(
96+
'network create -f json ' +
10197
'--description bbbb ' +
10298
'--disable ' +
10399
'--share ' +
104100
name2
105-
)
101+
))
106102
self.addCleanup(self.openstack, 'network delete ' + name2)
103+
self.assertIsNotNone(cmd_output["id"])
107104
self.assertEqual(
108105
'bbbb',
109-
re.search(self.re_description, raw_output).group(1),
106+
cmd_output["description"],
110107
)
111108
self.assertEqual(
112109
'DOWN',
113-
re.search(self.re_enabled, raw_output).group(1),
110+
cmd_output["admin_state_up"],
114111
)
115112
self.assertEqual(
116-
'True',
117-
re.search(self.re_shared, raw_output).group(1),
113+
True,
114+
cmd_output["shared"],
115+
)
116+
if ('is_default' in cmd_output):
117+
self.assertEqual(
118+
None,
119+
cmd_output["is_default"],
120+
)
121+
self.assertEqual(
122+
True,
123+
cmd_output["port_security_enabled"],
118124
)
119125

120126
# Test list --long
121-
raw_output = self.openstack('network list --long')
122-
self.assertIsNotNone(
123-
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output)
124-
)
125-
self.assertIsNotNone(
126-
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output)
127-
)
127+
cmd_output = json.loads(self.openstack(
128+
"network list -f json " +
129+
"--long"
130+
))
131+
col_name = [x["Name"] for x in cmd_output]
132+
self.assertIn(name1, col_name)
133+
self.assertIn(name2, col_name)
128134

129135
# Test list --long --enable
130-
raw_output = self.openstack('network list --long --enable')
131-
self.assertIsNotNone(
132-
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output)
133-
)
134-
self.assertIsNone(
135-
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output)
136-
)
136+
cmd_output = json.loads(self.openstack(
137+
"network list -f json " +
138+
"--enable " +
139+
"--long"
140+
))
141+
col_name = [x["Name"] for x in cmd_output]
142+
self.assertIn(name1, col_name)
143+
self.assertNotIn(name2, col_name)
137144

138145
# Test list --long --disable
139-
raw_output = self.openstack('network list --long --disable')
140-
self.assertIsNone(
141-
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output)
142-
)
143-
self.assertIsNotNone(
144-
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output)
145-
)
146+
cmd_output = json.loads(self.openstack(
147+
"network list -f json " +
148+
"--disable " +
149+
"--long"
150+
))
151+
col_name = [x["Name"] for x in cmd_output]
152+
self.assertNotIn(name1, col_name)
153+
self.assertIn(name2, col_name)
146154

147155
# Test list --long --share
148-
raw_output = self.openstack('network list --long --share')
149-
self.assertIsNone(
150-
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output)
151-
)
152-
self.assertIsNotNone(
153-
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output)
154-
)
156+
cmd_output = json.loads(self.openstack(
157+
"network list -f json " +
158+
"--share " +
159+
"--long"
160+
))
161+
col_name = [x["Name"] for x in cmd_output]
162+
self.assertNotIn(name1, col_name)
163+
self.assertIn(name2, col_name)
155164

156165
# Test list --long --no-share
157-
raw_output = self.openstack('network list --long --no-share')
158-
self.assertIsNotNone(
159-
re.search("\|\s+" + name1 + "\s+\|\s+ACTIVE", raw_output)
160-
)
161-
self.assertIsNone(
162-
re.search("\|\s+" + name2 + "\s+\|\s+ACTIVE", raw_output)
163-
)
166+
cmd_output = json.loads(self.openstack(
167+
"network list -f json " +
168+
"--no-share " +
169+
"--long"
170+
))
171+
col_name = [x["Name"] for x in cmd_output]
172+
self.assertIn(name1, col_name)
173+
self.assertNotIn(name2, col_name)
164174

165-
@testtools.skip('broken SDK testing')
166175
def test_network_set(self):
167176
"""Tests create options, set, show, delete"""
168177
name = uuid.uuid4().hex
169-
raw_output = self.openstack(
170-
'network create ' +
178+
cmd_output = json.loads(self.openstack(
179+
'network create -f json ' +
171180
'--description aaaa ' +
172181
'--enable ' +
173182
'--no-share ' +
174183
'--internal ' +
175184
'--no-default ' +
176185
'--enable-port-security ' +
177186
name
178-
)
187+
))
179188
self.addCleanup(self.openstack, 'network delete ' + name)
189+
self.assertIsNotNone(cmd_output["id"])
180190
self.assertEqual(
181191
'aaaa',
182-
re.search(self.re_description, raw_output).group(1),
192+
cmd_output["description"],
183193
)
184194
self.assertEqual(
185195
'UP',
186-
re.search(self.re_enabled, raw_output).group(1),
196+
cmd_output["admin_state_up"],
187197
)
188198
self.assertEqual(
189-
'False',
190-
re.search(self.re_shared, raw_output).group(1),
199+
False,
200+
cmd_output["shared"],
191201
)
192202
self.assertEqual(
193203
'Internal',
194-
re.search(self.re_external, raw_output).group(1),
204+
cmd_output["router:external"],
195205
)
196206
# NOTE(dtroyer): is_default is not present in the create output
197207
# so make sure it stays that way.
198-
self.assertIsNone(re.search(self.re_default, raw_output))
208+
# NOTE(stevemar): is_default *is* present in SDK 0.9.11 and newer,
209+
# but the value seems to always be None, regardless
210+
# of the --default or --no-default value.
211+
if ('is_default' in cmd_output):
212+
self.assertEqual(
213+
None,
214+
cmd_output["is_default"],
215+
)
199216
self.assertEqual(
200-
'True',
201-
re.search(self.re_port_security, raw_output).group(1),
217+
True,
218+
cmd_output["port_security_enabled"],
202219
)
203220

204221
raw_output = self.openstack(
@@ -212,32 +229,34 @@ def test_network_set(self):
212229
)
213230
self.assertOutput('', raw_output)
214231

215-
raw_output = self.openstack('network show ' + name)
232+
cmd_output = json.loads(self.openstack(
233+
'network show -f json ' + name
234+
))
216235

217236
self.assertEqual(
218237
'cccc',
219-
re.search(self.re_description, raw_output).group(1),
238+
cmd_output["description"],
220239
)
221240
self.assertEqual(
222241
'DOWN',
223-
re.search(self.re_enabled, raw_output).group(1),
242+
cmd_output["admin_state_up"],
224243
)
225244
self.assertEqual(
226-
'True',
227-
re.search(self.re_shared, raw_output).group(1),
245+
True,
246+
cmd_output["shared"],
228247
)
229248
self.assertEqual(
230249
'External',
231-
re.search(self.re_external, raw_output).group(1),
250+
cmd_output["router:external"],
232251
)
233252
# why not 'None' like above??
234253
self.assertEqual(
235-
'False',
236-
re.search(self.re_default, raw_output).group(1),
254+
False,
255+
cmd_output["is_default"],
237256
)
238257
self.assertEqual(
239-
'False',
240-
re.search(self.re_port_security, raw_output).group(1),
258+
False,
259+
cmd_output["port_security_enabled"],
241260
)
242261

243262
# NOTE(dtroyer): There is ambiguity around is_default in that
@@ -252,14 +271,16 @@ def test_network_set(self):
252271
)
253272
self.assertOutput('', raw_output)
254273

255-
raw_output = self.openstack('network show ' + name)
274+
cmd_output = json.loads(self.openstack(
275+
'network show -f json ' + name
276+
))
256277

257278
self.assertEqual(
258279
'cccc',
259-
re.search(self.re_description, raw_output).group(1),
280+
cmd_output["description"],
260281
)
261282
# NOTE(dtroyer): This should be 'True'
262283
self.assertEqual(
263-
'False',
264-
re.search(self.re_default, raw_output).group(1),
284+
False,
285+
cmd_output["port_security_enabled"],
265286
)

0 commit comments

Comments
 (0)