[Python-checkins] cpython: Give test_multiprocessing better chance of avoiding timeout failures on Windows

richard.oudkerk python-checkins at python.org
Fri May 4 10:50:07 CEST 2012


http://hg.python.org/cpython/rev/11205ffc537a
changeset:   76746:11205ffc537a
user:        Richard Oudkerk <shibturn at gmail.com>
date:        Fri May 04 09:44:39 2012 +0100
summary:
  Give test_multiprocessing better chance of avoiding timeout failures on Windows

files:
  Lib/test/test_multiprocessing.py |  23 +++++++++++++------
  1 files changed, 16 insertions(+), 7 deletions(-)


diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -2699,35 +2699,43 @@
     def test_wait_timeout(self):
         from multiprocessing.connection import wait
 
-        expected = 1
+        expected = 5
         a, b = multiprocessing.Pipe()
 
         start = time.time()
-        res = wait([a, b], 1)
+        res = wait([a, b], expected)
         delta = time.time() - start
 
         self.assertEqual(res, [])
-        self.assertLess(delta, expected + 0.5)
-        self.assertGreater(delta, expected - 0.5)
+        self.assertLess(delta, expected + 1)
+        self.assertGreater(delta, expected - 1)
 
         b.send(None)
 
         start = time.time()
-        res = wait([a, b], 1)
+        res = wait([a, b], 20)
         delta = time.time() - start
 
         self.assertEqual(res, [a])
         self.assertLess(delta, 0.4)
 
+    @classmethod
+    def signal_and_sleep(cls, sem, period):
+        sem.release()
+        time.sleep(period)
+
     def test_wait_integer(self):
         from multiprocessing.connection import wait
 
-        expected = 5
+        expected = 3
+        sem = multiprocessing.Semaphore(0)
         a, b = multiprocessing.Pipe()
-        p = multiprocessing.Process(target=time.sleep, args=(expected,))
+        p = multiprocessing.Process(target=self.signal_and_sleep,
+                                    args=(sem, expected))
 
         p.start()
         self.assertIsInstance(p.sentinel, int)
+        self.assertTrue(sem.acquire(timeout=20))
 
         start = time.time()
         res = wait([a, p.sentinel, b], expected + 20)
@@ -2755,6 +2763,7 @@
         self.assertEqual(res, [a, p.sentinel, b])
         self.assertLess(delta, 0.4)
 
+        p.terminate()
         p.join()
 
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list