diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 5149b0d3884417..1a348bc70bc7cf 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -3929,6 +3929,10 @@ def test_eventfd_select(self): @unittest.skipUnless(hasattr(os, 'timerfd_create'), 'requires os.timerfd_create') @support.requires_linux_version(2, 6, 30) class TimerfdTests(unittest.TestCase): + # Tolerate a difference of 50 us + CLOCK_RES_NS = 50_000 + CLOCK_RES = CLOCK_RES_NS * 1e-9 + def timerfd_create(self, *args, **kwargs): fd = os.timerfd_create(*args, **kwargs) self.assertGreaterEqual(fd, 0) @@ -3982,9 +3986,13 @@ def test_timerfd_negative(self): one_sec_in_nsec = 10**9 fd = self.timerfd_create(time.CLOCK_REALTIME) + test_flags = [0, os.TFD_TIMER_ABSTIME] + if hasattr(os, 'TFD_TIMER_CANCEL_ON_SET'): + test_flags.append(os.TFD_TIMER_ABSTIME | os.TFD_TIMER_CANCEL_ON_SET) + # Any of 'initial' and 'interval' is negative value. for initial, interval in ( (-1, 0), (1, -1), (-1, -1), (-0.1, 0), (1, -0.1), (-0.1, -0.1)): - for flags in (0, os.TFD_TIMER_ABSTIME, os.TFD_TIMER_ABSTIME|os.TFD_TIMER_CANCEL_ON_SET): + for flags in test_flags: with self.subTest(flags=flags, initial=initial, interval=interval): with self.assertRaises(OSError) as context: _, _ = os.timerfd_settime(fd, flags=flags, initial=initial, interval=interval) @@ -4055,7 +4063,7 @@ def test_timerfd_TFD_TIMER_ABSTIME(self): t = time.perf_counter() - t self.assertEqual(count_signaled, 1) - self.assertGreater(t, offset) + self.assertGreater(t, offset - self.CLOCK_RES) def test_timerfd_select(self): size = 8 # read 8 bytes @@ -4208,7 +4216,7 @@ def test_timerfd_ns_TFD_TIMER_ABSTIME(self): t = time.perf_counter_ns() - t self.assertEqual(count_signaled, 1) - self.assertGreater(t, offset_ns) + self.assertGreater(t, offset_ns - self.CLOCK_RES_NS) def test_timerfd_ns_select(self): size = 8 # read 8 bytes pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy