Merge "Add test to create and update DSCP values"

This commit is contained in:
Zuul 2019-10-24 13:46:06 +00:00 committed by Gerrit Code Review
commit 0749b65aeb
1 changed files with 66 additions and 0 deletions

View File

@ -13,6 +13,7 @@
# under the License.
from neutron_lib.api.definitions import qos as qos_apidef
from neutron_lib import constants as n_constants
from neutron_lib.services.qos import constants as qos_consts
from tempest.common import utils
from tempest.lib.common.utils import data_utils
@ -984,6 +985,71 @@ class QosDscpMarkingRuleTestJSON(base.BaseAdminNetworkTest):
self.assertIn(rule1['id'], rules_ids)
self.assertNotIn(rule2['id'], rules_ids)
@decorators.idempotent_id('19ed2286-ccb1-11e9-87d7-525400d6f522')
def test_qos_dscp_create_and_update(self):
"""This test covers:
1.Creating a basic QoS policy with DSCP marking rule.
2.Updating QoS policy:
Administrator should have the ability to update existing QoS policy.
This test should verify that:
It's possible to update the existing DSCP marking rule with all of
the valid marks between 0-56, except of the invalid marks:
2-6, 42, 44, and 50-54 (which should be forbidden)
"""
def _test_update_dscp_mark_values(self, dscp_policy_id, rule_id):
for mark in range(n_constants.VALID_DSCP_MARKS[1],
self.VALID_DSCP_MARK1 + 1):
if mark in n_constants.VALID_DSCP_MARKS:
self.admin_client.update_dscp_marking_rule(
dscp_policy_id, rule_id, dscp_mark=mark)
retrieved_rule = self.admin_client.show_dscp_marking_rule(
dscp_policy_id, rule_id)['dscp_marking_rule']
self.assertEqual(mark, retrieved_rule['dscp_mark'],
"""current DSCP mark is incorrect:
expected value {0} actual value {1}
""".format(mark,
retrieved_rule['dscp_mark']))
else:
self.assertRaises(exceptions.BadRequest,
self.admin_client.create_dscp_marking_rule,
dscp_policy_id,
mark)
# Setup network
self.network = self.create_network()
# Create QoS policy
dscp_policy_id = self.create_qos_policy(
name='test-policy',
description='test-qos-policy',
shared=True)['id']
# Associate QoS to the network
self.admin_client.update_network(
self.network['id'], qos_policy_id=dscp_policy_id)
# Set a new DSCP rule with the first mark in range
rule_id = self.admin_client.create_dscp_marking_rule(
dscp_policy_id,
n_constants.VALID_DSCP_MARKS[0])[
'dscp_marking_rule']['id']
# Validate that the rule was set up properly
retrieved_rule = self.client.show_dscp_marking_rule(
dscp_policy_id, rule_id)['dscp_marking_rule']
self.assertEqual(n_constants.VALID_DSCP_MARKS[0],
retrieved_rule['dscp_mark'],
"""current DSCP mark is incorrect:
expected value {0} actual value {1}
""".format(n_constants.VALID_DSCP_MARKS[0],
retrieved_rule['dscp_mark']))
# Try to set marks in range 8:56 (invalid marks should raise an error)
_test_update_dscp_mark_values(self, dscp_policy_id, rule_id)
class QosMinimumBandwidthRuleTestJSON(base.BaseAdminNetworkTest):
DIRECTION_EGRESS = "egress"