This commit is contained in:
Victor Stinner 2015-03-12 16:19:01 +01:00
parent f7cc3fccad
commit 945c82eea3
4 changed files with 102 additions and 60 deletions

View file

@ -252,8 +252,23 @@ class SocketEINTRTest(EINTRBaseTest):
lambda path: os.close(os.open(path, os.O_WRONLY)))
@unittest.skipUnless(hasattr(signal, "setitimer"), "requires setitimer()")
class TimeEINTRTest(EINTRBaseTest):
""" EINTR tests for the time module. """
def test_sleep(self):
t0 = time.monotonic()
time.sleep(2)
signal.alarm(0)
dt = time.monotonic() - t0
self.assertGreaterEqual(dt, 1.9)
def test_main():
support.run_unittest(OSEINTRTest, SocketEINTRTest)
support.run_unittest(
OSEINTRTest,
SocketEINTRTest,
TimeEINTRTest)
if __name__ == "__main__":

View file

@ -419,17 +419,20 @@ class WakeupSignalTests(unittest.TestCase):
TIMEOUT_HALF = 5
signal.alarm(1)
before_time = time.time()
# We attempt to get a signal during the sleep,
# before select is called
time.sleep(TIMEOUT_FULL)
mid_time = time.time()
dt = mid_time - before_time
if dt >= TIMEOUT_HALF:
raise Exception("%s >= %s" % (dt, TIMEOUT_HALF))
try:
select.select([], [], [], TIMEOUT_FULL)
except InterruptedError:
pass
else:
raise Exception("select() was not interrupted")
before_time = time.time()
select.select([read], [], [], TIMEOUT_FULL)
after_time = time.time()
dt = after_time - mid_time
dt = after_time - before_time
if dt >= TIMEOUT_HALF:
raise Exception("%s >= %s" % (dt, TIMEOUT_HALF))
""", signal.SIGALRM)