summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional/common
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2017-04-26 17:02:12 -0500
committerDean Troyer <dtroyer@gmail.com>2017-04-26 23:52:34 +0000
commit871450abcd89f9bb5ee9f75cdef3b812695eae93 (patch)
tree3a5b436e301e16f6e99037d6ee7da1ef3eb5bfc0 /openstackclient/tests/functional/common
parent0a0bcbbda2c7384f6308bb8041119d6c38915e2f (diff)
downloadpython-openstackclient-871450abcd89f9bb5ee9f75cdef3b812695eae93.tar.gz
Fix quota functional tests for nova-net
We need to skip some functional tests when testing against a nova-net cloud so add the bits to detect that. Also JSON-ify the quota functional tests and add the skips for nova-net. Change-Id: Ibfeeb3f967f34c98e80271a8214cf95dc50407f1
Diffstat (limited to 'openstackclient/tests/functional/common')
-rw-r--r--openstackclient/tests/functional/common/test_quota.py153
1 files changed, 102 insertions, 51 deletions
diff --git a/openstackclient/tests/functional/common/test_quota.py b/openstackclient/tests/functional/common/test_quota.py
index 8092b3ce..1b13e95e 100644
--- a/openstackclient/tests/functional/common/test_quota.py
+++ b/openstackclient/tests/functional/common/test_quota.py
@@ -10,74 +10,125 @@
# License for the specific language governing permissions and limitations
# under the License.
+import json
+
from openstackclient.tests.functional import base
class QuotaTests(base.TestCase):
- """Functional tests for quota. """
- # Test quota information for compute, network and volume.
- EXPECTED_FIELDS = ['instances', 'networks', 'volumes']
- EXPECTED_CLASS_FIELDS = ['instances', 'volumes']
+ """Functional tests for quota
+
+ Note that for 'set' tests use different quotas for each API in different
+ test runs as these may run in parallel and otherwise step on each other.
+ """
+
PROJECT_NAME = None
@classmethod
def setUpClass(cls):
+ cls.haz_network = base.is_service_enabled('network')
cls.PROJECT_NAME =\
cls.get_openstack_configuration_value('auth.project_name')
def test_quota_list_network_option(self):
- self.openstack('quota set --networks 40 ' +
- self.PROJECT_NAME)
- raw_output = self.openstack('quota list --network')
- self.assertIsNotNone(raw_output)
- self.assertIn("40", raw_output)
+ if not self.haz_network:
+ self.skipTest("No Network service present")
+ self.openstack('quota set --networks 40 ' + self.PROJECT_NAME)
+ cmd_output = json.loads(self.openstack(
+ 'quota list -f json --network'
+ ))
+ self.assertIsNotNone(cmd_output)
+ self.assertEqual(
+ 40,
+ cmd_output[0]["Networks"],
+ )
def test_quota_list_compute_option(self):
- self.openstack('quota set --instances 40 ' +
- self.PROJECT_NAME)
- raw_output = self.openstack('quota list --compute')
- self.assertIsNotNone(raw_output)
- self.assertIn("40", raw_output)
+ self.openstack('quota set --instances 30 ' + self.PROJECT_NAME)
+ cmd_output = json.loads(self.openstack(
+ 'quota list -f json --compute'
+ ))
+ self.assertIsNotNone(cmd_output)
+ self.assertEqual(
+ 30,
+ cmd_output[0]["Instances"],
+ )
def test_quota_list_volume_option(self):
- self.openstack('quota set --backups 40 ' +
- self.PROJECT_NAME)
- raw_output = self.openstack('quota list --volume')
- self.assertIsNotNone(raw_output)
- self.assertIn("40", raw_output)
-
- def test_quota_set(self):
- self.openstack('quota set --instances 11 --volumes 11 --networks 11 ' +
- self.PROJECT_NAME)
- opts = self.get_opts(self.EXPECTED_FIELDS)
- raw_output = self.openstack('quota show ' + self.PROJECT_NAME + opts)
- self.assertEqual("11\n11\n11\n", raw_output)
-
- def test_quota_show(self):
- raw_output = self.openstack('quota show ' + self.PROJECT_NAME)
- for expected_field in self.EXPECTED_FIELDS:
- self.assertIn(expected_field, raw_output)
+ self.openstack('quota set --volumes 20 ' + self.PROJECT_NAME)
+ cmd_output = json.loads(self.openstack(
+ 'quota list -f json --volume'
+ ))
+ self.assertIsNotNone(cmd_output)
+ self.assertEqual(
+ 20,
+ cmd_output[0]["Volumes"],
+ )
- def test_quota_show_default_project(self):
- raw_output = self.openstack('quota show')
- for expected_field in self.EXPECTED_FIELDS:
- self.assertIn(expected_field, raw_output)
+ def test_quota_set_project(self):
+ """Test quota set, show"""
+ network_option = ""
+ if self.haz_network:
+ network_option = "--routers 21 "
+ self.openstack(
+ 'quota set --cores 31 --backups 41 ' +
+ network_option +
+ self.PROJECT_NAME
+ )
+ cmd_output = json.loads(self.openstack(
+ 'quota show -f json ' + self.PROJECT_NAME
+ ))
+ self.assertIsNotNone(cmd_output)
+ self.assertEqual(
+ 31,
+ cmd_output["cores"],
+ )
+ self.assertEqual(
+ 41,
+ cmd_output["backups"],
+ )
+ if self.haz_network:
+ self.assertEqual(
+ 21,
+ cmd_output["routers"],
+ )
- def test_quota_show_with_default_option(self):
- raw_output = self.openstack('quota show --default')
- for expected_field in self.EXPECTED_FIELDS:
- self.assertIn(expected_field, raw_output)
+ # Check default quotas
+ cmd_output = json.loads(self.openstack(
+ 'quota show -f json --default'
+ ))
+ self.assertIsNotNone(cmd_output)
+ # We don't necessarily know the default quotas, we're checking the
+ # returned attributes
+ self.assertTrue(cmd_output["cores"] >= 0)
+ self.assertTrue(cmd_output["backups"] >= 0)
+ if self.haz_network:
+ self.assertTrue(cmd_output["routers"] >= 0)
- def test_quota_show_with_class_option(self):
- raw_output = self.openstack('quota show --class')
- for expected_field in self.EXPECTED_CLASS_FIELDS:
- self.assertIn(expected_field, raw_output)
+ def test_quota_set_class(self):
+ self.openstack(
+ 'quota set --key-pairs 33 --snapshots 43 ' +
+ '--class default'
+ )
+ cmd_output = json.loads(self.openstack(
+ 'quota show -f json --class default'
+ ))
+ self.assertIsNotNone(cmd_output)
+ self.assertEqual(
+ 33,
+ cmd_output["key-pairs"],
+ )
+ self.assertEqual(
+ 43,
+ cmd_output["snapshots"],
+ )
- def test_quota_class_set(self):
- class_name = 'default'
- class_expected_fields = ['instances', 'volumes']
- self.openstack('quota set --instances 11 --volumes 11 --class ' +
- class_name)
- opts = self.get_opts(class_expected_fields)
- raw_output = self.openstack('quota show --class ' + class_name + opts)
- self.assertEqual("11\n11\n", raw_output)
+ # Check default quota class
+ cmd_output = json.loads(self.openstack(
+ 'quota show -f json --class'
+ ))
+ self.assertIsNotNone(cmd_output)
+ # We don't necessarily know the default quotas, we're checking the
+ # returned attributes
+ self.assertTrue(cmd_output["key-pairs"] >= 0)
+ self.assertTrue(cmd_output["snapshots"] >= 0)