diff options
Diffstat (limited to 'tests/net_hosted/asyncio_start_server.py')
-rw-r--r-- | tests/net_hosted/asyncio_start_server.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/net_hosted/asyncio_start_server.py b/tests/net_hosted/asyncio_start_server.py index 3162218981..e76faf7edb 100644 --- a/tests/net_hosted/asyncio_start_server.py +++ b/tests/net_hosted/asyncio_start_server.py @@ -22,6 +22,44 @@ async def test(): print("sleep") await asyncio.sleep(0) + # Test that cancellation works before the server starts if + # the subsequent code raises. + print("create server3") + server3 = await asyncio.start_server(None, "0.0.0.0", 8000) + try: + async with server3: + raise OSError + except OSError as er: + print("OSError") + + # Test that closing doesn't raise CancelledError. + print("create server4") + server4 = await asyncio.start_server(None, "0.0.0.0", 8000) + server4.close() + await server4.wait_closed() + print("server4 closed") + + # Test that cancelling the task will still raise CancelledError, checking + # edge cases around how many times the tasks have been re-scheduled by + # sleep. + async def task(n): + print("create task server", n) + srv = await asyncio.start_server(None, "0.0.0.0", 8000) + await srv.wait_closed() + # This should be unreachable. + print("task finished") + + for num_sleep in range(0, 5): + print("sleep", num_sleep) + t = asyncio.create_task(task(num_sleep)) + for _ in range(num_sleep): + await asyncio.sleep(0) + t.cancel() + try: + await t + except asyncio.CancelledError: + print("CancelledError") + print("done") |