Commit 68b4e01c authored by Stefan Krah's avatar Stefan Krah

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.
parent 281b551a
...@@ -139,7 +139,7 @@ class InterProcessSignalTests(unittest.TestCase): ...@@ -139,7 +139,7 @@ class InterProcessSignalTests(unittest.TestCase):
self.fail("pause returned of its own accord, and the signal" self.fail("pause returned of its own accord, and the signal"
" didn't arrive after another second.") " 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', @unittest.skipIf(sys.platform=='freebsd6',
'inter process signals not reliable (do not mix well with threading) ' 'inter process signals not reliable (do not mix well with threading) '
'on freebsd6') 'on freebsd6')
...@@ -359,7 +359,7 @@ class ItimerTest(unittest.TestCase): ...@@ -359,7 +359,7 @@ class ItimerTest(unittest.TestCase):
self.assertEqual(self.hndl_called, True) 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', @unittest.skipIf(sys.platform=='freebsd6',
'itimer not reliable (does not mix well with threading) on freebsd6') 'itimer not reliable (does not mix well with threading) on freebsd6')
def test_itimer_virtual(self): def test_itimer_virtual(self):
...@@ -368,22 +368,22 @@ class ItimerTest(unittest.TestCase): ...@@ -368,22 +368,22 @@ class ItimerTest(unittest.TestCase):
signal.setitimer(self.itimer, 0.3, 0.2) signal.setitimer(self.itimer, 0.3, 0.2)
start_time = time.time() 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 # use up some virtual time by doing real work
_ = pow(12345, 67890, 10000019) _ = pow(12345, 67890, 10000019)
if signal.getitimer(self.itimer) == (0.0, 0.0): if signal.getitimer(self.itimer) == (0.0, 0.0):
break # sig_vtalrm handler stopped this itimer break # sig_vtalrm handler stopped this itimer
else: else: # Issue 8424
self.fail('timeout waiting for sig_vtalrm signal; ' sys.stdout.write("test_itimer_virtual: timeout: likely cause: "
'signal.getitimer(self.itimer) gives: %s' % "machine too slow or load too high.\n")
(signal.getitimer(self.itimer),)) return
# virtual itimer should be (0.0, 0.0) now # virtual itimer should be (0.0, 0.0) now
self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0)) self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0))
# and the handler should have been called # and the handler should have been called
self.assertEquals(self.hndl_called, True) 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', @unittest.skipIf(sys.platform=='freebsd6',
'itimer not reliable (does not mix well with threading) on freebsd6') 'itimer not reliable (does not mix well with threading) on freebsd6')
def test_itimer_prof(self): def test_itimer_prof(self):
...@@ -392,13 +392,15 @@ class ItimerTest(unittest.TestCase): ...@@ -392,13 +392,15 @@ class ItimerTest(unittest.TestCase):
signal.setitimer(self.itimer, 0.2, 0.2) signal.setitimer(self.itimer, 0.2, 0.2)
start_time = time.time() start_time = time.time()
while time.time() - start_time < 5.0: while time.time() - start_time < 60.0:
# do some work # do some work
_ = pow(12345, 67890, 10000019) _ = pow(12345, 67890, 10000019)
if signal.getitimer(self.itimer) == (0.0, 0.0): if signal.getitimer(self.itimer) == (0.0, 0.0):
break # sig_prof handler stopped this itimer break # sig_prof handler stopped this itimer
else: else: # Issue 8424
self.fail('timeout waiting for sig_prof signal') 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 # profiling itimer should be (0.0, 0.0) now
self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0)) self.assertEquals(signal.getitimer(self.itimer), (0.0, 0.0))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment