MCPcopy Index your code
hub / github.com/python/cpython / test_threaded_poll

Method test_threaded_poll

Lib/test/test_poll.py:197–222  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

195
196 @threading_helper.reap_threads
197 def test_threaded_poll(self):
198 r, w = os.pipe()
199 self.addCleanup(os.close, r)
200 self.addCleanup(os.close, w)
201 rfds = []
202 for i in range(10):
203 fd = os.dup(r)
204 self.addCleanup(os.close, fd)
205 rfds.append(fd)
206 pollster = select.poll()
207 for fd in rfds:
208 pollster.register(fd, select.POLLIN)
209
210 t = threading.Thread(target=pollster.poll)
211 t.start()
212 try:
213 time.sleep(0.5)
214 # trigger ufds array reallocation
215 for fd in rfds:
216 pollster.unregister(fd)
217 pollster.register(w, select.POLLOUT)
218 self.assertRaises(RuntimeError, pollster.poll)
219 finally:
220 # and make the call to poll() from the thread return
221 os.write(w, b'spam')
222 t.join()
223
224 @unittest.skipUnless(threading, 'Threading required for this test.')
225 @threading_helper.reap_threads

Callers

nothing calls this directly

Calls 12

startMethod · 0.95
joinMethod · 0.95
addCleanupMethod · 0.80
pipeMethod · 0.45
dupMethod · 0.45
appendMethod · 0.45
pollMethod · 0.45
registerMethod · 0.45
sleepMethod · 0.45
unregisterMethod · 0.45
assertRaisesMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected