def test_request_error(self): '''Test that the request method handles a server-side exception.''' stoc = StringIO.StringIO() ctos = StringIO.StringIO() client = JsonRpc(stoc, ctos) server = JsonRpc(ctos, stoc) def method(*args, **kwargs): raise Exception('failure') server.addmethod('method', method) task = client.request('method', [1]) task.start() eventqueue = conveyor.event.geteventqueue() while True: result = eventqueue.runiteration(False) if not result: break ctos.seek(0) server.run() while True: result = eventqueue.runiteration(False) if not result: break stoc.seek(0) client.run() while True: result = eventqueue.runiteration(False) if not result: break self.assertTrue(conveyor.task.TaskState.STOPPED, task.state) self.assertTrue(conveyor.task.TaskConclusion.FAILED, task.conclusion) expected = { 'message': 'uncaught exception', 'code': -32000, 'data': { 'args': ['failure'], 'name': 'Exception' } } self.assertEqual(expected, task.failure)
def test_request(self): '''Test the request method.''' stoc = StringIO.StringIO() ctos = StringIO.StringIO() client = JsonRpc(stoc, ctos) server = JsonRpc(ctos, stoc) callback = conveyor.event.Callback() def method(*args, **kwargs): callback(*args, **kwargs) return 2 server.addmethod('method', method) self.assertFalse(callback.delivered) task = client.request('method', [1]) task.start() eventqueue = conveyor.event.geteventqueue() while True: result = eventqueue.runiteration(False) if not result: break ctos.seek(0) server.run() while True: result = eventqueue.runiteration(False) if not result: break stoc.seek(0) client.run() while True: result = eventqueue.runiteration(False) if not result: break self.assertTrue(callback.delivered) self.assertEqual((1, ), callback.args) self.assertEqual({}, callback.kwargs) self.assertTrue(conveyor.task.TaskState.STOPPED, task.state) self.assertTrue(conveyor.task.TaskConclusion.ENDED, task.conclusion) self.assertTrue(2, task.result)
def test_request(self): '''Test the request method.''' stoc = StringIO.StringIO() ctos = StringIO.StringIO() client = JsonRpc(stoc, ctos) server = JsonRpc(ctos, stoc) callback = conveyor.event.Callback() def method(*args, **kwargs): callback(*args, **kwargs) return 2 server.addmethod('method', method) self.assertFalse(callback.delivered) task = client.request('method', [1]) task.start() eventqueue = conveyor.event.geteventqueue() while True: result = eventqueue.runiteration(False) if not result: break ctos.seek(0) server.run() while True: result = eventqueue.runiteration(False) if not result: break stoc.seek(0) client.run() while True: result = eventqueue.runiteration(False) if not result: break self.assertTrue(callback.delivered) self.assertEqual((1,), callback.args) self.assertEqual({}, callback.kwargs) self.assertTrue(conveyor.task.TaskState.STOPPED, task.state) self.assertTrue(conveyor.task.TaskConclusion.ENDED, task.conclusion) self.assertTrue(2, task.result)