diff options
author | Gordon Sim <gsim@apache.org> | 2007-02-21 18:06:02 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2007-02-21 18:06:02 +0000 |
commit | c36fb4454be5ce4311aa5f5d0e5683db713c5545 (patch) | |
tree | f8997a71e6c6460ec4d5e5df209f3233fc4b3707 | |
parent | 0b3c81e3a15d02fb3d52926b72df6cbe33c4f811 (diff) | |
download | qpid-python-c36fb4454be5ce4311aa5f5d0e5683db713c5545.tar.gz |
Ensure socket is closed in tearDown
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9@510128 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | python/qpid/client.py | 6 | ||||
-rw-r--r-- | python/qpid/connection.py | 3 | ||||
-rw-r--r-- | python/qpid/testlib.py | 20 |
3 files changed, 22 insertions, 7 deletions
diff --git a/python/qpid/client.py b/python/qpid/client.py index f6a540c7ec..fa078facb0 100644 --- a/python/qpid/client.py +++ b/python/qpid/client.py @@ -76,7 +76,8 @@ class Client: self.locale = locale self.tune_params = tune_params - self.conn = Connection(connect(self.host, self.port), self.spec) + self.socket = connect(self.host, self.port) + self.conn = Connection(self.socket, self.spec) self.peer = Peer(self.conn, ClientDelegate(self), self.opened) self.conn.init() @@ -90,6 +91,9 @@ class Client: def opened(self, ch): ch.references = References() + def close(self): + self.socket.close() + class ClientDelegate(Delegate): def __init__(self, client): diff --git a/python/qpid/connection.py b/python/qpid/connection.py index 0785fe8774..cdfa2c2dc0 100644 --- a/python/qpid/connection.py +++ b/python/qpid/connection.py @@ -53,6 +53,9 @@ class SockIO: def flush(self): pass + def close(self): + self.sock.shutdown(socket.SHUT_RDWR) + def connect(host, port): sock = socket.socket() sock.connect((host, port)) diff --git a/python/qpid/testlib.py b/python/qpid/testlib.py index 793698ca31..815d95ca26 100644 --- a/python/qpid/testlib.py +++ b/python/qpid/testlib.py @@ -122,7 +122,11 @@ Options: self._parseargs(args) runner = unittest.TextTestRunner(descriptions=False, verbosity=self.verbose) - result = runner.run(self.testSuite()) + try: + result = runner.run(self.testSuite()) + except: + print "Unhandled error in test:", sys.exc_info() + if (self.ignore): print "=======================================" print "NOTE: the following tests were ignored:" @@ -167,14 +171,18 @@ class TestBase(unittest.TestCase): self.channel.channel_open() def tearDown(self): - for ch, q in self.queues: - ch.queue_delete(queue=q) - for ch, ex in self.exchanges: - ch.exchange_delete(exchange=ex) + try: + for ch, q in self.queues: + ch.queue_delete(queue=q) + for ch, ex in self.exchanges: + ch.exchange_delete(exchange=ex) + except: + print "Error on tearDown:", sys.exc_info() if not self.client.closed: self.client.channel(0).connection_close(reply_code=200) - del self.client + else: + self.client.close() def connect(self, *args, **keys): """Create a new connction, return the Client object""" |