summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-01-04 11:30:05 +0000
committerGerrit Code Review <review@openstack.org>2017-01-04 11:30:05 +0000
commite6e3cd295ceadadaf7e85a719dc9545157c16e41 (patch)
treea2ac85239813865f16b4f191ad7b96b0259f3e8b /openstackclient/tests
parentc416aecb2f7fc8e993ca2b22edd4dea3673d2cac (diff)
parent241e0ec1cd27626ee7f77a94d1fce134de3fc872 (diff)
downloadpython-openstackclient-e6e3cd295ceadadaf7e85a719dc9545157c16e41.tar.gz
Merge "Beef up address scope functional tests"
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/functional/network/v2/test_address_scope.py148
1 files changed, 127 insertions, 21 deletions
diff --git a/openstackclient/tests/functional/network/v2/test_address_scope.py b/openstackclient/tests/functional/network/v2/test_address_scope.py
index ef4b5756..75f84344 100644
--- a/openstackclient/tests/functional/network/v2/test_address_scope.py
+++ b/openstackclient/tests/functional/network/v2/test_address_scope.py
@@ -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),
+ )
+
+ 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),
+ )
- 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)
+ # 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),
+ )