https://github.com/python/cpython/commit/27f9f2b98afccf8c67e6fbd68f6a3663c84219fb commit: 27f9f2b98afccf8c67e6fbd68f6a3663c84219fb branch: 3.12 author: Miss Islington (bot) <31488909+miss-isling...@users.noreply.github.com> committer: colesbury <colesb...@gmail.com> date: 2025-03-01T16:40:53Z summary:
[3.12] gh-128364: Fix flaky `test_timeout` test (gh-130724) (gh-130729) gh-128364: Fix flaky `test_timeout` test (gh-130724) (cherry picked from commit cfa0b1dc375e63cde28e61a47108c645b0e74834) Co-authored-by: Sam Gross <colesb...@gmail.com> files: M Lib/test/test_concurrent_futures/test_wait.py M Lib/test/test_concurrent_futures/util.py diff --git a/Lib/test/test_concurrent_futures/test_wait.py b/Lib/test/test_concurrent_futures/test_wait.py index ff486202092c81..3527a74a708b20 100644 --- a/Lib/test/test_concurrent_futures/test_wait.py +++ b/Lib/test/test_concurrent_futures/test_wait.py @@ -114,9 +114,8 @@ def test_all_completed(self): def test_timeout(self): short_timeout = 0.050 - long_timeout = short_timeout * 10 - future = self.executor.submit(time.sleep, long_timeout) + future = self.executor.submit(self.event.wait) finished, pending = futures.wait( [CANCELLED_AND_NOTIFIED_FUTURE, @@ -132,6 +131,9 @@ def test_timeout(self): finished) self.assertEqual(set([future]), pending) + # Set the event to allow the future to complete + self.event.set() + class ThreadPoolWaitTests(ThreadPoolMixin, WaitTests, BaseTestCase): diff --git a/Lib/test/test_concurrent_futures/util.py b/Lib/test/test_concurrent_futures/util.py index fc6030e375fb6b..93ae2459ac5237 100644 --- a/Lib/test/test_concurrent_futures/util.py +++ b/Lib/test/test_concurrent_futures/util.py @@ -1,5 +1,6 @@ import multiprocessing import sys +import threading import time import unittest from concurrent import futures @@ -46,11 +47,14 @@ def setUp(self): self.t1 = time.monotonic() if hasattr(self, "ctx"): + self.manager = multiprocessing.Manager() + self.event = self.manager.Event() self.executor = self.executor_type( max_workers=self.worker_count, mp_context=self.get_context(), **self.executor_kwargs) else: + self.event = threading.Event() self.executor = self.executor_type( max_workers=self.worker_count, **self.executor_kwargs) @@ -58,6 +62,9 @@ def setUp(self): def tearDown(self): self.executor.shutdown(wait=True) self.executor = None + if hasattr(self, "ctx"): + self.manager.shutdown() + self.manager = None dt = time.monotonic() - self.t1 if support.verbose: _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com