[Python-checkins] r47014 - python/trunk/Lib/test/fork_wait.py python/trunk/Lib/test/test_fork1.py python/trunk/Lib/test/test_wait3.py python/trunk/Lib/test/test_wait4.py

Neal Norwitz nnorwitz at gmail.com
Sun Jun 18 21:40:08 CEST 2006


10 times with 1 second waits is arbitrary.  These values may need to
be adjusted.

On 6/18/06, neal.norwitz <python-checkins at python.org> wrote:
> Author: neal.norwitz
> Date: Sun Jun 18 21:37:40 2006
> New Revision: 47014
>
> Modified:
>    python/trunk/Lib/test/fork_wait.py
>    python/trunk/Lib/test/test_fork1.py
>    python/trunk/Lib/test/test_wait3.py
>    python/trunk/Lib/test/test_wait4.py
> Log:
> The hppa ubuntu box sometimes hangs forever in these tests.  My guess
> 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.
>
>
> Modified: python/trunk/Lib/test/fork_wait.py
> ==============================================================================
> --- python/trunk/Lib/test/fork_wait.py  (original)
> +++ python/trunk/Lib/test/fork_wait.py  Sun Jun 18 21:37:40 2006
> @@ -34,7 +34,14 @@
>                  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))
>
>
> Modified: python/trunk/Lib/test/test_fork1.py
> ==============================================================================
> --- python/trunk/Lib/test/test_fork1.py (original)
> +++ python/trunk/Lib/test/test_fork1.py Sun Jun 18 21:37:40 2006
> @@ -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 @@
>
>  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))
>
>
> Modified: python/trunk/Lib/test/test_wait3.py
> ==============================================================================
> --- python/trunk/Lib/test/test_wait3.py (original)
> +++ python/trunk/Lib/test/test_wait3.py Sun Jun 18 21:37:40 2006
> @@ -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 @@
>
>  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)
>
> Modified: python/trunk/Lib/test/test_wait4.py
> ==============================================================================
> --- python/trunk/Lib/test/test_wait4.py (original)
> +++ python/trunk/Lib/test/test_wait4.py Sun Jun 18 21:37:40 2006
> @@ -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 @@
>
>  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)
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>


More information about the Python-checkins mailing list