Skip to content

Commit 85f5d32

Browse files
committed
gh-100522 Test futures.as_completed timing out with a nonzero timeout value
1 parent 2e80c2a commit 85f5d32

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

Lib/test/test_concurrent_futures.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,6 @@ def future_func():
711711

712712

713713
class AsCompletedTests:
714-
# TODO([email protected]): Should have a test with a non-zero timeout.
715714
def test_no_timeout(self):
716715
future1 = self.executor.submit(mul, 2, 21)
717716
future2 = self.executor.submit(mul, 7, 6)
@@ -747,6 +746,28 @@ def test_zero_timeout(self):
747746
SUCCESSFUL_FUTURE]),
748747
completed_futures)
749748

749+
def test_nonzero_timeout(self):
750+
"""Test ``futures.as_completed`` timing out before
751+
completing it's final future completes."""
752+
753+
future1 = self.executor.submit(time.sleep, 1)
754+
completed_futures = set()
755+
try:
756+
for future in futures.as_completed(
757+
[CANCELLED_AND_NOTIFIED_FUTURE,
758+
EXCEPTION_FUTURE,
759+
SUCCESSFUL_FUTURE,
760+
future1],
761+
timeout=0.01):
762+
completed_futures.add(future)
763+
except futures.TimeoutError:
764+
pass
765+
766+
self.assertEqual(set([CANCELLED_AND_NOTIFIED_FUTURE,
767+
EXCEPTION_FUTURE,
768+
SUCCESSFUL_FUTURE]),
769+
completed_futures)
770+
750771
def test_duplicate_futures(self):
751772
# Issue 20367. Duplicate futures should not raise exceptions or give
752773
# duplicate responses.

0 commit comments

Comments
 (0)