@Test
public void testFailedThrift() throws Exception {
Map<String, Object> conf = getConf(0, 0, null);
try (DRPCServer server = new DRPCServer(conf, new StormMetricsRegistry())) {
server.start();
try (DRPCClient client = new DRPCClient(conf, "localhost", server.getDrpcPort());
DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) {
Future<String> found = exec.submit(() -> client.getClient().execute("testing", "test"));
DRPCRequest request = getNextAvailableRequest(invoke, "testing");
assertNotNull(request);
assertEquals("test", request.get_func_args());
assertNotNull(request.get_request_id());
invoke.failRequest(request.get_request_id());
try {
found.get(1000, TimeUnit.MILLISECONDS);
fail("exec did not throw an exception");
} catch (ExecutionException e) {
Throwable t = e.getCause();
assertEquals(t.getClass(), DRPCExecutionException.class);
assertEquals("Request failed", ((DRPCExecutionException)t).get_msg());
}
}
}
}