def test_singular_rpc(self): handler_results = [] sender_results = [] @self.peer.accept_rpc("service", 0, 0, "method") def handler(x): handler_results.append(x) return x**2 for i in xrange(4): backend.pause() sender_results.append( self.sender.rpc("service", 0, "method", (1, ), {}, timeout=TIMEOUT)) sender_results.append( self.sender.rpc("service", 0, "method", (2, ), {}, timeout=TIMEOUT)) sender_results.append( self.sender.rpc("service", 0, "method", (3, ), {}, timeout=TIMEOUT)) sender_results.append( self.sender.rpc("service", 0, "method", (4, ), {}, timeout=TIMEOUT)) self.assertEqual(handler_results, [1, 2, 3, 4]) self.assertEqual(sender_results, [1, 4, 9, 16])
def test_async_rpc_success(self): handler_results = [] sender_results = [] def handler(x): handler_results.append(x) return x ** 2 self.peer.accept_rpc("service", 0, 0, "method", handler) for i in xrange(4): backend.pause() rpcs = [] rpcs.append(self.sender.send_rpc("service", 0, "method", (1,), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (2,), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (3,), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (4,), {})) while rpcs: rpc = junction.wait_any(rpcs, TIMEOUT) rpcs.remove(rpc) sender_results.append(rpc.value) self.assertEqual(handler_results, [1, 2, 3, 4]) self.assertEqual(sender_results, [1, 4, 9, 16])
def test_async_rpc_success(self): handler_results = [] sender_results = [] def handler(x): handler_results.append(x) return x**2 self.peer.accept_rpc("service", 0, 0, "method", handler) for i in xrange(4): backend.pause() rpcs = [] rpcs.append(self.sender.send_rpc("service", 0, "method", (1, ), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (2, ), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (3, ), {})) rpcs.append(self.sender.send_rpc("service", 0, "method", (4, ), {})) while rpcs: rpc = junction.wait_any(rpcs, TIMEOUT) rpcs.remove(rpc) sender_results.append(rpc.value) self.assertEqual(handler_results, [1, 2, 3, 4]) self.assertEqual(sender_results, [1, 4, 9, 16])
def test_rpc_ruled_out_by_method(self): results = [] self.peer.accept_rpc("service", 0, 0, "method1", results.append) for i in xrange(4): backend.pause() self.assertRaises(junction.errors.UnsupportedRemoteMethod, self.sender.rpc, "service", 0, "method2", (1,), {}, TIMEOUT)
def test_rpc_ruled_out_by_method(self): results = [] self.peer.accept_rpc("service", 0, 0, "method1", results.append) for i in xrange(4): backend.pause() self.assertRaises(junction.errors.UnsupportedRemoteMethod, self.sender.rpc, "service", 0, "method2", (1, ), {}, TIMEOUT)
def test_rpc_ruled_out_by_routing_id(self): results = [] self.peer.accept_rpc("service", 1, 0, "method", results.append) for i in xrange(4): backend.pause() self.assertRaises(junction.errors.Unroutable, self.sender.rpc, "service", 1, "method", (1, ), {}, TIMEOUT) self.assertEqual(results, [])
def test_rpc_ruled_out_by_routing_id(self): results = [] self.peer.accept_rpc("service", 1, 0, "method", results.append) for i in xrange(4): backend.pause() self.assertRaises(junction.errors.Unroutable, self.sender.rpc, "service", 1, "method", (1,), {}, TIMEOUT) self.assertEqual(results, [])
def test_rpc_handler_recognized_exception(self): class CustomError(junction.errors.HandledError): code = 3 def handler(): raise CustomError("gaah") self.peer.accept_rpc("service", 0, 0, "method", handler) for i in xrange(4): backend.pause() try: self.sender.rpc("service", 0, "method", (), {}, TIMEOUT) except CustomError, exc: result = exc
def test_rpc_handler_unknown_exception(self): class CustomError(Exception): pass def handler(): raise CustomError("WOOPS") self.peer.accept_rpc("service", 0, 0, "method", handler) for i in xrange(4): backend.pause() try: self.sender.rpc("service", 0, "method", (), {}, TIMEOUT) except junction.errors.RemoteException, exc: result = exc
def test_rpc_ruled_out_by_service(self): results = [] ev = backend.Event() @self.peer.accept_rpc("service1", 0, 0, "method") def handler(item): results.append(item) ev.set() for i in xrange(4): backend.pause() self.assertRaises(junction.errors.Unroutable, self.sender.rpc, "service2", 0, "method", (1,), {}, TIMEOUT) assert ev.wait(TIMEOUT) self.assertEqual(results, [])
def test_rpc_ruled_out_by_service(self): results = [] ev = backend.Event() @self.peer.accept_rpc("service1", 0, 0, "method") def handler(item): results.append(item) ev.set() for i in xrange(4): backend.pause() self.assertRaises(junction.errors.Unroutable, self.sender.rpc, "service2", 0, "method", (1, ), {}, TIMEOUT) assert ev.wait(TIMEOUT) self.assertEqual(results, [])
def test_chunked_publish_success(self): results = [] ev = backend.Event() @self.peer.accept_publish("service", 0, 0, "method") def handler(items): for item in items: results.append(item) ev.set() for i in xrange(4): backend.pause() self.sender.publish("service", 0, "method", ((x for x in xrange(5)),)) assert not ev.wait(TIMEOUT) self.assertEqual(results, [0, 1, 2, 3, 4])
def test_chunked_publish_success(self): results = [] ev = backend.Event() @self.peer.accept_publish("service", 0, 0, "method") def handler(items): for item in items: results.append(item) ev.set() for i in xrange(4): backend.pause() self.sender.publish("service", 0, "method", ((x for x in xrange(5)), )) assert not ev.wait(TIMEOUT) self.assertEqual(results, [0, 1, 2, 3, 4])
def test_publish_success(self): results = [] ev = backend.Event() @self.peer.accept_publish("service", 0, 0, "method") def handler(item): results.append(item) if len(results) == 4: ev.set() for i in xrange(4): backend.pause() self.sender.publish("service", 0, "method", (1,), {}) self.sender.publish("service", 0, "method", (2,), {}) self.sender.publish("service", 0, "method", (3,), {}) self.sender.publish("service", 0, "method", (4,), {}) ev.wait(TIMEOUT) self.assertEqual(results, [1, 2, 3, 4])
def test_publish_ruled_out_by_service(self): results = [] ev = backend.Event() @self.peer.accept_publish("service1", 0, 0, "method") def handler(item): results.append(item) ev.set() for i in xrange(4): backend.pause() try: self.sender.publish("service2", 0, "method", (1,), {}) except junction.errors.Unroutable: # eat this as Clients don't get this raised, only Hubs pass assert ev.wait(TIMEOUT) self.assertEqual(results, [])
def test_chunked_publish(self): results = [] @self.peer.accept_rpc('service', 0, 0, 'method') def handler(chunks): for chunk in chunks: results.append(chunk) return 5 for i in xrange(4): backend.pause() def gen(): yield 1 yield 2 self.assertEqual( self.sender.rpc('service', 0, 'method', (gen(), ), timeout=TIMEOUT), 5) self.assertEqual(results, [1, 2])
def test_publish_success(self): results = [] ev = backend.Event() @self.peer.accept_publish("service", 0, 0, "method") def handler(item): results.append(item) if len(results) == 4: ev.set() for i in xrange(4): backend.pause() self.sender.publish("service", 0, "method", (1, ), {}) self.sender.publish("service", 0, "method", (2, ), {}) self.sender.publish("service", 0, "method", (3, ), {}) self.sender.publish("service", 0, "method", (4, ), {}) ev.wait(TIMEOUT) self.assertEqual(results, [1, 2, 3, 4])
def test_publish_ruled_out_by_service(self): results = [] ev = backend.Event() @self.peer.accept_publish("service1", 0, 0, "method") def handler(item): results.append(item) ev.set() for i in xrange(4): backend.pause() try: self.sender.publish("service2", 0, "method", (1, ), {}) except junction.errors.Unroutable: # eat this as Clients don't get this raised, only Hubs pass assert ev.wait(TIMEOUT) self.assertEqual(results, [])
def test_chunked_publish(self): results = [] @self.peer.accept_rpc('service', 0, 0, 'method') def handler(chunks): for chunk in chunks: results.append(chunk) return 5 for i in xrange(4): backend.pause() def gen(): yield 1 yield 2 self.assertEqual( self.sender.rpc('service', 0, 'method', (gen(),), timeout=TIMEOUT), 5) self.assertEqual(results, [1,2])
def test_singular_rpc(self): handler_results = [] sender_results = [] @self.peer.accept_rpc("service", 0, 0, "method") def handler(x): handler_results.append(x) return x ** 2 for i in xrange(4): backend.pause() sender_results.append(self.sender.rpc("service", 0, "method", (1,), {}, timeout=TIMEOUT)) sender_results.append(self.sender.rpc("service", 0, "method", (2,), {}, timeout=TIMEOUT)) sender_results.append(self.sender.rpc("service", 0, "method", (3,), {}, timeout=TIMEOUT)) sender_results.append(self.sender.rpc("service", 0, "method", (4,), {}, timeout=TIMEOUT)) self.assertEqual(handler_results, [1,2,3,4]) self.assertEqual(sender_results, [1,4,9,16])