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

Method test_select_read_write

Lib/test/test_selectors.py:287–314  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

285 self.assertEqual([(wr_key, selectors.EVENT_WRITE)], result)
286
287 def test_select_read_write(self):
288 # gh-110038: when a file descriptor is registered for both read and
289 # write, the two events must be seen on a single call to select().
290 s = self.SELECTOR()
291 self.addCleanup(s.close)
292
293 sock1, sock2 = self.make_socketpair()
294 sock2.send(b"foo")
295 my_key = s.register(sock1, selectors.EVENT_READ | selectors.EVENT_WRITE)
296
297 seen_read, seen_write = False, False
298 result = s.select()
299 # We get the read and write either in the same result entry or in two
300 # distinct entries with the same key.
301 self.assertLessEqual(len(result), 2)
302 for key, events in result:
303 self.assertTrue(isinstance(key, selectors.SelectorKey))
304 self.assertEqual(key, my_key)
305 self.assertFalse(events & ~(selectors.EVENT_READ |
306 selectors.EVENT_WRITE))
307 if events & selectors.EVENT_READ:
308 self.assertFalse(seen_read)
309 seen_read = True
310 if events & selectors.EVENT_WRITE:
311 self.assertFalse(seen_write)
312 seen_write = True
313 self.assertTrue(seen_read)
314 self.assertTrue(seen_write)
315
316 def test_context_manager(self):
317 s = self.SELECTOR()

Callers

nothing calls this directly

Calls 9

make_socketpairMethod · 0.95
addCleanupMethod · 0.80
assertLessEqualMethod · 0.80
assertTrueMethod · 0.80
assertFalseMethod · 0.80
sendMethod · 0.45
registerMethod · 0.45
selectMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected