def verify_no_packet_in(test, data, in_port, controller=None): """ Assert that the controller does not receive a packet_in message matching data 'data' from port 'in_port'. @param test Instance of base_tests.SimpleProtocol @param pkt String to expect as the packet_in data @param in_port OpenFlow port number to expect as the packet_in in_port @param controller Controller instance, defaults to test.controller """ if controller == None: controller = test.controller # Negative test, need to wait a short amount of time before checking we # didn't receive the message. time.sleep(0.5) # Check every packet_in queued in the controller while True: msg, _ = controller.poll(ofp.OFPT_PACKET_IN, timeout=0) if msg == None: # No more queued packet_in messages break elif packet_in_match(msg, data, in_port, None): # Found a matching message break test.assertTrue(msg == None, "Did not expect a packet-in message on port %d" % in_port)
def verify_packet_in(test, data, in_port, reason, controller=None): """ Assert that the controller receives a packet_in message matching data 'data' from port 'in_port' with reason 'reason'. Does not trigger the packet_in itself, that's up to the test case. @param test Instance of base_tests.SimpleProtocol @param pkt String to expect as the packet_in data @param in_port OpenFlow port number to expect as the packet_in in_port @param reason One of OFPR_* to expect as the packet_in reason @param controller Controller instance, defaults to test.controller @returns The received packet-in message """ if controller == None: controller = test.controller end_time = time.time() + oftest.ofutils.default_timeout while True: msg, _ = controller.poll(ofp.OFPT_PACKET_IN, end_time - time.time()) if not msg: # Timeout break elif packet_in_match(msg, data, in_port, reason): # Found a matching message break test.assertTrue(msg is not None, 'Packet in message not received on port %d' % in_port) return msg