(self)
| 4567 | |
| 4568 | |
| 4569 | def test_timerfd_ns_TFD_TIMER_ABSTIME(self): |
| 4570 | one_sec_in_nsec = 10**9 |
| 4571 | limit_error = one_sec_in_nsec // 10**3 |
| 4572 | fd = self.timerfd_create(time.CLOCK_REALTIME) |
| 4573 | |
| 4574 | now_ns = time.clock_gettime_ns(time.CLOCK_REALTIME) |
| 4575 | |
| 4576 | # 1 second later from now. |
| 4577 | offset_ns = one_sec_in_nsec |
| 4578 | initial_expiration_ns = now_ns + offset_ns |
| 4579 | # not interval timer |
| 4580 | interval_ns = 0 |
| 4581 | |
| 4582 | os.timerfd_settime_ns(fd, flags=os.TFD_TIMER_ABSTIME, initial=initial_expiration_ns, interval=interval_ns) |
| 4583 | |
| 4584 | # timerfd_gettime |
| 4585 | # Note: timerfd_gettime returns relative values even if TFD_TIMER_ABSTIME is specified. |
| 4586 | next_expiration_ns, interval_ns2 = os.timerfd_gettime_ns(fd) |
| 4587 | self.assertLess(abs(interval_ns2 - interval_ns), limit_error) |
| 4588 | self.assertLess(abs(next_expiration_ns - offset_ns), limit_error) |
| 4589 | |
| 4590 | t = time.perf_counter_ns() |
| 4591 | count_signaled = self.read_count_signaled(fd) |
| 4592 | t = time.perf_counter_ns() - t |
| 4593 | self.assertEqual(count_signaled, 1) |
| 4594 | |
| 4595 | self.assertGreater(t, offset_ns - self.CLOCK_RES_NS) |
| 4596 | |
| 4597 | def test_timerfd_ns_select(self): |
| 4598 | one_sec_in_nsec = 10**9 |
nothing calls this directly
no test coverage detected