From 2c4fdf9d81d32dd5c319714a86d3ab9ab5a6664e Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 21 Feb 2007 16:49:27 +0000 Subject: Fixed bug in references where map wasn't qualified in close Attach reference to transfer, as it will be deleted on close Altered tests to get reference from the message on the queue rather than looking them up from channel as they are already gone there git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9@510096 13f79535-47bb-0310-9956-ffa450edef68 --- python/qpid/client.py | 2 ++ python/qpid/reference.py | 2 +- python/tests/message.py | 11 ++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) (limited to 'python') diff --git a/python/qpid/client.py b/python/qpid/client.py index e14166c885..f6a540c7ec 100644 --- a/python/qpid/client.py +++ b/python/qpid/client.py @@ -111,6 +111,8 @@ class ClientDelegate(Delegate): self.client.started.set() def message_transfer(self, ch, msg): + if isinstance(msg.body, ReferenceId): + msg.reference = ch.references.get(msg.body.id) self.client.queue(msg.destination).put(msg) def message_open(self, ch, msg): diff --git a/python/qpid/reference.py b/python/qpid/reference.py index d357560390..48ecb67656 100644 --- a/python/qpid/reference.py +++ b/python/qpid/reference.py @@ -111,7 +111,7 @@ class References: self.get(id).close() self.lock.acquire() try: - del map[id] + self.map.pop(id) finally: self.lock.release() diff --git a/python/tests/message.py b/python/tests/message.py index bab596974a..8da9978792 100644 --- a/python/tests/message.py +++ b/python/tests/message.py @@ -455,7 +455,8 @@ class MessageTests(TestBase): msg = queue.get(timeout=1) self.assertTrue(isinstance(msg.body, ReferenceId)) - self.assertEquals(data, ch2.references.get(msg.body.id).get_complete()) + self.assertTrue(msg.reference) + self.assertEquals(data, msg.reference.get_complete()) def test_reference_completion(self): """ @@ -539,15 +540,15 @@ class MessageTests(TestBase): #inline or by reference in any combination if isinstance(msg1.body, ReferenceId): - self.assertEquals("second message", channel.references.get(msg1.body.id).get_complete()) + self.assertEquals("second message", msg1.reference.get_complete()) if isinstance(msg2.body, ReferenceId): if msg1.body != msg2.body: - self.assertEquals("second message", channel.references.get(msg2.body.id).get_complete()) + self.assertEquals("second message", msg2.reference.get_complete()) #else ok, as same ref as msg1 else: self.assertEquals("second message", msg1.body) if isinstance(msg2.body, ReferenceId): - self.assertEquals("second message", channel.references.get(msg2.body.id).get_complete()) + self.assertEquals("second message", msg2.reference.get_complete()) else: self.assertEquals("second message", msg2.body) @@ -644,7 +645,7 @@ class MessageTests(TestBase): def assertDataEquals(self, channel, msg, expected): if isinstance(msg.body, ReferenceId): - data = channel.references.get(msg.body.id).get_complete() + data = msg.reference.get_complete() else: data = msg.body self.assertEquals(expected, data) -- cgit v1.2.1