def test_update(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s1, s2 = socketpair() fd = s2.fileno() handle = poll.add_callback(fd, WRITABLE, callback) self.assertIsNotNone(handle) called.wait(0.1) self.assertEqual(cbargs, [(fd, WRITABLE)]) del cbargs[:] called.clear() poll.update_callback(fd, handle, READABLE | WRITABLE) s1.send(b'x') called.wait(0.1) self.assertEqual(cbargs, [(fd, READABLE | WRITABLE)]) del cbargs[:] called.clear() poll.close() s1.close() s2.close()
def test_close(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s1, s2 = socketpair() fd = s2.fileno() handle = poll.add_callback(fd, READABLE, callback) self.assertIsNotNone(handle) s1.send(b'x') poll.close() called.wait(0.01) self.assertEqual(cbargs, []) self.assertRaises(RuntimeError, poll.add_callback, fd, READABLE, callback) self.assertRaises(RuntimeError, poll.remove_callback, fd, handle) self.assertRaises(RuntimeError, poll.update_callback, fd, handle, WRITABLE) s1.close(); s2.close()
def test_close(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s1, s2 = socketpair() fd = s2.fileno() handle = poll.add_callback(fd, READABLE, callback) self.assertIsNotNone(handle) s1.send(b'x') poll.close() called.wait(0.01) self.assertEqual(cbargs, []) self.assertRaises(RuntimeError, poll.add_callback, fd, READABLE, callback) self.assertRaises(RuntimeError, poll.remove_callback, fd, handle) self.assertRaises(RuntimeError, poll.update_callback, fd, handle, WRITABLE) s1.close() s2.close()
def test_multiple_fds(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s11, s12 = socketpair() fd1 = s12.fileno() poll.add_callback(fd1, READABLE, callback) s21, s22 = socketpair() fd2 = s22.fileno() poll.add_callback(fd2, READABLE, callback) s11.send(b'x') s21.send(b'x') called.wait() self.assertEqual(cbargs, [(fd1, READABLE), (fd2, READABLE)]) poll.close() s11.close(); s12.close() s21.close(); s22.close()
def test_multiple_fds(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s11, s12 = socketpair() fd1 = s12.fileno() poll.add_callback(fd1, READABLE, callback) s21, s22 = socketpair() fd2 = s22.fileno() poll.add_callback(fd2, READABLE, callback) s11.send(b'x') s21.send(b'x') called.wait() self.assertEqual(cbargs, [(fd1, READABLE), (fd2, READABLE)]) poll.close() s11.close() s12.close() s21.close() s22.close()
def test_update(self): poll = Poller(get_hub().loop) cbargs = [] called = Event() def callback(fd, events): cbargs.append((fd, events)) called.set() s1, s2 = socketpair() fd = s2.fileno() handle = poll.add_callback(fd, WRITABLE, callback) self.assertIsNotNone(handle) called.wait(0.1) self.assertEqual(cbargs, [(fd, WRITABLE)]) del cbargs[:]; called.clear() poll.update_callback(fd, handle, READABLE|WRITABLE) s1.send(b'x') called.wait(0.1) self.assertEqual(cbargs, [(fd, READABLE|WRITABLE)]) del cbargs[:]; called.clear() poll.close() s1.close(); s2.close()