summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2016-12-29 14:51:35 -0600
committerDean Troyer <dtroyer@gmail.com>2016-12-30 15:15:29 -0600
commit241e0ec1cd27626ee7f77a94d1fce134de3fc872 (patch)
tree20cdd412f0ae8f819c98ffd79026ff6503ca61b6 /openstackclient
parent17a249c5ddc22403486f32575e91da7db10ff8e2 (diff)
downloadpython-openstackclient-241e0ec1cd27626ee7f77a94d1fce134de3fc872.tar.gz
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
Diffstat (limited to 'openstackclient')
-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),
+ )