summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-02-21 18:06:02 +0000
committerGordon Sim <gsim@apache.org>2007-02-21 18:06:02 +0000
commitc36fb4454be5ce4311aa5f5d0e5683db713c5545 (patch)
treef8997a71e6c6460ec4d5e5df209f3233fc4b3707
parent0b3c81e3a15d02fb3d52926b72df6cbe33c4f811 (diff)
downloadqpid-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.py6
-rw-r--r--python/qpid/connection.py3
-rw-r--r--python/qpid/testlib.py20
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"""