tests: add ip4 punt policer handoff test

Add a test for ip4 punt policer thread handoff. A child class is
created that uses common punt test setup but is configured to have 2
worker threads.

Type: test
Signed-off-by: Brian Russell <brian@graphiant.com>
Change-Id: I34defee85bc5636f9355d0b9aaa007bfaf5e001e
This commit is contained in:
Brian Russell
2021-01-19 16:57:42 +00:00
committed by Neale Ranns
parent 318fdb8a83
commit c8f3cdf68a

View File

@ -22,7 +22,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
from vpp_policer import VppPolicer, PolicerAction
NUM_PKTS = 67
@ -1594,6 +1594,56 @@ class TestIPPunt(IPPuntSetup, VppTestCase):
self.assertEqual(str(punts[2].punt.nh), '0.0.0.0')
class TestIPPuntHandoff(IPPuntSetup, VppTestCase):
""" IPv4 Punt Policer thread handoff """
worker_config = "workers 2"
def setUp(self):
super(TestIPPuntHandoff, self).setUp()
super(TestIPPuntHandoff, self).punt_setup()
def tearDown(self):
super(TestIPPuntHandoff, self).punt_teardown()
super(TestIPPuntHandoff, self).tearDown()
def test_ip_punt_policer_handoff(self):
""" IP4 punt policer thread handoff """
pkts = self.pkt * NUM_PKTS
#
# Configure a punt redirect via pg1.
#
nh_addr = self.pg1.remote_ip4
ip_punt_redirect = VppIpPuntRedirect(self, self.pg0.sw_if_index,
self.pg1.sw_if_index, nh_addr)
ip_punt_redirect.add_vpp_config()
action_tx = PolicerAction(
VppEnum.vl_api_sse2_qos_action_type_t.SSE2_QOS_ACTION_API_TRANSMIT,
0)
#
# This policer drops no packets, we are just
# testing that they get to the right thread.
#
policer = VppPolicer(self, "ip4-punt", 400, 0, 10, 0, 1,
0, 0, False, action_tx, action_tx, action_tx)
policer.add_vpp_config()
ip_punt_policer = VppIpPuntPolicer(self, policer.policer_index)
ip_punt_policer.add_vpp_config()
for worker in [0, 1]:
self.send_and_expect(self.pg0, pkts, self.pg1, worker=worker)
if worker == 0:
self.logger.debug(self.vapi.cli("show trace max 100"))
#
# Clean up
#
ip_punt_policer.remove_vpp_config()
policer.remove_vpp_config()
ip_punt_redirect.remove_vpp_config()
class TestIPDeag(VppTestCase):
""" IPv4 Deaggregate Routes """