[Python-checkins] cpython (merge 3.2 -> default): Issue #13453: Fix a race condition in test_poplib.

charles-francois.natali python-checkins at python.org
Wed Dec 14 19:31:02 CET 2011


http://hg.python.org/cpython/rev/1eae8154c109
changeset: 73966:1eae8154c109
parent: 73963:4a27b5ab2710
parent: 73965:e497a3ed9beb
user: Charles-François Natali <neologix at free.fr>
date: Wed Dec 14 19:29:56 2011 +0100
summary:
 Issue #13453: Fix a race condition in test_poplib.
files:
 Lib/test/test_poplib.py | 22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py
--- a/Lib/test/test_poplib.py
+++ b/Lib/test/test_poplib.py
@@ -320,32 +320,34 @@
 def setUp(self):
 self.evt = threading.Event()
 self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.sock.settimeout(3)
+ self.sock.settimeout(60) # Safety net. Look issue 11812
 self.port = test_support.bind_port(self.sock)
- threading.Thread(target=self.server, args=(self.evt,self.sock)).start()
- time.sleep(.1)
+ self.thread = threading.Thread(target=self.server, args=(self.evt,self.sock))
+ self.thread.setDaemon(True)
+ self.thread.start()
+ self.evt.wait()
 
 def tearDown(self):
- self.evt.wait()
+ self.thread.join()
+ del self.thread # Clear out any dangling Thread objects.
 
 def server(self, evt, serv):
 serv.listen(5)
+ evt.set()
 try:
 conn, addr = serv.accept()
+ conn.send(b"+ Hola mundo\n")
+ conn.close()
 except socket.timeout:
 pass
- else:
- conn.send(b"+ Hola mundo\n")
- conn.close()
 finally:
 serv.close()
- evt.set()
 
 def testTimeoutDefault(self):
 self.assertTrue(socket.getdefaulttimeout() is None)
 socket.setdefaulttimeout(30)
 try:
- pop = poplib.POP3("localhost", self.port)
+ pop = poplib.POP3(HOST, self.port)
 finally:
 socket.setdefaulttimeout(None)
 self.assertEqual(pop.sock.gettimeout(), 30)
@@ -362,7 +364,7 @@
 pop.sock.close()
 
 def testTimeoutValue(self):
- pop = poplib.POP3("localhost", self.port, timeout=30)
+ pop = poplib.POP3(HOST, self.port, timeout=30)
 self.assertEqual(pop.sock.gettimeout(), 30)
 pop.sock.close()
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /