]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-109594: Fix concurrent.futures test_timeout() (GH-110018) (#110022)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 28 Sep 2023 13:49:56 +0000 (06:49 -0700)
committerGitHub <noreply@github.com>
Thu, 28 Sep 2023 13:49:56 +0000 (13:49 +0000)
gh-109594: Fix concurrent.futures test_timeout() (GH-110018)

Fix test_timeout() of test_concurrent_futures.test_wait. Remove the
future which may or may not complete depending if it takes longer
than the timeout ot not. Keep the second future which does not
complete before wait(). Make also the test faster: 0.5 second instead
of 6 seconds, so remove @support.requires_resource('walltime')
decorator.
(cherry picked from commit 9be283e5e15d5d5685b78a38eb132501f7f3febb)

Co-authored-by: Victor Stinner <vstinner@python.org>
Lib/test/test_concurrent_futures/test_wait.py
Misc/NEWS.d/next/Tests/2023-09-28-14-47-14.gh-issue-109594.DB5KPP.rst [new file with mode: 0644]

index e4bea8b05aced6eab5000d856d42d125356a2a0a..bf96f9f577b0e6a437da0a1d0526afe8030977ec 100644 (file)
@@ -111,22 +111,24 @@ class WaitTests:
         self.assertEqual(set(), pending)
 
     def test_timeout(self):
-        future1 = self.executor.submit(mul, 6, 7)
-        future2 = self.executor.submit(time.sleep, 6)
+        short_timeout = 0.050
+        long_timeout = short_timeout * 10
+
+        future = self.executor.submit(time.sleep, long_timeout)
 
         finished, pending = futures.wait(
                 [CANCELLED_AND_NOTIFIED_FUTURE,
                  EXCEPTION_FUTURE,
                  SUCCESSFUL_FUTURE,
-                 future1, future2],
-                timeout=5,
+                 future],
+                timeout=short_timeout,
                 return_when=futures.ALL_COMPLETED)
 
         self.assertEqual(set([CANCELLED_AND_NOTIFIED_FUTURE,
                               EXCEPTION_FUTURE,
-                              SUCCESSFUL_FUTURE,
-                              future1]), finished)
-        self.assertEqual(set([future2]), pending)
+                              SUCCESSFUL_FUTURE]),
+                         finished)
+        self.assertEqual(set([future]), pending)
 
 
 class ThreadPoolWaitTests(ThreadPoolMixin, WaitTests, BaseTestCase):
diff --git a/Misc/NEWS.d/next/Tests/2023-09-28-14-47-14.gh-issue-109594.DB5KPP.rst b/Misc/NEWS.d/next/Tests/2023-09-28-14-47-14.gh-issue-109594.DB5KPP.rst
new file mode 100644 (file)
index 0000000..5a4ae2b
--- /dev/null
@@ -0,0 +1,4 @@
+Fix test_timeout() of test_concurrent_futures.test_wait. Remove the future
+which may or may not complete depending if it takes longer than the timeout
+ot not. Keep the second future which does not complete before wait()
+timeout. Patch by Victor Stinner.