Beef up address scope functional tests
We need to get more thorough in our functional testing, so start by adding tests for all create and set options, check return values. This also removes most of the setupClass() and teardownClass() methods as they held common state that was subject to race conditions when running tests in parallel. Change-Id: Ib337f9e9d16b4183bb319b58cbe943045f365ff2
This commit is contained in:
parent
17a249c5dd
commit
241e0ec1cd
|
@ -10,6 +10,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import re
|
||||
import uuid
|
||||
|
||||
from openstackclient.tests.functional import base
|
||||
|
@ -17,33 +18,138 @@ from openstackclient.tests.functional import base
|
|||
|
||||
class AddressScopeTests(base.TestCase):
|
||||
"""Functional tests for address scope. """
|
||||
NAME = uuid.uuid4().hex
|
||||
HEADERS = ['Name']
|
||||
FIELDS = ['name']
|
||||
|
||||
# NOTE(dtroyer): Do not normalize the setup and teardown of the resource
|
||||
# creation and deletion. Little is gained when each test
|
||||
# has its own needs and there are collisions when running
|
||||
# tests in parallel.
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
opts = cls.get_opts(cls.FIELDS)
|
||||
raw_output = cls.openstack('address scope create ' + cls.NAME + opts)
|
||||
cls.assertOutput(cls.NAME + "\n", raw_output)
|
||||
# Set up some regex for matching below
|
||||
cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
|
||||
cls.re_ip_version = re.compile("ip_version\s+\|\s+(\S+)")
|
||||
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
raw_output = cls.openstack('address scope delete ' + cls.NAME)
|
||||
cls.assertOutput('', raw_output)
|
||||
def test_address_scope_delete(self):
|
||||
"""Test create, delete multiple"""
|
||||
name1 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'address scope create ' + name1,
|
||||
)
|
||||
self.assertEqual(
|
||||
name1,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
)
|
||||
# Check the default values
|
||||
self.assertEqual(
|
||||
'False',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
)
|
||||
|
||||
name2 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'address scope create ' + name2,
|
||||
)
|
||||
self.assertEqual(
|
||||
name2,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
)
|
||||
|
||||
raw_output = self.openstack(
|
||||
'address scope delete ' + name1 + ' ' + name2,
|
||||
)
|
||||
self.assertOutput('', raw_output)
|
||||
|
||||
def test_address_scope_list(self):
|
||||
opts = self.get_opts(self.HEADERS)
|
||||
raw_output = self.openstack('address scope list' + opts)
|
||||
self.assertIn(self.NAME, raw_output)
|
||||
"""Test create defaults, list filters, delete"""
|
||||
name1 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'address scope create --ip-version 4 --share ' + name1,
|
||||
)
|
||||
self.addCleanup(self.openstack, 'address scope delete ' + name1)
|
||||
self.assertEqual(
|
||||
'4',
|
||||
re.search(self.re_ip_version, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'True',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
)
|
||||
|
||||
def test_address_scope_show(self):
|
||||
opts = self.get_opts(self.FIELDS)
|
||||
raw_output = self.openstack('address scope show ' + self.NAME + opts)
|
||||
self.assertEqual(self.NAME + "\n", raw_output)
|
||||
name2 = uuid.uuid4().hex
|
||||
raw_output = self.openstack(
|
||||
'address scope create --ip-version 6 --no-share ' + name2,
|
||||
)
|
||||
self.addCleanup(self.openstack, 'address scope delete ' + name2)
|
||||
self.assertEqual(
|
||||
'6',
|
||||
re.search(self.re_ip_version, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'False',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
)
|
||||
|
||||
# Test list
|
||||
raw_output = self.openstack('address scope list')
|
||||
self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
|
||||
self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
|
||||
|
||||
# Test list --share
|
||||
# TODO(dtroyer): returns 'HttpException: Bad Request'
|
||||
# raw_output = self.openstack('address scope list --share')
|
||||
# self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
|
||||
# self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
|
||||
|
||||
# Test list --no-share
|
||||
# TODO(dtroyer): returns 'HttpException: Bad Request'
|
||||
# raw_output = self.openstack('address scope list --no-share')
|
||||
# self.assertIsNotNone(re.search(name1 + "\s+\|\s+4", raw_output))
|
||||
# self.assertIsNotNone(re.search(name2 + "\s+\|\s+6", raw_output))
|
||||
|
||||
def test_address_scope_set(self):
|
||||
self.openstack('address scope set --share ' + self.NAME)
|
||||
opts = self.get_opts(['shared'])
|
||||
raw_output = self.openstack('address scope show ' + self.NAME + opts)
|
||||
self.assertEqual("True\n", raw_output)
|
||||
"""Tests create options, set, show, delete"""
|
||||
name = uuid.uuid4().hex
|
||||
newname = name + "_"
|
||||
raw_output = self.openstack(
|
||||
'address scope create ' +
|
||||
'--ip-version 4 ' +
|
||||
'--no-share ' +
|
||||
name,
|
||||
)
|
||||
self.addCleanup(self.openstack, 'address scope delete ' + newname)
|
||||
self.assertEqual(
|
||||
name,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'4',
|
||||
re.search(self.re_ip_version, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'False',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
)
|
||||
|
||||
raw_output = self.openstack(
|
||||
'address scope set ' +
|
||||
'--name ' + newname +
|
||||
' --share ' +
|
||||
name,
|
||||
)
|
||||
self.assertOutput('', raw_output)
|
||||
|
||||
raw_output = self.openstack('address scope show ' + newname)
|
||||
self.assertEqual(
|
||||
newname,
|
||||
re.search(self.re_name, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'4',
|
||||
re.search(self.re_ip_version, raw_output).group(1),
|
||||
)
|
||||
self.assertEqual(
|
||||
'True',
|
||||
re.search(self.re_shared, raw_output).group(1),
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue