Skip to content

Commit e6e3cd2

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Beef up address scope functional tests"
2 parents c416aec + 241e0ec commit e6e3cd2

1 file changed

Lines changed: 127 additions & 21 deletions

File tree

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

Lines changed: 127 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,40 +10,146 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import re
1314
import uuid
1415

1516
from openstackclient.tests.functional import base
1617

1718

1819
class AddressScopeTests(base.TestCase):
1920
"""Functional tests for address scope. """
20-
NAME = uuid.uuid4().hex
21-
HEADERS = ['Name']
22-
FIELDS = ['name']
21+
22+
# NOTE(dtroyer): Do not normalize the setup and teardown of the resource
23+
# creation and deletion. Little is gained when each test
24+
# has its own needs and there are collisions when running
25+
# tests in parallel.
2326

2427
@classmethod
2528
def setUpClass(cls):
26-
opts = cls.get_opts(cls.FIELDS)
27-
raw_output = cls.openstack('address scope create ' + cls.NAME + opts)
28-
cls.assertOutput(cls.NAME + "\n", raw_output)
29+
# Set up some regex for matching below
30+
cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
31+
cls.re_ip_version = re.compile("ip_version\s+\|\s+(\S+)")
32+
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
2933

30-
@classmethod
31-
def tearDownClass(cls):
32-
raw_output = cls.openstack('address scope delete ' + cls.NAME)
33-
cls.assertOutput('', raw_output)
34+
def test_address_scope_delete(self):
35+
"""Test create, delete multiple"""
36+
name1 = uuid.uuid4().hex
37+
raw_output = self.openstack(
38+
'address scope create ' + name1,
39+
)
40+
self.assertEqual(
41+
name1,
42+
re.search(self.re_name, raw_output).group(1),
43+
)
44+
# Check the default values
45+
self.assertEqual(
46+
'False',
47+
re.search(self.re_shared, raw_output).group(1),
48+
)
49+
50+
name2 = uuid.uuid4().hex
51+
raw_output = self.openstack(
52+
'address scope create ' + name2,
53+
)
54+
self.assertEqual(
55+
name2,
56+
re.search(self.re_name, raw_output).group(1),
57+
)
58+
59+
raw_output = self.openstack(
60+
'address scope delete ' + name1 + ' ' + name2,
61+
)
62+
self.assertOutput('', raw_output)
3463

3564
def test_address_scope_list(self):
36-
opts = self.get_opts(self.HEADERS)
37-
raw_output = self.openstack('address scope list' + opts)
38-
self.assertIn(self.NAME, raw_output)
65+
"""Test create defaults, list filters, delete"""
66+
name1 = uuid.uuid4().hex
67+
raw_output = self.openstack(
68+
'address scope create --ip-version 4 --share ' + name1,
69+
)
70+
self.addCleanup(self.openstack, 'address scope delete ' + name1)
71+
self.assertEqual(
72+
'4',
73+
re.search(self.re_ip_version, raw_output).group(1),
74+
)
75+
self.assertEqual(
76+
'True',
77+
re.search(self.re_shared, raw_output).group(1),
78+
)
79+
80+
name2 = uuid.uuid4().hex
81+
raw_output = self.openstack(
82+
'address scope create --ip-version 6 --no-share ' + name2,
83+
)
84+
self.addCleanup(self.openstack, 'address scope delete ' + name2)
85+
self.assertEqual(
86+
'6',
87+
re.search(self.re_ip_version, raw_output).group(1),
88+
)
89+
self.assertEqual(
90+
'False',
91+
re.search(self.re_shared, raw_output).group(1),
92+
)
3993

40-
def test_address_scope_show(self):
41-
opts = self.get_opts(self.FIELDS)
42-
raw_output = self.openstack('address scope show ' + self.NAME + opts)
43-
self.assertEqual(self.NAME + "\n", raw_output)
94+
# Test list
95+
raw_output = self.openstack('address scope list')
96+
self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
97+
self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
98+
99+
# Test list --share
100+
# TODO(dtroyer): returns 'HttpException: Bad Request'
101+
# raw_output = self.openstack('address scope list --share')
102+
# self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
103+
# self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
104+
105+
# Test list --no-share
106+
# TODO(dtroyer): returns 'HttpException: Bad Request'
107+
# raw_output = self.openstack('address scope list --no-share')
108+
# self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
109+
# self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
44110

45111
def test_address_scope_set(self):
46-
self.openstack('address scope set --share ' + self.NAME)
47-
opts = self.get_opts(['shared'])
48-
raw_output = self.openstack('address scope show ' + self.NAME + opts)
49-
self.assertEqual("True\n", raw_output)
112+
"""Tests create options, set, show, delete"""
113+
name = uuid.uuid4().hex
114+
newname = name + "_"
115+
raw_output = self.openstack(
116+
'address scope create ' +
117+
'--ip-version 4 ' +
118+
'--no-share ' +
119+
name,
120+
)
121+
self.addCleanup(self.openstack, 'address scope delete ' + newname)
122+
self.assertEqual(
123+
name,
124+
re.search(self.re_name, raw_output).group(1),
125+
)
126+
self.assertEqual(
127+
'4',
128+
re.search(self.re_ip_version, raw_output).group(1),
129+
)
130+
self.assertEqual(
131+
'False',
132+
re.search(self.re_shared, raw_output).group(1),
133+
)
134+
135+
raw_output = self.openstack(
136+
'address scope set ' +
137+
'--name ' + newname +
138+
' --share ' +
139+
name,
140+
)
141+
self.assertOutput('', raw_output)
142+
143+
raw_output = self.openstack('address scope show ' + newname)
144+
self.assertEqual(
145+
newname,
146+
re.search(self.re_name, raw_output).group(1),
147+
)
148+
self.assertEqual(
149+
'4',
150+
re.search(self.re_ip_version, raw_output).group(1),
151+
)
152+
self.assertEqual(
153+
'True',
154+
re.search(self.re_shared, raw_output).group(1),
155+
)

0 commit comments

Comments
 (0)