summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNuno Santos <nsantos@apache.org>2008-05-13 15:30:13 +0000
committerNuno Santos <nsantos@apache.org>2008-05-13 15:30:13 +0000
commit6a069879e4d88485ad5dccfeeb7acf521abc24f8 (patch)
tree412f38aa657f21a8d523dac958a5183b82ac7a7c
parent2dc2cc4a04f7cbb0707c4816733b4b47886232a6 (diff)
downloadqpid-python-6a069879e4d88485ad5dccfeeb7acf521abc24f8.tar.gz
QPID-1052: Management: session.name matches session id provided by API, handling of lost connections -- applied patch supplied by Ted Ross
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@655915 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--python/qpid/management.py12
-rw-r--r--python/tests_0-10/management.py15
2 files changed, 24 insertions, 3 deletions
diff --git a/python/qpid/management.py b/python/qpid/management.py
index 0e7233fad2..fe980b4a02 100644
--- a/python/qpid/management.py
+++ b/python/qpid/management.py
@@ -96,6 +96,7 @@ class managementChannel:
self.ecb = exceptionCb
self.context = cbContext
self.reqsOutstanding = 0
+ self.brokerInfo = None
ssn.queue_declare (queue=self.topicName, exclusive=True, auto_delete=True)
ssn.queue_declare (queue=self.replyName, exclusive=True, auto_delete=True)
@@ -116,6 +117,9 @@ class managementChannel:
ssn.message_flow (destination="rdest", unit=0, value=0xFFFFFFFF)
ssn.message_flow (destination="rdest", unit=1, value=0xFFFFFFFF)
+ def setBrokerInfo (self, data):
+ self.brokerInfo = data
+
def shutdown (self):
self.enabled = False
self.ssn.message_cancel (destination="tdest")
@@ -229,7 +233,7 @@ class managementClient:
self.cv.acquire ()
if channel.reqsOutstanding == 0:
self.cv.release ()
- return
+ return channel.brokerInfo
self.syncInFlight = True
starttime = time ()
@@ -239,6 +243,7 @@ class managementClient:
self.cv.release ()
raise RuntimeError ("Timed out waiting for response on channel")
self.cv.release ()
+ return channel.brokerInfo
def syncCallMethod (self, channel, objId, className, methodName, args=None):
""" Synchronous (blocking) method call """
@@ -492,9 +497,10 @@ class managementClient:
self.ctrlCb (ch.context, self.CTRL_USER, data)
def handleBrokerResponse (self, ch, codec):
+ uuid = codec.read_uuid ()
+ data = (uuid, ch.sessionId)
+ ch.setBrokerInfo (data)
if self.ctrlCb != None:
- uuid = codec.read_uuid ()
- data = (uuid, ch.sessionId)
self.ctrlCb (ch.context, self.CTRL_BROKER_INFO, data)
# Send a package request
diff --git a/python/tests_0-10/management.py b/python/tests_0-10/management.py
index b2ab617244..3ca7284d2a 100644
--- a/python/tests_0-10/management.py
+++ b/python/tests_0-10/management.py
@@ -63,6 +63,21 @@ class ManagementTest (TestBase010):
self.assertEqual (len (systems), 1)
mc.removeChannel (mch)
+ def test_self_session_id (self):
+ session = self.session
+
+ mc = managementClient (session.spec)
+ mch = mc.addChannel (session)
+
+ info = mc.syncWaitForStable (mch)
+ brokerSessions = mc.syncGetObjects (mch, "session")
+ found = False
+ for bs in brokerSessions:
+ if bs.name == info[1]:
+ found = True
+ self.assertEqual (found, True)
+ mc.removeChannel (mch)
+
def test_standard_exchanges (self):
session = self.session