]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-130917: update timer and workload in test_signal (GH-130918) (#130968)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 8 Mar 2025 18:21:46 +0000 (19:21 +0100)
committerGitHub <noreply@github.com>
Sat, 8 Mar 2025 18:21:46 +0000 (18:21 +0000)
The workload to advance the virtual timeout is too lightweight for some
platforms. As result the test goes in timeout as it never reaches the
end of the timer. By having a heavier workload, the virtual timer
advances rapidly and the SIGVTALRM is sent before the timeout.
(cherry picked from commit 78790811989ab47319e2ee725e0c435b3cdd21ab)

Co-authored-by: Diego Russo <diego.russo@arm.com>
Lib/test/test_signal.py

index a45527d7315dfc72ed0ba33abd26909ff71a8990..9a01ad0dd5ce8f79a2c44a2d46007f6874675625 100644 (file)
@@ -839,11 +839,11 @@ class ItimerTest(unittest.TestCase):
     def test_itimer_virtual(self):
         self.itimer = signal.ITIMER_VIRTUAL
         signal.signal(signal.SIGVTALRM, self.sig_vtalrm)
-        signal.setitimer(self.itimer, 0.3, 0.2)
+        signal.setitimer(self.itimer, 0.001, 0.001)
 
         for _ in support.busy_retry(support.LONG_TIMEOUT):
             # use up some virtual time by doing real work
-            _ = pow(12345, 67890, 10000019)
+            _ = sum(i * i for i in range(10**5))
             if signal.getitimer(self.itimer) == (0.0, 0.0):
                 # sig_vtalrm handler stopped this itimer
                 break
@@ -860,7 +860,7 @@ class ItimerTest(unittest.TestCase):
 
         for _ in support.busy_retry(support.LONG_TIMEOUT):
             # do some work
-            _ = pow(12345, 67890, 10000019)
+            _ = sum(i * i for i in range(10**5))
             if signal.getitimer(self.itimer) == (0.0, 0.0):
                 # sig_prof handler stopped this itimer
                 break