Example #1
0
    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()
Example #2
0
 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()
Example #3
0
    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()
Example #4
0
 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()
Example #5
0
    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()
Example #6
0
 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()