bpo-36123: Fix test_socket.testWithTimeoutTriggeredSend() race condition (GH-12053)
Use longer timeout for accept() in the server and block on accept in the client.
The client now only sets the timeout once the socket is connected.
(cherry picked from commit 53b9e1a1c1d86187ad6fbee492b697ef8be74205)
Co-authored-by: Joannah Nanjekye <33177550+nanjekyejoannah@users.noreply.github.com>
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 82b89fc..3819652 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -5533,7 +5533,7 @@
support.unlink(support.TESTFN)
def accept_conn(self):
- self.serv.settimeout(self.TIMEOUT)
+ self.serv.settimeout(MAIN_TIMEOUT)
conn, addr = self.serv.accept()
conn.settimeout(self.TIMEOUT)
self.addCleanup(conn.close)
@@ -5718,7 +5718,8 @@
def _testWithTimeoutTriggeredSend(self):
address = self.serv.getsockname()
with open(support.TESTFN, 'rb') as file:
- with socket.create_connection(address, timeout=0.01) as sock:
+ with socket.create_connection(address) as sock:
+ sock.settimeout(0.01)
meth = self.meth_from_sock(sock)
self.assertRaises(socket.timeout, meth, file)