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):
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))
......
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