def test_register_twice_does_not_duplicate_fd(self, select):
     select.epoll.return_value = FakeEpoll()
     poller = EPollPoller()
     poller.register(0)
     poller.register(0)  # IOError is swallowed
     fd = poller.poll()
     self.assertEqual(list(fd), [0])
 def test_unregister_twice_has_no_side_effect(self, select):
     select.epoll.return_value = FakeEpoll()
     poller = EPollPoller()
     poller.register(0)
     poller.unregister(0)
     try:
         poller.unregister(0)
     except Exception as ex:
         self.fail("Shouldn't have failed: %s" % ex)
    def test_timeout_when_no_registered_fds(self, select):
        select.epoll.return_value = FakeEpoll()
        poller = EPollPoller(timeout=0.5)

        a = time.time()
        fd = list(poller.poll())
        b = time.time()
        self.assertEqual(fd, [])

        d = b - a
        if not (0.48 < d < 0.52):
            self.fail("Did not wait for the appropriate amount of time: %f" %
                      d)
    def test_release_poller(self, select):
        select.epoll.return_value = FakeEpoll()
        poller = EPollPoller()

        poller.register(0)
        poller.register(1)
        fd = poller.poll()
        self.assertEqual(list(fd), [0, 1])

        poller.unregister(0)
        fd = poller.poll()
        self.assertEqual(list(fd), [1])

        poller.release()
        fd = poller.poll()
        self.assertEqual(list(fd), [])