tests: fix another race condition in punt tests

- Don't close the socket and don't stop receiving
  until after draining the existing data in the
  socket.

Type: fix

Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Change-Id: I38dfff4d6273eeddb5196f5cf2a60b580e1c93e6
This commit is contained in:
Dave Wallace
2021-05-07 21:40:54 -04:00
committed by Florin Coras
parent 7508f0a7ea
commit c44402f7b5

View File

@@ -46,11 +46,11 @@ class serverSocketThread(threading.Thread):
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)
@@ -61,7 +61,9 @@ class serverSocketThread(threading.Thread):
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:
@@ -81,9 +83,9 @@ class serverSocketThread(threading.Thread):
self.rx_packets()
def close(self):
self.sock.close()
self.keep_running = False
self.stop_running = True
threading.Thread.join(self)
self.sock.close()
return self.rx_pkts