Merge "Queens jobs will now be run with same version of plugin"
diff --git a/.zuul.yaml b/.zuul.yaml
index 824e4ae..13d419d 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -852,6 +852,8 @@
neutron-trunk: true
neutron-log: true
neutron-port-forwarding: true
+ devstack_localrc:
+ USE_PYTHON3: true
devstack_local_conf:
post-config:
$NEUTRON_CONF:
@@ -1036,6 +1038,10 @@
- sfc
devstack_localrc:
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_sfc) | join(',') }}"
+ # TODO(bcafarel): tests still fail from time to time in parallel
+ # https://bugs.launchpad.net/neutron/+bug/1851500
+ # https://bugs.launchpad.net/networking-sfc/+bug/1660366
+ tempest_concurrency: 1
- job:
name: neutron-tempest-plugin-sfc-train
diff --git a/neutron_tempest_plugin/api/test_qos.py b/neutron_tempest_plugin/api/test_qos.py
index 25d2e81..b54cc66 100644
--- a/neutron_tempest_plugin/api/test_qos.py
+++ b/neutron_tempest_plugin/api/test_qos.py
@@ -588,7 +588,8 @@
class QosBandwidthLimitRuleWithDirectionTestJSON(
QosBandwidthLimitRuleTestJSON):
-
+ DIRECTION_EGRESS = "egress"
+ DIRECTION_INGRESS = "ingress"
required_extensions = (
QosBandwidthLimitRuleTestJSON.required_extensions +
['qos-bw-limit-direction']
@@ -598,6 +599,50 @@
('egress', {'direction': 'egress'}),
]
+ @classmethod
+ @base.require_qos_rule_type(qos_consts.RULE_TYPE_BANDWIDTH_LIMIT)
+ def resource_setup(cls):
+ super(QosBandwidthLimitRuleWithDirectionTestJSON, cls).resource_setup()
+
+ @decorators.idempotent_id('c8cbe502-0f7e-11ea-8d71-362b9e155667')
+ def test_create_policy_with_multiple_rules(self):
+ # Create a policy with multiple rules
+ policy = self.create_qos_policy(name='test-policy1',
+ description='test policy1',
+ shared=False)
+
+ rule1 = self.create_qos_bandwidth_limit_rule(policy_id=policy['id'],
+ max_kbps=1024,
+ max_burst_kbps=1024,
+ direction=self.
+ DIRECTION_EGRESS)
+ rule2 = self.create_qos_bandwidth_limit_rule(policy_id=policy['id'],
+ max_kbps=1024,
+ max_burst_kbps=1024,
+ direction=self.
+ DIRECTION_INGRESS)
+ # Check that the rules were added to the policy
+ rules = self.admin_client.list_bandwidth_limit_rules(
+ policy['id'])['bandwidth_limit_rules']
+ rules_ids = [rule['id'] for rule in rules]
+ self.assertIn(rule1['id'], rules_ids)
+ self.assertIn(rule2['id'], rules_ids)
+
+ # Check that the rules creation fails for the same rule types
+ self.assertRaises(exceptions.Conflict,
+ self.create_qos_bandwidth_limit_rule,
+ policy_id=policy['id'],
+ max_kbps=1025,
+ max_burst_kbps=1025,
+ direction=self.DIRECTION_EGRESS)
+
+ self.assertRaises(exceptions.Conflict,
+ self.create_qos_bandwidth_limit_rule,
+ policy_id=policy['id'],
+ max_kbps=1025,
+ max_burst_kbps=1025,
+ direction=self.DIRECTION_INGRESS)
+
class RbacSharedQosPoliciesTest(base.BaseAdminNetworkTest):
diff --git a/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions_negative.py b/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions_negative.py
index 9d14536..78569ea 100644
--- a/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions_negative.py
+++ b/neutron_tempest_plugin/neutron_dynamic_routing/api/test_bgp_speaker_extensions_negative.py
@@ -26,7 +26,7 @@
"""Negative test cases asserting proper behavior of BGP API extension"""
- @decorators.attr(type=['negative', 'smoke'])
+ @decorators.attr(type=['negative'])
@decorators.idempotent_id('75e9ee2f-6efd-4320-bff7-ae24741c8b06')
def test_create_bgp_speaker_illegal_local_asn(self):
wrong_asn = 65537
@@ -36,21 +36,21 @@
self.create_bgp_speaker,
local_as=wrong_asn)
- @decorators.attr(type=['negative', 'smoke'])
+ @decorators.attr(type=['negative'])
@decorators.idempotent_id('6742ec2e-382a-4453-8791-13a19b47cd13')
def test_create_bgp_speaker_non_admin(self):
self.assertRaises(lib_exc.Forbidden,
self.bgp_client.create_bgp_speaker,
{'bgp_speaker': self.default_bgp_speaker_args})
- @decorators.attr(type=['negative', 'smoke'])
+ @decorators.attr(type=['negative'])
@decorators.idempotent_id('33f7aaf0-9786-478b-b2d1-a51086a50eb4')
def test_create_bgp_peer_non_admin(self):
self.assertRaises(lib_exc.Forbidden,
self.bgp_client.create_bgp_peer,
{'bgp_peer': self.default_bgp_peer_args})
- @decorators.attr(type=['negative', 'smoke'])
+ @decorators.attr(type=['negative'])
@decorators.idempotent_id('39435932-0266-4358-899b-0e9b1e53c3e9')
def test_update_bgp_speaker_local_asn(self):
bgp_speaker = self.create_bgp_speaker(**self.default_bgp_speaker_args)