Merge "Beef up address scope functional tests"

This commit is contained in:
Jenkins 2017-01-04 11:30:05 +00:00 committed by Gerrit Code Review
commit e6e3cd295c
1 changed files with 127 additions and 21 deletions

View File

@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import re
import uuid import uuid
from openstackclient.tests.functional import base from openstackclient.tests.functional import base
@ -17,33 +18,138 @@ from openstackclient.tests.functional import base
class AddressScopeTests(base.TestCase): class AddressScopeTests(base.TestCase):
"""Functional tests for address scope. """ """Functional tests for address scope. """
NAME = uuid.uuid4().hex
HEADERS = ['Name'] # NOTE(dtroyer): Do not normalize the setup and teardown of the resource
FIELDS = ['name'] # creation and deletion. Little is gained when each test
# has its own needs and there are collisions when running
# tests in parallel.
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
opts = cls.get_opts(cls.FIELDS) # Set up some regex for matching below
raw_output = cls.openstack('address scope create ' + cls.NAME + opts) cls.re_name = re.compile("name\s+\|\s+([^|]+?)\s+\|")
cls.assertOutput(cls.NAME + "\n", raw_output) cls.re_ip_version = re.compile("ip_version\s+\|\s+(\S+)")
cls.re_shared = re.compile("shared\s+\|\s+(\S+)")
@classmethod def test_address_scope_delete(self):
def tearDownClass(cls): """Test create, delete multiple"""
raw_output = cls.openstack('address scope delete ' + cls.NAME) name1 = uuid.uuid4().hex
cls.assertOutput('', raw_output) 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): def test_address_scope_list(self):
opts = self.get_opts(self.HEADERS) """Test create defaults, list filters, delete"""
raw_output = self.openstack('address scope list' + opts) name1 = uuid.uuid4().hex
self.assertIn(self.NAME, raw_output) 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): name2 = uuid.uuid4().hex
opts = self.get_opts(self.FIELDS) raw_output = self.openstack(
raw_output = self.openstack('address scope show ' + self.NAME + opts) 'address scope create --ip-version 6 --no-share ' + name2,
self.assertEqual(self.NAME + "\n", raw_output) )
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): def test_address_scope_set(self):
self.openstack('address scope set --share ' + self.NAME) """Tests create options, set, show, delete"""
opts = self.get_opts(['shared']) name = uuid.uuid4().hex
raw_output = self.openstack('address scope show ' + self.NAME + opts) newname = name + "_"
self.assertEqual("True\n", raw_output) 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),
)