mirror of https://github.com/python/cpython
Merged revisions 73077 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r73077 | r.david.murray | 2009-05-31 15:15:57 -0400 (Sun, 31 May 2009) | 4 lines 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
6987d54116
commit
e6a4d78a62
|
@ -160,6 +160,11 @@ Edge and Level Trigger Polling (epoll) Objects
|
||||||
|
|
||||||
Register a fd descriptor with the epoll object.
|
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)
|
.. method:: epoll.modify(fd, eventmask)
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,34 @@ class TestEPoll(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
ep.close()
|
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):
|
def test_fromfd(self):
|
||||||
server, client = self._connected_pair()
|
server, client = self._connected_pair()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue