diff options
Diffstat (limited to 'qpid/python/qpid/tests/messaging/endpoints.py')
-rw-r--r-- | qpid/python/qpid/tests/messaging/endpoints.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/qpid/python/qpid/tests/messaging/endpoints.py b/qpid/python/qpid/tests/messaging/endpoints.py index 5d4fc1646b..b1f00b680c 100644 --- a/qpid/python/qpid/tests/messaging/endpoints.py +++ b/qpid/python/qpid/tests/messaging/endpoints.py @@ -20,7 +20,7 @@ # setup, usage, teardown, errors(sync), errors(async), stress, soak, # boundary-conditions, config -import time +import errno, os, time from qpid import compat from qpid.messaging import * from qpid.tests.messaging import Base @@ -48,6 +48,29 @@ class SetupTests(Base): # XXX: should verify that e includes appropriate diagnostic info pass + def use_fds(self): + fds = [] + try: + while True: + fds.append(os.open(getattr(os, "devnull", "/dev/null"), os.O_RDONLY)) + except OSError, e: + if e.errno != errno.EMFILE: + raise e + else: + return fds + + def testOpenCloseResourceLeaks(self): + fds = self.use_fds() + try: + for i in range(32): + if fds: os.close(fds.pop()) + for i in xrange(64): + conn = Connection.open(self.broker.host, self.broker.port) + conn.close() + finally: + while fds: + os.close(fds.pop()) + class ConnectionTests(Base): def setup_connection(self): |