]> granicus.if.org Git - python/commitdiff
The hppa ubuntu box sometimes hangs forever in these tests. My guess
authorNeal Norwitz <nnorwitz@gmail.com>
Sun, 18 Jun 2006 19:37:40 +0000 (19:37 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sun, 18 Jun 2006 19:37:40 +0000 (19:37 +0000)
is that the wait is failing for some reason.  Use WNOHANG, so we won't
wait until the buildbot kills the test suite.

I haven't been able to reproduce the failure, so I'm not sure if
this will help or not.  Hopefully, this change will cause the test
to fail, rather than hang.  That will be better since we will get
the rest of the test results.  It may also help us debug the real problem.

Lib/test/fork_wait.py
Lib/test/test_fork1.py
Lib/test/test_wait3.py
Lib/test/test_wait4.py

index 5600bdbc512798170e5856be8bdc005a2b820cf0..7eb55f66831d150b8289c0af50dc418688b272f4 100644 (file)
@@ -34,7 +34,14 @@ class ForkWait(unittest.TestCase):
                 pass
 
     def wait_impl(self, cpid):
-        spid, status = os.waitpid(cpid, 0)
+        for i in range(10):
+            # waitpid() shouldn't hang, but some of the buildbots seem to hang
+            # in the forking tests.  This is an attempt to fix the problem.
+            spid, status = os.waitpid(cpid, os.WNOHANG)
+            if spid == cpid:
+                break
+            time.sleep(2 * SHORTSLEEP)
+
         self.assertEquals(spid, cpid)
         self.assertEquals(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
 
index cba5fc7d19e76cc8dcd0a0e89094408a01c107ee..7f445ab55525561511f0080f52d3b2f42e6b45e9 100644 (file)
@@ -2,6 +2,7 @@
 """
 
 import os
+import time
 from test.fork_wait import ForkWait
 from test.test_support import TestSkipped, run_unittest
 
@@ -12,7 +13,14 @@ except AttributeError:
 
 class ForkTest(ForkWait):
     def wait_impl(self, cpid):
-        spid, status = os.waitpid(cpid, 0)
+        for i in range(10):
+            # waitpid() shouldn't hang, but some of the buildbots seem to hang
+            # in the forking tests.  This is an attempt to fix the problem.
+            spid, status = os.waitpid(cpid, os.WNOHANG)
+            if spid == cpid:
+                break
+            time.sleep(1.0)
+
         self.assertEqual(spid, cpid)
         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
 
index f6a41a698cb0d5a90cc241b046a4e7890554eba2..532cb49d615e0f28d7a9f615e5be6d52a6919800 100644 (file)
@@ -2,6 +2,7 @@
 """
 
 import os
+import time
 from test.fork_wait import ForkWait
 from test.test_support import TestSkipped, run_unittest
 
@@ -17,10 +18,14 @@ except AttributeError:
 
 class Wait3Test(ForkWait):
     def wait_impl(self, cpid):
-        while 1:
-            spid, status, rusage = os.wait3(0)
+        for i in range(10):
+            # wait3() shouldn't hang, but some of the buildbots seem to hang
+            # in the forking tests.  This is an attempt to fix the problem.
+            spid, status, rusage = os.wait3(os.WNOHANG)
             if spid == cpid:
                 break
+            time.sleep(1.0)
+
         self.assertEqual(spid, cpid)
         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
         self.assertTrue(rusage)
index 027e5c35249c89ceceb52d48aa70f76843cb3a35..fee593e1e86aa55687fb5bdc7a34173d47ffba6b 100644 (file)
@@ -2,6 +2,7 @@
 """
 
 import os
+import time
 from test.fork_wait import ForkWait
 from test.test_support import TestSkipped, run_unittest
 
@@ -17,7 +18,13 @@ except AttributeError:
 
 class Wait4Test(ForkWait):
     def wait_impl(self, cpid):
-        spid, status, rusage = os.wait4(cpid, 0)
+        for i in range(10):
+            # wait4() shouldn't hang, but some of the buildbots seem to hang
+            # in the forking tests.  This is an attempt to fix the problem.
+            spid, status, rusage = os.wait4(cpid, os.WNOHANG)
+            if spid == cpid:
+                break
+            time.sleep(1.0)
         self.assertEqual(spid, cpid)
         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
         self.assertTrue(rusage)