testutils: add new functions to check for dataplane packets
`receive_pkt_check` and `receive_pkt_verify` had slightly different
functionality and neither were sufficient for complex tests. This change
deprecates them and adds new functions.
The high level `verify_packets` function is sufficient for most tests. When
more complex logic is needed the primitive functions `verify_packet`,
`verify_no_packet`, and `verify_no_other_packets` should be used directly.
All OpenFlow 1.0/1.3 tests are updated to use the new functions. The old
functions are left around for compatibility with out of tree tests.
diff --git a/tests/pktact.py b/tests/pktact.py
index 04edf95..cceb13e 100644
--- a/tests/pktact.py
+++ b/tests/pktact.py
@@ -495,11 +495,7 @@
logging.info("Sending packet to dp port " +
str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
- yes_ports = set([egress_port1, egress_port2])
- no_ports = set(of_ports).difference(yes_ports)
-
- receive_pkt_check(self.dataplane, pkt, yes_ports, no_ports,
- self)
+ verify_packets(self, pkt, [egress_port1, egress_port2])
class DirectMCNonIngress(base_tests.SimpleDataPlane):
"""
@@ -547,8 +543,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
yes_ports = set(of_ports).difference([ingress_port])
- receive_pkt_check(self.dataplane, pkt, yes_ports, [ingress_port],
- self)
+ verify_packets(self, pkt, yes_ports)
class DirectMC(base_tests.SimpleDataPlane):
@@ -598,7 +593,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
- receive_pkt_check(self.dataplane, pkt, of_ports, [], self)
+ verify_packets(self, pkt, of_ports)
class Flood(base_tests.SimpleDataPlane):
"""
@@ -651,8 +646,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
yes_ports = set(of_ports).difference([ingress_port])
- receive_pkt_check(self.dataplane, pkt, yes_ports, [ingress_port],
- self)
+ verify_packets(self, pkt, yes_ports)
class FloodPlusIngress(base_tests.SimpleDataPlane):
"""
@@ -695,7 +689,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
- receive_pkt_check(self.dataplane, pkt, of_ports, [], self)
+ verify_packets(self, pkt, of_ports)
class All(base_tests.SimpleDataPlane):
"""
@@ -739,8 +733,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
yes_ports = set(of_ports).difference([ingress_port])
- receive_pkt_check(self.dataplane, pkt, yes_ports, [ingress_port],
- self)
+ verify_packets(self, pkt, yes_ports)
class AllPlusIngress(base_tests.SimpleDataPlane):
"""
@@ -783,7 +776,7 @@
logging.info("Sending packet to dp port " + str(ingress_port))
self.dataplane.send(ingress_port, str(pkt))
- receive_pkt_check(self.dataplane, pkt, of_ports, [], self)
+ verify_packets(self, pkt, of_ports)
class FloodMinusPort(base_tests.SimpleDataPlane):
"""
@@ -843,7 +836,7 @@
self.dataplane.send(ingress_port, str(pkt))
no_ports = set([ingress_port, no_flood_port])
yes_ports = set(of_ports).difference(no_ports)
- receive_pkt_check(self.dataplane, pkt, yes_ports, no_ports, self)
+ verify_packets(self, pkt, yes_ports)
# Turn no flood off again
rv = port_config_set(self.controller, no_flood_port,
@@ -856,7 +849,7 @@
self.dataplane.send(ingress_port, str(pkt))
no_ports = set([ingress_port])
yes_ports = set(of_ports).difference(no_ports)
- receive_pkt_check(self.dataplane, pkt, yes_ports, no_ports, self)
+ verify_packets(self, pkt, yes_ports)
#@todo Should check no other packets received
@@ -1007,7 +1000,7 @@
logging.info("Pkt match test: " + str(inp) + " to " + str(egp))
logging.debug("Send packet: " + str(inp) + " to " + str(egp))
self.dataplane.send(inp, str(pkt))
- receive_pkt_verify(self, egp, pkt, inp)
+ verify_packets(self, pkt, [egp])
@@ -1305,7 +1298,7 @@
of_ports = config["port_map"].keys()
self.assertTrue(len(of_ports) > 1, "Not enough ports for test")
ing_port = of_ports[0]
- egr_ports = of_ports[1]
+ egress_port = of_ports[1]
delete_all_flows(self.controller)
@@ -1321,19 +1314,19 @@
vid_act = ofp.action.set_vlan_vid()
vid_act.vlan_vid = new_vid
request = flow_msg_create(self, untagged_pkt, ing_port=ing_port,
- wildcards=wildcards, egr_ports=egr_ports,
+ wildcards=wildcards, egr_ports=egress_port,
action_list=[vid_act])
flow_msg_install(self, request)
logging.debug("Send untagged packet: " + str(ing_port) + " to " +
- str(egr_ports))
+ str(egress_port))
self.dataplane.send(ing_port, str(untagged_pkt))
- receive_pkt_verify(self, egr_ports, exp_pkt, ing_port)
+ verify_packets(self, exp_pkt, [egress_port])
logging.debug("Send tagged packet: " + str(ing_port) + " to " +
- str(egr_ports))
+ str(egress_port))
self.dataplane.send(ing_port, str(tagged_pkt))
- receive_pkt_verify(self, egr_ports, exp_pkt, ing_port)
+ verify_packets(self, exp_pkt, [egress_port])
class ModifyVlanPcp(BaseMatchCase):
"""