From: Antoine Pitrou Date: Wed, 15 Dec 2010 23:38:50 +0000 (+0000) Subject: Make test_threadsignals more lax, and add notes X-Git-Tag: v3.2b2~67 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4fef555e06f6ef18597e68ec5a74183ff99af8be;p=python Make test_threadsignals more lax, and add notes --- diff --git a/Lib/test/test_threadsignals.py b/Lib/test/test_threadsignals.py index aa63955e5f..e606a0ad03 100644 --- a/Lib/test/test_threadsignals.py +++ b/Lib/test/test_threadsignals.py @@ -142,6 +142,9 @@ class ThreadSignals(unittest.TestCase): # receive a signal. Check this by repeatedly interrupting a lock # acquire in the main thread, and make sure that the lock acquire times # out after the right amount of time. + # NOTE: this test only behaves as expected if C signals get delivered + # to the main thread. Otherwise lock.acquire() itself doesn't get + # interrupted and the test trivially succeeds. self.start = None self.end = None self.sigs_recvd = 0 @@ -159,7 +162,7 @@ class ThreadSignals(unittest.TestCase): self.end = time.time() def send_signals(): for _ in range(40): - time.sleep(0.05) + time.sleep(0.02) os.kill(process_pid, signal.SIGUSR1) done.release() @@ -172,7 +175,9 @@ class ThreadSignals(unittest.TestCase): # This allows for some timing and scheduling imprecision self.assertLess(self.end - self.start, 2.0) self.assertGreater(self.end - self.start, 0.3) - self.assertEqual(40, self.sigs_recvd) + # If the signal is received several times before PyErr_CheckSignals() + # is called, the handler will get called less than 40 times. + self.assertGreater(self.sigs_recvd, 20) finally: signal.signal(signal.SIGUSR1, old_handler)