Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
GH-107803: double linked list implementation for asyncio tasks#107804
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
cc66eebd5a3d87a0c5fcf77d012f5d9653d5a001984cdc83435a00f1fddb9d61d32835b46bcfeee7ead2af0280a999fff787a223118124083cb567395526365c5b55982cf69b8998f6ad93c4e135726d98dd0492832530280b65e0b67649e1252b2f457739a4670731e061081836d254efce4b3c7b604c56beb04File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -86,6 +86,7 @@ class BaseTaskTests: | ||
| Task = None | ||
| Future = None | ||
| all_tasks = None | ||
| def new_task(self, loop, coro, name='TestTask', context=None): | ||
| return self.__class__.Task(coro, loop=loop, name=name, context=context) | ||
| @@ -2267,7 +2268,7 @@ async def kill_me(loop): | ||
| coro = kill_me(self.loop) | ||
| task = asyncio.ensure_future(coro, loop=self.loop) | ||
| self.assertEqual(self.all_tasks(loop=self.loop), {task}) | ||
| asyncio.set_event_loop(None) | ||
| @@ -2282,7 +2283,7 @@ async def kill_me(loop): | ||
| # no more reference to kill_me() task: the task is destroyed by the GC | ||
| support.gc_collect() | ||
| self.assertEqual(self.all_tasks(loop=self.loop), set()) | ||
| mock_handler.assert_called_with(self.loop, { | ||
| 'message': 'Task was destroyed but it is pending!', | ||
| @@ -2431,7 +2432,7 @@ async def coro(): | ||
| message = m_log.error.call_args[0][0] | ||
| self.assertIn('Task was destroyed but it is pending', message) | ||
| self.assertEqual(self.all_tasks(self.loop), set()) | ||
| def test_create_task_with_noncoroutine(self): | ||
| with self.assertRaisesRegex(TypeError, | ||
| @@ -2731,6 +2732,7 @@ async def func(): | ||
| # Add patched Task & Future back to the test case | ||
| cls.Task = Task | ||
| cls.Future = Future | ||
| cls.all_tasks = tasks.all_tasks | ||
| # Add an extra unit-test | ||
| cls.test_subclasses_ctask_cfuture = test_subclasses_ctask_cfuture | ||
| @@ -2804,6 +2806,7 @@ class CTask_CFuture_Tests(BaseTaskTests, SetMethodsTest, | ||
| Task = getattr(tasks, '_CTask', None) | ||
| Future = getattr(futures, '_CFuture', None) | ||
| all_tasks = getattr(tasks, '_c_all_tasks', None) | ||
kumaraditya303 marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
| @support.refcount_test | ||
| def test_refleaks_in_task___init__(self): | ||
| @@ -2835,6 +2838,7 @@ class CTask_CFuture_SubclassTests(BaseTaskTests, test_utils.TestCase): | ||
| Task = getattr(tasks, '_CTask', None) | ||
| Future = getattr(futures, '_CFuture', None) | ||
| all_tasks = getattr(tasks, '_c_all_tasks', None) | ||
| @unittest.skipUnless(hasattr(tasks, '_CTask'), | ||
| @@ -2844,6 +2848,7 @@ class CTaskSubclass_PyFuture_Tests(BaseTaskTests, test_utils.TestCase): | ||
| Task = getattr(tasks, '_CTask', None) | ||
| Future = futures._PyFuture | ||
| all_tasks = getattr(tasks, '_c_all_tasks', None) | ||
| @unittest.skipUnless(hasattr(futures, '_CFuture'), | ||
| @@ -2853,6 +2858,7 @@ class PyTask_CFutureSubclass_Tests(BaseTaskTests, test_utils.TestCase): | ||
| Future = getattr(futures, '_CFuture', None) | ||
| Task = tasks._PyTask | ||
| all_tasks = tasks._py_all_tasks | ||
| @unittest.skipUnless(hasattr(tasks, '_CTask'), | ||
| @@ -2861,6 +2867,7 @@ class CTask_PyFuture_Tests(BaseTaskTests, test_utils.TestCase): | ||
| Task = getattr(tasks, '_CTask', None) | ||
| Future = futures._PyFuture | ||
| all_tasks = getattr(tasks, '_c_all_tasks', None) | ||
| @unittest.skipUnless(hasattr(futures, '_CFuture'), | ||
| @@ -2869,13 +2876,15 @@ class PyTask_CFuture_Tests(BaseTaskTests, test_utils.TestCase): | ||
| Task = tasks._PyTask | ||
| Future = getattr(futures, '_CFuture', None) | ||
| all_tasks = staticmethod(tasks._py_all_tasks) | ||
| class PyTask_PyFuture_Tests(BaseTaskTests, SetMethodsTest, | ||
kumaraditya303 marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
| test_utils.TestCase): | ||
| Task = tasks._PyTask | ||
| Future = futures._PyFuture | ||
| all_tasks = staticmethod(tasks._py_all_tasks) | ||
| @add_subclass_tests | ||
| @@ -2915,6 +2924,7 @@ class BaseTaskIntrospectionTests: | ||
| _unregister_task = None | ||
| _enter_task = None | ||
| _leave_task = None | ||
| all_tasks = None | ||
| def test__register_task_1(self): | ||
| class TaskLike: | ||
| @@ -2928,9 +2938,9 @@ def done(self): | ||
| task = TaskLike() | ||
| loop = mock.Mock() | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| self._register_task(task) | ||
| self.assertEqual(self.all_tasks(loop), {task}) | ||
| self._unregister_task(task) | ||
| def test__register_task_2(self): | ||
| @@ -2944,9 +2954,9 @@ def done(self): | ||
| task = TaskLike() | ||
| loop = mock.Mock() | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| self._register_task(task) | ||
| self.assertEqual(self.all_tasks(loop), {task}) | ||
| self._unregister_task(task) | ||
| def test__register_task_3(self): | ||
| @@ -2960,9 +2970,9 @@ def done(self): | ||
| task = TaskLike() | ||
| loop = mock.Mock() | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| self._register_task(task) | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| self._unregister_task(task) | ||
| def test__enter_task(self): | ||
| @@ -3013,20 +3023,21 @@ def test__unregister_task(self): | ||
| task.get_loop = lambda: loop | ||
| self._register_task(task) | ||
| self._unregister_task(task) | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| def test__unregister_task_not_registered(self): | ||
| task = mock.Mock() | ||
| loop = mock.Mock() | ||
| self._unregister_task(task) | ||
| self.assertEqual(self.all_tasks(loop), set()) | ||
| class PyIntrospectionTests(test_utils.TestCase, BaseTaskIntrospectionTests): | ||
| _register_task = staticmethod(tasks._py_register_task) | ||
| _unregister_task = staticmethod(tasks._py_unregister_task) | ||
| _enter_task = staticmethod(tasks._py_enter_task) | ||
| _leave_task = staticmethod(tasks._py_leave_task) | ||
| all_tasks = staticmethod(tasks._py_all_tasks) | ||
| @unittest.skipUnless(hasattr(tasks, '_c_register_task'), | ||
| @@ -3037,6 +3048,7 @@ class CIntrospectionTests(test_utils.TestCase, BaseTaskIntrospectionTests): | ||
| _unregister_task = staticmethod(tasks._c_unregister_task) | ||
| _enter_task = staticmethod(tasks._c_enter_task) | ||
| _leave_task = staticmethod(tasks._c_leave_task) | ||
| all_tasks = staticmethod(tasks._c_all_tasks) | ||
| else: | ||
| _register_task = _unregister_task = _enter_task = _leave_task = None | ||
Uh oh!
There was an error while loading.Please reload this page.