Issue 3848: document the fact that epoll register raises an IOError if
an fd is registered twice, and add some additional epoll tests. Patch by Christian Heimes.
This commit is contained in:
parent
d11f7fcc0f
commit
8fcaebbef4
|
@ -160,6 +160,11 @@ Edge and Level Trigger Polling (epoll) Objects
|
|||
|
||||
Register a fd descriptor with the epoll object.
|
||||
|
||||
.. note::
|
||||
|
||||
Registering a file descriptor that's already registered raises an
|
||||
IOError -- contrary to :ref:`poll-objects`'s register.
|
||||
|
||||
|
||||
.. method:: epoll.modify(fd, eventmask)
|
||||
|
||||
|
|
|
@ -95,6 +95,34 @@ class TestEPoll(unittest.TestCase):
|
|||
finally:
|
||||
ep.close()
|
||||
|
||||
# adding by object w/ fileno works, too.
|
||||
ep = select.epoll(2)
|
||||
try:
|
||||
ep.register(server, select.EPOLLIN | select.EPOLLOUT)
|
||||
ep.register(client, select.EPOLLIN | select.EPOLLOUT)
|
||||
finally:
|
||||
ep.close()
|
||||
|
||||
ep = select.epoll(2)
|
||||
try:
|
||||
# TypeError: argument must be an int, or have a fileno() method.
|
||||
self.assertRaises(TypeError, ep.register, object(),
|
||||
select.EPOLLIN | select.EPOLLOUT)
|
||||
self.assertRaises(TypeError, ep.register, None,
|
||||
select.EPOLLIN | select.EPOLLOUT)
|
||||
# ValueError: file descriptor cannot be a negative integer (-1)
|
||||
self.assertRaises(ValueError, ep.register, -1,
|
||||
select.EPOLLIN | select.EPOLLOUT)
|
||||
# IOError: [Errno 9] Bad file descriptor
|
||||
self.assertRaises(IOError, ep.register, 10000,
|
||||
select.EPOLLIN | select.EPOLLOUT)
|
||||
# registering twice also raises an exception
|
||||
ep.register(server, select.EPOLLIN | select.EPOLLOUT)
|
||||
self.assertRaises(IOError, ep.register, server,
|
||||
select.EPOLLIN | select.EPOLLOUT)
|
||||
finally:
|
||||
ep.close()
|
||||
|
||||
def test_fromfd(self):
|
||||
server, client = self._connected_pair()
|
||||
|
||||
|
|
Loading…
Reference in New Issue