Added relax option to oftest
This option relaxes restrictions around receiving unexpected packets.
It's main use case is in evironments where in-band control is enabled and
as a consequence packets are forwarded to dataplane ports.
diff --git a/tests/testutils.py b/tests/testutils.py
index 084f74d..450b330 100644
--- a/tests/testutils.py
+++ b/tests/testutils.py
@@ -214,7 +214,8 @@
rv = controller.message_send(mod)
return rv
-def receive_pkt_check(dataplane, pkt, yes_ports, no_ports, assert_if, logger):
+def receive_pkt_check(dataplane, pkt, yes_ports, no_ports, assert_if, logger,
+ config):
"""
Check for proper receive packets across all ports
@param dataplane The dataplane object
@@ -223,10 +224,14 @@
@param no_ports Set or list of ports that should not receive packet
@param assert_if Object that implements assertXXX
"""
+ exp_pkt_arg = None
+ if config and config["relax"]:
+ exp_pkt_arg = pkt
+
for ofport in yes_ports:
logger.debug("Checking for pkt on port " + str(ofport))
(rcv_port, rcv_pkt, pkt_time) = dataplane.poll(
- port_number=ofport, timeout=1)
+ port_number=ofport, timeout=1, exp_pkt=exp_pkt_arg)
assert_if.assertTrue(rcv_pkt is not None,
"Did not receive pkt on " + str(ofport))
assert_if.assertEqual(str(pkt), str(rcv_pkt),
@@ -236,7 +241,7 @@
for ofport in no_ports:
logger.debug("Negative check for pkt on port " + str(ofport))
(rcv_port, rcv_pkt, pkt_time) = dataplane.poll(
- port_number=ofport, timeout=1)
+ port_number=ofport, timeout=1, exp_pkt=exp_pkt_arg)
assert_if.assertTrue(rcv_pkt is None,
"Unexpected pkt on port " + str(ofport))
@@ -247,8 +252,14 @@
parent must implement dataplane, assertTrue and assertEqual
"""
+ exp_pkt_arg = None
+ if parent.config["relax"]:
+ exp_pkt_arg = exp_pkt
+
(rcv_port, rcv_pkt, pkt_time) = parent.dataplane.poll(port_number=egr_port,
- timeout=1)
+ timeout=1,
+ exp_pkt=exp_pkt_arg)
+
if rcv_pkt is None:
parent.logger.error("ERROR: No packet received from " + str(egr_port))
@@ -592,7 +603,6 @@
new_actions = []
-
base_pkt_params = {}
base_pkt_params['pktlen'] = 100
base_pkt_params['dl_dst'] = '00:DE:F0:12:34:56'