]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-133744: Fix multiprocessing interrupt test: add an event (#133746) (#133917)
authorVictor Stinner <vstinner@python.org>
Mon, 12 May 2025 14:16:52 +0000 (16:16 +0200)
committerGitHub <noreply@github.com>
Mon, 12 May 2025 14:16:52 +0000 (14:16 +0000)
gh-133744: Fix multiprocessing interrupt test: add an event (#133746)

Add an event to synchronize the parent process with the child
process: wait until the child process starts sleeping.

(cherry picked from commit c2989b7070b18c0b7c51521fed8bc11c159ea5b8)

Lib/test/_test_multiprocessing.py
Misc/NEWS.d/next/Tests/2025-05-09-14-54-48.gh-issue-133744.LCquu0.rst [new file with mode: 0644]

index 4b06123011cb66fab365a14477d5beb7adb59038..9e3330e40ffaab25b5ce7ec4d79536043cffcfd5 100644 (file)
@@ -511,6 +511,11 @@ class _TestProcess(BaseTestCase):
     def _sleep_some(cls):
         time.sleep(100)
 
+    @classmethod
+    def _sleep_some_event(cls, event):
+        event.set()
+        time.sleep(100)
+
     @classmethod
     def _test_sleep(cls, delay):
         time.sleep(delay)
@@ -519,7 +524,8 @@ class _TestProcess(BaseTestCase):
         if self.TYPE == 'threads':
             self.skipTest('test not appropriate for {}'.format(self.TYPE))
 
-        p = self.Process(target=self._sleep_some)
+        event = self.Event()
+        p = self.Process(target=self._sleep_some_event, args=(event,))
         p.daemon = True
         p.start()
 
@@ -537,8 +543,11 @@ class _TestProcess(BaseTestCase):
         self.assertTimingAlmostEqual(join.elapsed, 0.0)
         self.assertEqual(p.is_alive(), True)
 
-        # XXX maybe terminating too soon causes the problems on Gentoo...
-        time.sleep(1)
+        timeout = support.SHORT_TIMEOUT
+        if not event.wait(timeout):
+            p.terminate()
+            p.join()
+            self.fail(f"event not signaled in {timeout} seconds")
 
         meth(p)
 
diff --git a/Misc/NEWS.d/next/Tests/2025-05-09-14-54-48.gh-issue-133744.LCquu0.rst b/Misc/NEWS.d/next/Tests/2025-05-09-14-54-48.gh-issue-133744.LCquu0.rst
new file mode 100644 (file)
index 0000000..f19186d
--- /dev/null
@@ -0,0 +1,3 @@
+Fix multiprocessing interrupt test. Add an event to synchronize the parent
+process with the child process: wait until the child process starts
+sleeping. Patch by Victor Stinner.