self.sockName = sockName
self.sock = None
self.rx_pkts = []
- self.keep_running = True
+ self.stop_running = False
def rx_packets(self):
# Wait for some packets on socket
- while self.keep_running:
+ while True:
try:
data = self.sock.recv(65536)
self.rx_pkts.append(Ether(data[8:]))
except IOError as e:
if e.errno == 11:
- # nothing to receive, sleep a little
+ # nothing to receive, stop running or sleep a little
+ if self.stop_running:
+ break
time.sleep(0.1)
pass
else:
self.rx_packets()
def close(self):
+ self.stop_running = True
+ threading.Thread.join(self)
self.sock.close()
- self.keep_running = False
return self.rx_pkts
rx_pkts = []
for thread in self.sock_servers:
rx_pkts += thread.close()
- thread.join()
return rx_pkts
def verify_port(self, pr, vpr):
#
# expect ICMP - port unreachable for all packets
#
- rx = self.send_and_expect(self.pg0, pkts, self.pg0)
+ rx = self.send_and_expect_some(self.pg0, pkts, self.pg0)
for p in rx:
self.assertEqual(int(p[IP].proto), 1) # ICMP
punts = self.vapi.punt_socket_dump(type=pt_l4)
self.assertEqual(len(punts), 0)
- rx = self.send_and_expect(self.pg0, pkts, self.pg0)
+ rx = self.send_and_expect_some(self.pg0, pkts, self.pg0)
for p in rx:
self.assertEqual(int(p[IP].proto), 1) # ICMP
self.assertEqual(int(p[ICMP].code), 3) # unreachable