- assertFailedRpcResult(rpcResult, ErrorSeverity.ERROR, ErrorType.RPC, "operation-failed",
- TestException.MESSAGE, null, null, TestException.MESSAGE);
- } finally {
- if(assertError.get() != null) {
- throw assertError.get();
- }
- }
+ /**
+ * This test method invokes and executes the remote rpc
+ */
+ @Test(expected = DOMRpcException.class)
+ public void testInvokeRpcWithRemoteFailedFuture() throws Exception {
+ final ContainerNode rpcOutput = null;
+ final DOMRpcResult rpcResult = new DefaultDOMRpcResult(rpcOutput);
+
+ final NormalizedNode<?, ?> invokeRpcInput = makeRPCInput("foo");
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ final ArgumentCaptor<NormalizedNode<?, ?>> inputCaptor =
+ (ArgumentCaptor) ArgumentCaptor.forClass(NormalizedNode.class);
+
+ when(domRpcService2.invokeRpc(eq(TEST_RPC_TYPE), inputCaptor.capture())).thenReturn(
+ Futures.<DOMRpcResult, DOMRpcException>immediateFailedCheckedFuture(new DOMRpcException(
+ "Test Exception") {}));
+
+ final CheckedFuture<DOMRpcResult, DOMRpcException> frontEndFuture =
+ remoteRpcImpl1.invokeRpc(TEST_RPC_ID, invokeRpcInput);
+ assertTrue(frontEndFuture instanceof RemoteDOMRpcFuture);
+ final FindRouters findRouters = rpcRegistry1Probe.expectMsgClass(RpcRegistry.Messages.FindRouters.class);
+ final RouteIdentifier<?, ?, ?> routeIdentifier = findRouters.getRouteIdentifier();
+ assertEquals("getType", TEST_RPC, routeIdentifier.getType());
+ assertEquals("getRoute", TEST_PATH, routeIdentifier.getRoute());
+
+ rpcRegistry1Probe.reply(new RpcRegistry.Messages.FindRoutersReply(Arrays.asList(new Pair<ActorRef, Long>(
+ rpcBroker2, 200L))));
+ frontEndFuture.checkedGet(5, TimeUnit.SECONDS);