Skip to content

Commit 5585599

Browse files
committed
Added tests to resource tracker to verify the exit code based on leaked/no leaked resources
1 parent 3ef965a commit 5585599

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

Lib/test/_test_multiprocessing.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5536,6 +5536,40 @@ def test_too_long_name_resource(self):
55365536
with self.assertRaises(ValueError):
55375537
resource_tracker.register(too_long_name_resource, rtype)
55385538

5539+
def _test_resource_tracker_leak_resources(self, context, delete_queue):
5540+
from multiprocessing.resource_tracker import _resource_tracker
5541+
_resource_tracker.ensure_running()
5542+
self.assertTrue(_resource_tracker._check_alive())
5543+
5544+
# Reset exit code value
5545+
_resource_tracker._exitcode = None
5546+
exit_code_assert = self.assertNotEqual
5547+
5548+
mp_context = multiprocessing.get_context(context)
5549+
5550+
# Keep it on variable, so it won't be cleared yet
5551+
q = mp_context.Queue()
5552+
if delete_queue:
5553+
del q
5554+
exit_code_assert = self.assertEqual
5555+
5556+
self.assertIsNone(_resource_tracker._exitcode)
5557+
_resource_tracker._stop()
5558+
5559+
exit_code_assert(_resource_tracker._exitcode, 0)
5560+
5561+
def test_resource_tracker_should_return_0_exit_code_when_no_resources_were_leaked_spawn_ctx(self):
5562+
self._test_resource_tracker_leak_resources(context="spawn", delete_queue=True)
5563+
5564+
def test_resource_tracker_should_return_non_0_exit_code_when_resources_were_leaked_spawn_ctx(self):
5565+
self._test_resource_tracker_leak_resources(context="spawn", delete_queue=False)
5566+
5567+
def test_resource_tracker_should_return_0_exit_code_when_no_resources_were_leaked_forkserver_ctx(self):
5568+
self._test_resource_tracker_leak_resources(context="forkserver", delete_queue=True)
5569+
5570+
def test_resource_tracker_should_return_non_0_exit_code_when_resources_were_leaked_forkserver_ctx(self):
5571+
self._test_resource_tracker_leak_resources(context="forkserver", delete_queue=False)
5572+
55395573

55405574
class TestSimpleQueue(unittest.TestCase):
55415575

0 commit comments

Comments
 (0)