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/basic.py b/tests/basic.py
index a173a30..394ab0a 100644
--- a/tests/basic.py
+++ b/tests/basic.py
@@ -209,7 +209,18 @@
pkt = simple_tcp_packet()
self.dataplane.send(of_port, str(pkt))
#@todo Check for unexpected messages?
- (response, raw) = self.controller.poll(ofp.OFPT_PACKET_IN, 2)
+ count = 0
+ while True:
+ (response, raw) = self.controller.poll(ofp.OFPT_PACKET_IN, 2)
+ if not response: # Timeout
+ break
+ if str(pkt) == response.data: # Got match
+ break
+ if not basic_config["relax"]: # Only one attempt to match
+ break
+ count += 1
+ if count > 10: # Too many tries
+ break
self.assertTrue(response is not None,
'Packet in message not received on port ' +
@@ -255,7 +266,14 @@
rv = self.controller.message_send(msg)
self.assertTrue(rv == 0, "Error sending out message")
- (of_port, pkt, pkt_time) = self.dataplane.poll(timeout=1)
+ exp_pkt_arg = None
+ exp_port = None
+ if basic_config["relax"]:
+ exp_pkt_arg = outpkt
+ exp_port = dp_port
+ (of_port, pkt, pkt_time) = self.dataplane.poll(timeout=1,
+ port_number=exp_port,
+ exp_pkt=exp_pkt_arg)
self.assertTrue(pkt is not None, 'Packet not received')
basic_logger.info("PacketOut: got pkt from " + str(of_port))