diff options
author | Stefan Krah <stefan@bytereef.org> | 2010-04-20 07:59:10 (GMT) |
---|---|---|
committer | Stefan Krah <stefan@bytereef.org> | 2010-04-20 07:59:10 (GMT) |
commit | 68b4e01c48a9217cff9828f408474f9b52f6584b (patch) | |
tree | 503e6f43e61cf23662ac017fd46bc8b559fc310f | |
parent | 281b551a2eecfb9a1ac64274496f7cdeda82662a (diff) | |
download | cpython-68b4e01c48a9217cff9828f408474f9b52f6584b.zip cpython-68b4e01c48a9217cff9828f408474f9b52f6584b.tar.gz cpython-68b4e01c48a9217cff9828f408474f9b52f6584b.tar.bz2 |
1) The timeout in the itimer tests was too low for slow or heavily
loaded machines.
2) Even with the increased timeout, the OS does not guarantee that
a process will get a certain amount of virtual time in 60s, so
the failure is changed to a diagnostic.
-rw-r--r-- | Lib/test/test_signal.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index 23b0553..202dc53 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -139,7 +139,7 @@ class InterProcessSignalTests(unittest.TestCase): self.fail("pause returned of its own accord, and the signal" " didn't arrive after another second.") - # Unknown if this affects earlier versions of freebsd also + # Issue 3864. Unknown if this affects earlier versions of freebsd also. @unittest.skipIf(sys.platform=='freebsd6', 'inter process signals not reliable (do not mix well with threading) ' 'on freebsd6') @@ -359,7 +359,7 @@ class ItimerTest(unittest.TestCase): self.assertEqual(self.hndl_called, True) - # Unknown if this affects earlier versions of freebsd also + # Issue 3864. Unknown if this affects earlier versions of freebsd also. @unittest.skipIf(sys.platform=='freebsd6', 'itimer not reliable (does not mix well with threading) on freebsd6') def test_itimer_virtual(self): @@ -368,22 +368,22 @@ class ItimerTest(unittest.TestCase): signal.setitimer(self.itimer, 0.3, 0.2) start_time = time.time() - while time.time() - start_time < 5.0: + while time.time() - start_time < 60.0: # use up some virtual time by doing real work _ = pow(12345, 67890, 10000019) if signal.getitimer(self.itimer) == (0.0, 0.0): break # sig_vtalrm handler stopped this itimer - else: - self.fail('timeout waiting for sig_vtalrm signal; ' - 'signal.getitimer(self.itimer) gives: %s' % - (signal.getitimer(self.itimer),)) + else: # Issue 8424 + sys.stdout.write("test_itimer_virtual: timeout: likely cause: " + "machine too slow or load too high.\n") + return # virtual itimer should be (0.0, 0.0) now self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0)) # and the handler should have been called self.assertEquals(self.hndl_called, True) - # Unknown if this affects earlier versions of freebsd also + # Issue 3864. Unknown if this affects earlier versions of freebsd also. @unittest.skipIf(sys.platform=='freebsd6', 'itimer not reliable (does not mix well with threading) on freebsd6') def test_itimer_prof(self): @@ -392,13 +392,15 @@ class ItimerTest(unittest.TestCase): signal.setitimer(self.itimer, 0.2, 0.2) start_time = time.time() - while time.time() - start_time < 5.0: + while time.time() - start_time < 60.0: # do some work _ = pow(12345, 67890, 10000019) if signal.getitimer(self.itimer) == (0.0, 0.0): break # sig_prof handler stopped this itimer - else: - self.fail('timeout waiting for sig_prof signal') + else: # Issue 8424 + sys.stdout.write("test_itimer_prof: timeout: likely cause: " + "machine too slow or load too high.\n") + return # profiling itimer should be (0.0, 0.0) now self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0)) |