mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
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.
This commit is contained in:
parent
281b551a2e
commit
68b4e01c48
1 changed files with 13 additions and 11 deletions
|
@ -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):
|
||||||
|
|
||||||
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):
|
||||||
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):
|
||||||
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))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue