]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
test_thread uses support.sleeping_retry() (#93849)
authorVictor Stinner <vstinner@python.org>
Wed, 15 Jun 2022 11:52:13 +0000 (13:52 +0200)
committerGitHub <noreply@github.com>
Wed, 15 Jun 2022 11:52:13 +0000 (13:52 +0200)
test_thread.test_count() now fails if it takes longer than
LONG_TIMEOUT seconds.

Lib/test/test_thread.py

index ed527e7164fd0a4860aab0d4c78da8079f985bd9..2ae5e9ccb440882fac86a3b5e04ff01635b0d93a 100644 (file)
@@ -13,7 +13,6 @@ threading_helper.requires_working_threading(module=True)
 
 NUMTASKS = 10
 NUMTRIPS = 3
-POLL_SLEEP = 0.010 # seconds = 10 ms
 
 _print_mutex = thread.allocate_lock()
 
@@ -121,19 +120,24 @@ class ThreadRunningTests(BasicThreadTest):
 
         with threading_helper.wait_threads_exit():
             thread.start_new_thread(task, ())
-            while not started:
-                time.sleep(POLL_SLEEP)
+            for _ in support.sleeping_retry(support.LONG_TIMEOUT):
+                if started:
+                    break
             self.assertEqual(thread._count(), orig + 1)
+
             # Allow the task to finish.
             mut.release()
+
             # The only reliable way to be sure that the thread ended from the
-            # interpreter's point of view is to wait for the function object to be
-            # destroyed.
+            # interpreter's point of view is to wait for the function object to
+            # be destroyed.
             done = []
             wr = weakref.ref(task, lambda _: done.append(None))
             del task
-            while not done:
-                time.sleep(POLL_SLEEP)
+
+            for _ in support.sleeping_retry(support.LONG_TIMEOUT):
+                if done:
+                    break
                 support.gc_collect()  # For PyPy or other GCs.
             self.assertEqual(thread._count(), orig)