Tempest tests uses only supported QoS rule types
If rule type required for QoS tempest test is not supported by current configuration of Neutron then such test will be skipped. For example if neutron-server is running with ML2 plugin only with openvswitch mechanism driver loaded then tests related to MINIMUM_BANDWIDTH rule type will be skipped because openvswitch mechanism driver don't support this kind of rule. Change-Id: I88e59cdbd79afb5337052ba3e5aecb96c7c8ea1c Closes-Bug: 1644097
This commit is contained in:
parent
aa7d30f797
commit
9f19b3e7e1
@ -348,6 +348,11 @@ class BaseNetworkTest(test.BaseTestCase):
|
|||||||
router_id, subnet_id)
|
router_id, subnet_id)
|
||||||
return interface
|
return interface
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_supported_qos_rule_types(cls):
|
||||||
|
body = cls.client.list_qos_rule_types()
|
||||||
|
return [rule_type['type'] for rule_type in body['rule_types']]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_qos_policy(cls, name, description=None, shared=False,
|
def create_qos_policy(cls, name, description=None, shared=False,
|
||||||
tenant_id=None):
|
tenant_id=None):
|
||||||
@ -492,6 +497,18 @@ class BaseAdminNetworkTest(BaseNetworkTest):
|
|||||||
raise exceptions.InvalidConfiguration(message)
|
raise exceptions.InvalidConfiguration(message)
|
||||||
|
|
||||||
|
|
||||||
|
def require_qos_rule_type(rule_type):
|
||||||
|
def decorator(f):
|
||||||
|
@functools.wraps(f)
|
||||||
|
def wrapper(self, *func_args, **func_kwargs):
|
||||||
|
if rule_type not in self.get_supported_qos_rule_types():
|
||||||
|
raise self.skipException(
|
||||||
|
"%s rule type is required." % rule_type)
|
||||||
|
return f(self, *func_args, **func_kwargs)
|
||||||
|
return wrapper
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
def _require_sorting(f):
|
def _require_sorting(f):
|
||||||
@functools.wraps(f)
|
@functools.wraps(f)
|
||||||
def inner(self, *args, **kwargs):
|
def inner(self, *args, **kwargs):
|
||||||
|
@ -360,6 +360,7 @@ class QosTestJSON(base.BaseAdminNetworkTest):
|
|||||||
|
|
||||||
class QosBandwidthLimitRuleTestJSON(base.BaseAdminNetworkTest):
|
class QosBandwidthLimitRuleTestJSON(base.BaseAdminNetworkTest):
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@base.require_qos_rule_type(qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)
|
||||||
@test.requires_ext(extension="qos", service="network")
|
@test.requires_ext(extension="qos", service="network")
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(QosBandwidthLimitRuleTestJSON, cls).resource_setup()
|
super(QosBandwidthLimitRuleTestJSON, cls).resource_setup()
|
||||||
@ -771,6 +772,7 @@ class QosDscpMarkingRuleTestJSON(base.BaseAdminNetworkTest):
|
|||||||
VALID_DSCP_MARK2 = 48
|
VALID_DSCP_MARK2 = 48
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@base.require_qos_rule_type(qos_consts.RULE_TYPE_DSCP_MARKING)
|
||||||
@test.requires_ext(extension="qos", service="network")
|
@test.requires_ext(extension="qos", service="network")
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(QosDscpMarkingRuleTestJSON, cls).resource_setup()
|
super(QosDscpMarkingRuleTestJSON, cls).resource_setup()
|
||||||
@ -904,6 +906,7 @@ class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):
|
|||||||
RULES_NAME = RULE_NAME + "s"
|
RULES_NAME = RULE_NAME + "s"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@base.require_qos_rule_type(qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH)
|
||||||
@test.requires_ext(extension="qos", service="network")
|
@test.requires_ext(extension="qos", service="network")
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(QosMinimumBandwidthRuleTestJSON, cls).resource_setup()
|
super(QosMinimumBandwidthRuleTestJSON, cls).resource_setup()
|
||||||
|
@ -22,6 +22,8 @@ from tempest.lib import exceptions
|
|||||||
from tempest import test
|
from tempest import test
|
||||||
|
|
||||||
from neutron.common import utils
|
from neutron.common import utils
|
||||||
|
from neutron.services.qos import qos_consts
|
||||||
|
from neutron.tests.tempest.api import base as base_api
|
||||||
from neutron.tests.tempest import config
|
from neutron.tests.tempest import config
|
||||||
from neutron.tests.tempest.scenario import base
|
from neutron.tests.tempest.scenario import base
|
||||||
from neutron.tests.tempest.scenario import constants
|
from neutron.tests.tempest.scenario import constants
|
||||||
@ -78,6 +80,7 @@ class QoSTest(base.BaseTempestTestCase):
|
|||||||
FILE_PATH = "/tmp/img"
|
FILE_PATH = "/tmp/img"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@base_api.require_qos_rule_type(qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)
|
||||||
@test.requires_ext(extension="qos", service="network")
|
@test.requires_ext(extension="qos", service="network")
|
||||||
def resource_setup(cls):
|
def resource_setup(cls):
|
||||||
super(QoSTest, cls).resource_setup()
|
super(QoSTest, cls).resource_setup()
|
||||||
|
Loading…
Reference in New Issue
Block a user