summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncio
diff options
context:
space:
mode:
authorKumar Aditya <59607654+kumaraditya303@users.noreply.github.com>2022-11-24 17:34:21 (GMT)
committerGitHub <noreply@github.com>2022-11-24 17:34:21 (GMT)
commit351842b46a7cb3c3f23b200d532cf29e4557ad4b (patch)
treee230af02921504a26b78dcf59e2afb6a4098b091 /Lib/test/test_asyncio
parentb5b3904f05e77f044f158307bc6bdd2bc1b670a2 (diff)
downloadcpython-351842b46a7cb3c3f23b200d532cf29e4557ad4b.zip
cpython-351842b46a7cb3c3f23b200d532cf29e4557ad4b.tar.gz
cpython-351842b46a7cb3c3f23b200d532cf29e4557ad4b.tar.bz2
GH-66285: Revert "fix forking in asyncio" (#99756)
Diffstat (limited to 'Lib/test/test_asyncio')
-rw-r--r--Lib/test/test_asyncio/test_unix_events.py99
1 files changed, 0 insertions, 99 deletions
diff --git a/Lib/test/test_asyncio/test_unix_events.py b/Lib/test/test_asyncio/test_unix_events.py
index e71e242..93e8611 100644
--- a/Lib/test/test_asyncio/test_unix_events.py
+++ b/Lib/test/test_asyncio/test_unix_events.py
@@ -11,14 +11,10 @@ import stat
import sys
import threading
import unittest
-import time
from unittest import mock
import warnings
-import multiprocessing
from test.support import os_helper
from test.support import socket_helper
-from test.support import wait_process
-from test.support import hashlib_helper
if sys.platform == 'win32':
raise unittest.SkipTest('UNIX only')
@@ -1871,100 +1867,5 @@ class TestFunctional(unittest.TestCase):
wsock.close()
-@unittest.skipUnless(hasattr(os, 'fork'), 'requires os.fork()')
-class TestFork(unittest.IsolatedAsyncioTestCase):
-
- async def test_fork_not_share_event_loop(self):
- # The forked process should not share the event loop with the parent
- loop = asyncio.get_running_loop()
- r, w = os.pipe()
- self.addCleanup(os.close, r)
- self.addCleanup(os.close, w)
- pid = os.fork()
- if pid == 0:
- # child
- try:
- loop = asyncio.get_event_loop_policy().get_event_loop()
- os.write(w, str(id(loop)).encode())
- finally:
- os._exit(0)
- else:
- # parent
- child_loop = int(os.read(r, 100).decode())
- self.assertNotEqual(child_loop, id(loop))
- wait_process(pid, exitcode=0)
-
- @hashlib_helper.requires_hashdigest('md5')
- def test_fork_signal_handling(self):
- # Sending signal to the forked process should not affect the parent
- # process
- ctx = multiprocessing.get_context('fork')
- manager = ctx.Manager()
- self.addCleanup(manager.shutdown)
- child_started = manager.Event()
- child_handled = manager.Event()
- parent_handled = manager.Event()
-
- def child_main():
- signal.signal(signal.SIGTERM, lambda *args: child_handled.set())
- child_started.set()
- time.sleep(1)
-
- async def main():
- loop = asyncio.get_running_loop()
- loop.add_signal_handler(signal.SIGTERM, lambda *args: parent_handled.set())
-
- process = ctx.Process(target=child_main)
- process.start()
- child_started.wait()
- os.kill(process.pid, signal.SIGTERM)
- process.join()
-
- async def func():
- await asyncio.sleep(0.1)
- return 42
-
- # Test parent's loop is still functional
- self.assertEqual(await asyncio.create_task(func()), 42)
-
- asyncio.run(main())
-
- self.assertFalse(parent_handled.is_set())
- self.assertTrue(child_handled.is_set())
-
- @hashlib_helper.requires_hashdigest('md5')
- def test_fork_asyncio_run(self):
- ctx = multiprocessing.get_context('fork')
- manager = ctx.Manager()
- self.addCleanup(manager.shutdown)
- result = manager.Value('i', 0)
-
- async def child_main():
- await asyncio.sleep(0.1)
- result.value = 42
-
- process = ctx.Process(target=lambda: asyncio.run(child_main()))
- process.start()
- process.join()
-
- self.assertEqual(result.value, 42)
-
- @hashlib_helper.requires_hashdigest('md5')
- def test_fork_asyncio_subprocess(self):
- ctx = multiprocessing.get_context('fork')
- manager = ctx.Manager()
- self.addCleanup(manager.shutdown)
- result = manager.Value('i', 1)
-
- async def child_main():
- proc = await asyncio.create_subprocess_exec(sys.executable, '-c', 'pass')
- result.value = await proc.wait()
-
- process = ctx.Process(target=lambda: asyncio.run(child_main()))
- process.start()
- process.join()
-
- self.assertEqual(result.value, 0)
-
if __name__ == '__main__':
unittest.main()