(self)
| 184 | @unittest.skip("TODO: RUSTPYTHON fd reallocation") |
| 185 | @threading_helper.reap_threads |
| 186 | def test_threaded_poll(self): |
| 187 | r, w = os.pipe() |
| 188 | self.addCleanup(os.close, r) |
| 189 | self.addCleanup(os.close, w) |
| 190 | rfds = [] |
| 191 | for i in range(10): |
| 192 | fd = os.dup(r) |
| 193 | self.addCleanup(os.close, fd) |
| 194 | rfds.append(fd) |
| 195 | pollster = select.poll() |
| 196 | for fd in rfds: |
| 197 | pollster.register(fd, select.POLLIN) |
| 198 | t = threading.Thread(target=pollster.poll) |
| 199 | t.start() |
| 200 | try: |
| 201 | time.sleep(0.5) |
| 202 | # trigger ufds array reallocation |
| 203 | for fd in rfds: |
| 204 | pollster.unregister(fd) |
| 205 | pollster.register(w, select.POLLOUT) |
| 206 | self.assertRaises(RuntimeError, pollster.poll) |
| 207 | finally: |
| 208 | # and make the call to poll() from the thread return |
| 209 | os.write(w, b'spam') |
| 210 | t.join() |
| 211 | |
| 212 | @unittest.skipUnless(threading, 'Threading required for this test.') |
| 213 | @threading_helper.reap_threads |
nothing calls this directly
no test coverage detected