f1d32dbe9b
Use fixtures to restore the API version changes of os.environ in each functional tests, aims to avoid the following test cases failing in unexpected context. And make sure setUpClass/tearDownClass call super class's corresponding methods first. Change-Id: Ie248fe9d3a9e25f1b076c9f2c363200f29a83817 Closes-Bug: #1696080
136 lines
4.3 KiB
Python
136 lines
4.3 KiB
Python
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# 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
|
|
|
|
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):
|
|
super(QuotaTests, cls).setUpClass()
|
|
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):
|
|
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 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 --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_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"],
|
|
)
|
|
|
|
# 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_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"],
|
|
)
|
|
|
|
# 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)
|