summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_ip4.py8
-rw-r--r--test/test_ip6.py8
-rw-r--r--test/vpp_papi_provider.py37
-rw-r--r--test/vpp_policer.py69
4 files changed, 78 insertions, 44 deletions
diff --git a/test/test_ip4.py b/test/test_ip4.py
index 46a8306815b..87059c7361b 100644
--- a/test/test_ip4.py
+++ b/test/test_ip4.py
@@ -21,6 +21,7 @@ from vpp_sub_interface import VppSubInterface, VppDot1QSubint, VppDot1ADSubint
from vpp_papi import VppEnum
from vpp_neighbor import VppNeighbor
from vpp_lo_interface import VppLoInterface
+from vpp_policer import VppPolicer
NUM_PKTS = 67
@@ -1390,8 +1391,8 @@ class TestIPPunt(VppTestCase):
#
# add a policer
#
- policer = self.vapi.policer_add_del(b"ip4-punt", 400, 0, 10, 0,
- rate_type=1)
+ policer = VppPolicer(self, "ip4-punt", 400, 0, 10, 0, rate_type=1)
+ policer.add_vpp_config()
self.vapi.ip_punt_police(policer.policer_index)
self.vapi.cli("clear trace")
@@ -1411,8 +1412,7 @@ class TestIPPunt(VppTestCase):
# remove the policer. back to full rx
#
self.vapi.ip_punt_police(policer.policer_index, is_add=0)
- self.vapi.policer_add_del(b"ip4-punt", 400, 0, 10, 0,
- rate_type=1, is_add=0)
+ policer.remove_vpp_config()
self.send_and_expect(self.pg0, pkts, self.pg1)
#
diff --git a/test/test_ip6.py b/test/test_ip6.py
index f4b9ef8c647..b27cfdb4fed 100644
--- a/test/test_ip6.py
+++ b/test/test_ip6.py
@@ -28,6 +28,7 @@ from vpp_ip_route import VppIpRoute, VppRoutePath, find_route, VppIpMRoute, \
from vpp_neighbor import find_nbr, VppNeighbor
from vpp_pg_interface import is_ipv6_misc
from vpp_sub_interface import VppSubInterface, VppDot1QSubint
+from vpp_policer import VppPolicer
from ipaddress import IPv6Network, IPv6Address
AF_INET6 = socket.AF_INET6
@@ -2118,8 +2119,8 @@ class TestIP6Punt(VppTestCase):
#
# add a policer
#
- policer = self.vapi.policer_add_del(b"ip6-punt", 400, 0, 10, 0,
- rate_type=1)
+ policer = VppPolicer(self, "ip6-punt", 400, 0, 10, 0, rate_type=1)
+ policer.add_vpp_config()
self.vapi.ip_punt_police(policer.policer_index, is_ip6=1)
self.vapi.cli("clear trace")
@@ -2139,8 +2140,7 @@ class TestIP6Punt(VppTestCase):
# remove the policer. back to full rx
#
self.vapi.ip_punt_police(policer.policer_index, is_add=0, is_ip6=1)
- self.vapi.policer_add_del(b"ip6-punt", 400, 0, 10, 0,
- rate_type=1, is_add=0)
+ policer.remove_vpp_config()
self.send_and_expect(self.pg0, pkts, self.pg1)
#
diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py
index 832fd8ff93c..52ce492adbd 100644
--- a/test/vpp_papi_provider.py
+++ b/test/vpp_papi_provider.py
@@ -96,7 +96,7 @@ defaultmapping = {
'ip6_table_index': 4294967295,
'l2_table_index': 4294967295, },
'pppoe_add_del_session': {'is_add': 1, },
- 'policer_add_del': {'is_add': 1, 'conform_action_type': 1, },
+ 'policer_add_del': {'is_add': 1, 'conform_action': {'type': 1}, },
'proxy_arp_add_del': {'is_add': 1, },
'proxy_arp_intfc_enable_disable': {'is_enable': 1, },
'set_ip_flow_hash': {'src': 1, 'dst': 1, 'sport': 1, 'dport': 1,
@@ -1166,41 +1166,6 @@ class VppPapiProvider(object):
return self.api(
self.papi.macip_acl_dump, {'acl_index': acl_index})
- def policer_add_del(self,
- name,
- cir,
- eir,
- cb,
- eb,
- is_add=1,
- rate_type=0,
- round_type=0,
- ptype=0,
- color_aware=0,
- conform_action_type=1,
- conform_dscp=0,
- exceed_action_type=0,
- exceed_dscp=0,
- violate_action_type=0,
- violate_dscp=0):
- return self.api(self.papi.policer_add_del,
- {'name': name,
- 'cir': cir,
- 'eir': eir,
- 'cb': cb,
- 'eb': eb,
- 'is_add': is_add,
- 'rate_type': rate_type,
- 'round_type': round_type,
- 'type': ptype,
- 'color_aware': color_aware,
- 'conform_action_type': conform_action_type,
- 'conform_dscp': conform_dscp,
- 'exceed_action_type': exceed_action_type,
- 'exceed_dscp': exceed_dscp,
- 'violate_action_type': violate_action_type,
- 'violate_dscp': violate_dscp})
-
def ip_punt_police(self,
policer_index,
is_ip6=0,
diff --git a/test/vpp_policer.py b/test/vpp_policer.py
new file mode 100644
index 00000000000..49d11859646
--- /dev/null
+++ b/test/vpp_policer.py
@@ -0,0 +1,69 @@
+from vpp_object import VppObject
+from vpp_ip import INVALID_INDEX
+
+
+class PolicerAction():
+ """ sse2 qos action """
+
+ def __init__(self, type, dscp):
+ self.type = type
+ self.dscp = dscp
+
+ def encode(self):
+ return {'type': self.type, 'dscp': self.dscp}
+
+
+class VppPolicer(VppObject):
+ """ Policer """
+
+ def __init__(self, test, name, cir, eir, commited_burst, excess_burst,
+ rate_type=0, round_type=0, type=0, color_aware=False,
+ conform_action=PolicerAction(1, 0),
+ exceed_action=PolicerAction(0, 0),
+ violate_action=PolicerAction(0, 0)):
+ self._test = test
+ self.name = name
+ self.cir = cir
+ self.eir = eir
+ self.commited_burst = commited_burst
+ self.excess_burst = excess_burst
+ self.rate_type = rate_type
+ self.round_type = round_type
+ self.type = type
+ self.color_aware = color_aware
+ self.conform_action = conform_action
+ self.exceed_action = exceed_action
+ self.violate_action = violate_action
+ self._policer_index = INVALID_INDEX
+
+ @property
+ def policer_index(self):
+ return self._policer_index
+
+ def add_vpp_config(self):
+ r = self._test.vapi.policer_add_del(
+ name=self.name, cir=self.cir,
+ eir=self.eir, cb=self.commited_burst, eb=self.excess_burst,
+ rate_type=self.rate_type, round_type=self.round_type,
+ type=self.type, color_aware=self.color_aware,
+ conform_action=self.conform_action.encode(),
+ exceed_action=self.exceed_action.encode(),
+ violate_action=self.violate_action.encode())
+ self._test.registry.register(self, self._test.logger)
+ self._policer_index = r.policer_index
+ return self
+
+ def remove_vpp_config(self):
+ self._test.vapi.policer_add_del(is_add=False, name=self.name)
+ self._policer_index = INVALID_INDEX
+
+ def query_vpp_config(self):
+ dump = self._test.vapi.policer_dump(
+ match_name_valid=True, match_name=self.name)
+ for policer in dump:
+ if policer.name == self.name:
+ return True
+ return False
+
+ def object_id(self):
+ return ("policer-%s" % (self.name))