diff options
| author | Charles-François Natali <cf.natali@gmail.com> | 2014-07-25 17:45:02 (GMT) |
|---|---|---|
| committer | Charles-François Natali <cf.natali@gmail.com> | 2014-07-25 17:45:02 (GMT) |
| commit | e396c363cbacce68d7750a7963af4d7cd3bf30e7 (patch) | |
| tree | 40f9f102e9d7908e6bf4349128d42419e8735fec /Lib/test/test_asyncio/test_windows_events.py | |
| parent | 65708cf510277492660420efa13bd2de163cd21b (diff) | |
| parent | 2955a0bf06807d4e00ad053a7e2acb516939859e (diff) | |
| download | cpython-e396c363cbacce68d7750a7963af4d7cd3bf30e7.zip cpython-e396c363cbacce68d7750a7963af4d7cd3bf30e7.tar.gz cpython-e396c363cbacce68d7750a7963af4d7cd3bf30e7.tar.bz2 | |
Merge.
Diffstat (limited to 'Lib/test/test_asyncio/test_windows_events.py')
| -rw-r--r-- | Lib/test/test_asyncio/test_windows_events.py | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py index 4ab56e6..85d9669 100644 --- a/Lib/test/test_asyncio/test_windows_events.py +++ b/Lib/test/test_asyncio/test_windows_events.py @@ -94,38 +94,48 @@ class ProactorTests(test_utils.TestCase): event = _overlapped.CreateEvent(None, True, False, None) self.addCleanup(_winapi.CloseHandle, event) - # Wait for unset event with 0.2s timeout; + # Wait for unset event with 0.5s timeout; # result should be False at timeout - f = self.loop._proactor.wait_for_handle(event, 0.2) + fut = self.loop._proactor.wait_for_handle(event, 0.5) start = self.loop.time() - self.loop.run_until_complete(f) + self.loop.run_until_complete(fut) elapsed = self.loop.time() - start - self.assertFalse(f.result()) - self.assertTrue(0.18 < elapsed < 0.9, elapsed) + self.assertFalse(fut.result()) + self.assertTrue(0.48 < elapsed < 0.9, elapsed) _overlapped.SetEvent(event) # Wait for for set event; # result should be True immediately - f = self.loop._proactor.wait_for_handle(event, 10) + fut = self.loop._proactor.wait_for_handle(event, 10) start = self.loop.time() - self.loop.run_until_complete(f) + self.loop.run_until_complete(fut) elapsed = self.loop.time() - start - self.assertTrue(f.result()) - self.assertTrue(0 <= elapsed < 0.1, elapsed) + self.assertTrue(fut.result()) + self.assertTrue(0 <= elapsed < 0.3, elapsed) - _overlapped.ResetEvent(event) + # Tulip issue #195: cancelling a done _WaitHandleFuture must not crash + fut.cancel() + + def test_wait_for_handle_cancel(self): + event = _overlapped.CreateEvent(None, True, False, None) + self.addCleanup(_winapi.CloseHandle, event) # Wait for unset event with a cancelled future; # CancelledError should be raised immediately - f = self.loop._proactor.wait_for_handle(event, 10) - f.cancel() + fut = self.loop._proactor.wait_for_handle(event, 10) + fut.cancel() start = self.loop.time() with self.assertRaises(asyncio.CancelledError): - self.loop.run_until_complete(f) + self.loop.run_until_complete(fut) elapsed = self.loop.time() - start self.assertTrue(0 <= elapsed < 0.1, elapsed) + # Tulip issue #195: cancelling a _WaitHandleFuture twice must not crash + fut = self.loop._proactor.wait_for_handle(event) + fut.cancel() + fut.cancel() + if __name__ == '__main__': unittest.main() |
