Merge "Migrate neutron-vpnaas tests to neutron-tempest-plugin"
diff --git a/.zuul.yaml b/.zuul.yaml
index fe6db12..e0ecc53 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -176,6 +176,12 @@
nodeset: openstack-single-node-xenial
parent: neutron-tempest-plugin-api
override-checkout: stable/queens
+ required-projects:
+ - openstack/devstack-gate
+ - openstack/neutron
+ - name: openstack/neutron-tempest-plugin
+ override-checkout: 0.7.0
+ - openstack/tempest
vars:
branch_override: stable/queens
# TODO(slaweq): find a way to put this list of extensions in
@@ -236,6 +242,7 @@
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_tempest) | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
+ TEMPEST_BRANCH: queens-em
- job:
name: neutron-tempest-plugin-api-rocky
@@ -522,6 +529,12 @@
parent: neutron-tempest-plugin-scenario-openvswitch
nodeset: openstack-single-node-xenial
override-checkout: stable/queens
+ required-projects:
+ - openstack/devstack-gate
+ - openstack/neutron
+ - name: openstack/neutron-tempest-plugin
+ override-checkout: 0.7.0
+ - openstack/tempest
vars:
branch_override: stable/queens
network_api_extensions: *api_extensions_queens
@@ -532,6 +545,7 @@
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
+ TEMPEST_BRANCH: queens-em
- job:
name: neutron-tempest-plugin-scenario-openvswitch-rocky
@@ -665,6 +679,12 @@
parent: neutron-tempest-plugin-scenario-linuxbridge
nodeset: openstack-single-node-xenial
override-checkout: stable/queens
+ required-projects:
+ - openstack/devstack-gate
+ - openstack/neutron
+ - name: openstack/neutron-tempest-plugin
+ override-checkout: 0.7.0
+ - openstack/tempest
vars:
branch_override: stable/queens
network_api_extensions: *api_extensions_queens
@@ -672,6 +692,7 @@
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
+ TEMPEST_BRANCH: queens-em
devstack_local_conf:
test-config:
# NOTE: ignores linux bridge's trunk delete on bound port test
@@ -831,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:
@@ -859,6 +882,12 @@
parent: neutron-tempest-plugin-dvr-multinode-scenario
nodeset: openstack-two-node-xenial
override-checkout: stable/queens
+ required-projects:
+ - openstack/devstack-gate
+ - openstack/neutron
+ - name: openstack/neutron-tempest-plugin
+ override-checkout: 0.7.0
+ - openstack/tempest
vars:
branch_override: stable/queens
network_api_extensions_common: *api_extensions_queens
@@ -868,6 +897,7 @@
devstack_localrc:
USE_PYTHON3: false
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
+ TEMPEST_BRANCH: queens-em
- job:
name: neutron-tempest-plugin-dvr-multinode-scenario-rocky
@@ -945,12 +975,19 @@
parent: neutron-tempest-plugin-designate-scenario
nodeset: openstack-single-node-xenial
override-checkout: stable/queens
+ required-projects:
+ - openstack/devstack-gate
+ - openstack/neutron
+ - name: openstack/neutron-tempest-plugin
+ override-checkout: 0.7.0
+ - openstack/tempest
vars:
branch_override: stable/queens
network_api_extensions_common: *api_extensions_queens
devstack_localrc:
USE_PYTHON3: false
TEMPEST_PLUGINS: '"/opt/stack/designate-tempest-plugin /opt/stack/neutron-tempest-plugin"'
+ TEMPEST_BRANCH: queens-em
- job:
name: neutron-tempest-plugin-designate-scenario-rocky
@@ -1206,7 +1243,6 @@
templates:
- build-openstack-docs-pti
- neutron-tempest-plugin-jobs
- - neutron-tempest-plugin-jobs-queens
- neutron-tempest-plugin-jobs-rocky
- neutron-tempest-plugin-jobs-stein
- neutron-tempest-plugin-jobs-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):