api-tests: Common way to define required extensions
As some tests require extensions to be enabled on the server, this patch
introduces a new class attribute to the API base class. If any extension
defined in test class is not enabled on the server, then all tests in
the test class will be skipped.
Change-Id: I0629153f973daeb3bef3a6968360cbc2d427f9ad
diff --git a/neutron/tests/tempest/api/test_qos.py b/neutron/tests/tempest/api/test_qos.py
index 7280297..c15f10a 100644
--- a/neutron/tests/tempest/api/test_qos.py
+++ b/neutron/tests/tempest/api/test_qos.py
@@ -28,10 +28,8 @@
class QosTestJSON(base.BaseAdminNetworkTest):
- @classmethod
- @test.requires_ext(extension="qos", service="network")
- def resource_setup(cls):
- super(QosTestJSON, cls).resource_setup()
+
+ required_extensions = ['qos']
@decorators.idempotent_id('108fbdf7-3463-4e47-9871-d07f3dcf5bbb')
def test_create_policy(self):
@@ -366,9 +364,9 @@
class QosBandwidthLimitRuleTestJSON(base.BaseAdminNetworkTest):
direction = None
+ required_extensions = ['qos']
@classmethod
- @test.requires_ext(extension="qos", service="network")
@base.require_qos_rule_type(qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)
def resource_setup(cls):
super(QosBandwidthLimitRuleTestJSON, cls).resource_setup()
@@ -550,24 +548,23 @@
class QosBandwidthLimitRuleWithDirectionTestJSON(
QosBandwidthLimitRuleTestJSON):
+ required_extensions = (
+ QosBandwidthLimitRuleTestJSON.required_extensions +
+ ['qos-bw-limit-direction']
+ )
scenarios = [
('ingress', {'direction': 'ingress'}),
('egress', {'direction': 'egress'}),
]
- @classmethod
- @test.requires_ext(extension="qos-bw-limit-direction", service="network")
- def resource_setup(cls):
- super(QosBandwidthLimitRuleWithDirectionTestJSON, cls).resource_setup()
-
class RbacSharedQosPoliciesTest(base.BaseAdminNetworkTest):
force_tenant_isolation = True
credentials = ['primary', 'alt', 'admin']
+ required_extensions = ['qos']
@classmethod
- @test.requires_ext(extension="qos", service="network")
def resource_setup(cls):
super(RbacSharedQosPoliciesTest, cls).resource_setup()
cls.client2 = cls.alt_manager.network_client
@@ -818,8 +815,9 @@
VALID_DSCP_MARK1 = 56
VALID_DSCP_MARK2 = 48
+ required_extensions = ['qos']
+
@classmethod
- @test.requires_ext(extension="qos", service="network")
@base.require_qos_rule_type(qos_consts.RULE_TYPE_DSCP_MARKING)
def resource_setup(cls):
super(QosDscpMarkingRuleTestJSON, cls).resource_setup()
@@ -951,9 +949,9 @@
DIRECTION_INGRESS = "ingress"
RULE_NAME = qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH + "_rule"
RULES_NAME = RULE_NAME + "s"
+ required_extensions = ['qos']
@classmethod
- @test.requires_ext(extension="qos", service="network")
@base.require_qos_rule_type(qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH)
def resource_setup(cls):
super(QosMinimumBandwidthRuleTestJSON, cls).resource_setup()
@@ -1113,8 +1111,9 @@
list_kwargs = {'description': 'search-criteria-test'}
list_as_admin = True
+ required_extensions = ['qos']
+
@classmethod
- @test.requires_ext(extension="qos", service="network")
def resource_setup(cls):
super(QosSearchCriteriaTest, cls).resource_setup()
for name in cls.resource_names: