summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2013-08-16 11:01:26 +0100
committerMark McLoughlin <markmc@redhat.com>2013-08-16 11:08:50 +0100
commit001d66e6e56cdc946b5c6115423358206942bc9c (patch)
tree428840770c5150f8a47b369289d91f8ea09f6039
parent747e1a4099e003025d523f6ec49395fc91c43f53 (diff)
downloadoslo-messaging-001d66e6e56cdc946b5c6115423358206942bc9c.tar.gz
Fix fake driver handling of failure replies
The driver reply() method is actually passed a full sys.exc_info() tuple. This was masked in the unit tests because the driver ended up basically doing: raise (ValueError, ValueError, ...) which caused a new ValueError to be instantiated and the test was satisified. However, if an exception type has some required arguments, you'll get a TypeError when this statement attempts to instantiate it with no arguments. Change-Id: I4af9c5084954d7b9c5f02cdae3387d17c206985b
-rw-r--r--oslo/messaging/_drivers/impl_fake.py1
-rw-r--r--tests/test_rpc_server.py20
2 files changed, 17 insertions, 4 deletions
diff --git a/oslo/messaging/_drivers/impl_fake.py b/oslo/messaging/_drivers/impl_fake.py
index ef331b5..e1f204c 100644
--- a/oslo/messaging/_drivers/impl_fake.py
+++ b/oslo/messaging/_drivers/impl_fake.py
@@ -32,6 +32,7 @@ class FakeIncomingMessage(base.IncomingMessage):
def reply(self, reply=None, failure=None, log_failure=True):
if self._reply_q:
+ failure = failure[1] if failure else None
self._reply_q.put((reply, failure))
diff --git a/tests/test_rpc_server.py b/tests/test_rpc_server.py
index 27bc674..8577c56 100644
--- a/tests/test_rpc_server.py
+++ b/tests/test_rpc_server.py
@@ -279,12 +279,18 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
class TestEndpoint(object):
def ping(self, ctxt, arg):
- raise ValueError
+ raise ValueError(arg)
server_thread = self._setup_server(transport, TestEndpoint())
client = self._setup_client(transport)
- self.assertRaises(ValueError, client.call, {}, 'ping', arg='foo')
+ try:
+ client.call({}, 'ping', arg='foo')
+ except Exception as ex:
+ self.assertIsInstance(ex, ValueError)
+ self.assertEquals(ex[0], 'dsfoo')
+ else:
+ self.assertTrue(False)
self._stop_server(client, server_thread)
@@ -294,12 +300,18 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
class TestEndpoint(object):
@messaging.expected_exceptions(ValueError)
def ping(self, ctxt, arg):
- raise ValueError
+ raise ValueError(arg)
server_thread = self._setup_server(transport, TestEndpoint())
client = self._setup_client(transport)
- self.assertRaises(ValueError, client.call, {}, 'ping', arg='foo')
+ try:
+ client.call({}, 'ping', arg='foo')
+ except Exception as ex:
+ self.assertIsInstance(ex, ValueError)
+ self.assertEquals(ex[0], 'dsfoo')
+ else:
+ self.assertTrue(False)
self._stop_server(client, server_thread)