(self)
| 4214 | @support.requires_linux_version(2, 6, 30) |
| 4215 | class EventfdTests(unittest.TestCase): |
| 4216 | def test_eventfd_initval(self): |
| 4217 | def pack(value): |
| 4218 | """Pack as native uint64_t |
| 4219 | """ |
| 4220 | return struct.pack("@Q", value) |
| 4221 | size = 8 # read/write 8 bytes |
| 4222 | initval = 42 |
| 4223 | fd = os.eventfd(initval) |
| 4224 | self.assertNotEqual(fd, -1) |
| 4225 | self.addCleanup(os.close, fd) |
| 4226 | self.assertFalse(os.get_inheritable(fd)) |
| 4227 | |
| 4228 | # test with raw read/write |
| 4229 | res = os.read(fd, size) |
| 4230 | self.assertEqual(res, pack(initval)) |
| 4231 | |
| 4232 | os.write(fd, pack(23)) |
| 4233 | res = os.read(fd, size) |
| 4234 | self.assertEqual(res, pack(23)) |
| 4235 | |
| 4236 | os.write(fd, pack(40)) |
| 4237 | os.write(fd, pack(2)) |
| 4238 | res = os.read(fd, size) |
| 4239 | self.assertEqual(res, pack(42)) |
| 4240 | |
| 4241 | # test with eventfd_read/eventfd_write |
| 4242 | os.eventfd_write(fd, 20) |
| 4243 | os.eventfd_write(fd, 3) |
| 4244 | res = os.eventfd_read(fd) |
| 4245 | self.assertEqual(res, 23) |
| 4246 | |
| 4247 | def test_eventfd_semaphore(self): |
| 4248 | initval = 2 |
nothing calls this directly
no test coverage detected