https://github.com/python/cpython/commit/8a64a62002fa3cdc93cb4cfee315edb235cad8cb
commit: 8a64a62002fa3cdc93cb4cfee315edb235cad8cb
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-03T18:45:26Z
summary:
gh-130737: Fix multiprocessing test_notify() (#130797)
Replace hardcoded delay (100 ms) with a loop awaiting until a
condition is true: replace assertReturnsIfImplemented() with
assertReachesEventually().
Use sleeping_retry() in assertReachesEventually() to tolerate slow
buildbots and raise an exception on timeout (30 seconds).
files:
M Lib/test/_test_multiprocessing.py
diff --git a/Lib/test/_test_multiprocessing.py
b/Lib/test/_test_multiprocessing.py
index cafbc757904f64..f31151e53c4bb0 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -1622,14 +1622,13 @@ def f(cls, cond, sleeping, woken, timeout=None):
cond.release()
def assertReachesEventually(self, func, value):
- for i in range(10):
+ for _ in support.sleeping_retry(support.SHORT_TIMEOUT):
try:
if func() == value:
break
except NotImplementedError:
break
- time.sleep(DELTA)
- time.sleep(DELTA)
+
self.assertReturnsIfImplemented(value, func)
def check_invariant(self, cond):
@@ -1663,8 +1662,7 @@ def test_notify(self):
sleeping.acquire()
# check no process/thread has woken up
- time.sleep(DELTA)
- self.assertReturnsIfImplemented(0, get_value, woken)
+ self.assertReachesEventually(lambda: get_value(woken), 0)
# wake up one process/thread
cond.acquire()
@@ -1672,8 +1670,7 @@ def test_notify(self):
cond.release()
# check one process/thread has woken up
- time.sleep(DELTA)
- self.assertReturnsIfImplemented(1, get_value, woken)
+ self.assertReachesEventually(lambda: get_value(woken), 1)
# wake up another
cond.acquire()
@@ -1681,8 +1678,7 @@ def test_notify(self):
cond.release()
# check other has woken up
- time.sleep(DELTA)
- self.assertReturnsIfImplemented(2, get_value, woken)
+ self.assertReachesEventually(lambda: get_value(woken), 2)
# check state is not mucked up
self.check_invariant(cond)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]