tests: fix another race condition in punt tests 57/32257/2
authorDave Wallace <dwallacelf@gmail.com>
Sat, 8 May 2021 01:40:54 +0000 (21:40 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Sat, 8 May 2021 02:49:06 +0000 (02:49 +0000)
- 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

test/test_punt.py

index bc2196e..3471a3f 100755 (executable)
@@ -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