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/basic.py b/tests/basic.py
index 6e0e4d0..8f6678d 100644
--- a/tests/basic.py
+++ b/tests/basic.py
@@ -153,24 +153,7 @@
logging.info("PacketOut to: " + str(dp_port))
self.controller.message_send(msg)
- exp_pkt_arg = None
- exp_port = None
- if config["relax"]:
- exp_pkt_arg = outpkt
- exp_port = dp_port
- (of_port, pkt, pkt_time) = self.dataplane.poll(port_number=exp_port,
- exp_pkt=exp_pkt_arg)
-
- self.assertTrue(pkt is not None, 'Packet not received')
- logging.info("PacketOut: got pkt from " + str(of_port))
- if of_port is not None:
- self.assertEqual(of_port, dp_port, "Unexpected receive port")
- if not dataplane.match_exp_pkt(outpkt, pkt):
- logging.debug("Sent %s" % format_packet(outpkt))
- logging.debug("Resp %s" % format_packet(
- str(pkt)[:len(str(outpkt))]))
- self.assertEqual(str(outpkt), str(pkt)[:len(str(outpkt))],
- 'Response packet does not match send packet')
+ verify_packets(self, outpkt, [dp_port])
class PacketOutMC(base_tests.SimpleDataPlane):
"""
@@ -207,9 +190,7 @@
logging.info("PacketOut to: " + str(dp_ports))
self.controller.message_send(msg)
- receive_pkt_check(self.dataplane, outpkt, dp_ports,
- set(of_ports).difference(dp_ports),
- self)
+ verify_packets(self, outpkt, dp_ports)
class FlowStatsGet(base_tests.SimpleProtocol):
"""