use of org.apache.storm.generated.DRPCExecutionException in project storm by apache.
the class DRPCTest method testDequeueAfterTimeout.
@Test
public void testDequeueAfterTimeout() throws Exception {
long timeout = 2;
try (DRPC server = new DRPC(null, timeout)) {
long start = Time.currentTimeMillis();
try {
server.executeBlocking("testing", "test");
fail("Should have timed out....");
} catch (DRPCExecutionException e) {
long spent = Time.currentTimeMillis() - start;
assertTrue(spent < timeout * 2);
assertTrue(spent >= timeout);
assertEquals(DRPCExceptionType.SERVER_TIMEOUT, e.get_type());
}
DRPCRequest request = server.fetchRequest("testing");
assertNotNull(request);
assertEquals("", request.get_request_id());
assertEquals("", request.get_func_args());
}
}
use of org.apache.storm.generated.DRPCExecutionException in project storm by apache.
the class DRPCServerTest method testFailedThrift.
@Test
public void testFailedThrift() throws Exception {
int drpcPort = Utils.getAvailablePort();
int invocationsPort = Utils.getAvailablePort(drpcPort + 1);
Map<String, Object> conf = getConf(drpcPort, invocationsPort, null);
try (DRPCServer server = new DRPCServer(conf)) {
exec.submit(() -> {
server.start();
return null;
});
try (DRPCClient client = new DRPCClient(conf, "localhost", drpcPort);
DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", invocationsPort)) {
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);
//Don't know a better way to validate that it failed.
assertEquals("Request failed", ((DRPCExecutionException) t).get_msg());
}
}
}
}
use of org.apache.storm.generated.DRPCExecutionException in project storm by apache.
the class BlockingOutstandingRequest method getResult.
public String getResult() throws DRPCExecutionException {
try {
_sem.acquire();
} catch (InterruptedException e) {
//Ignored
}
if (_result != null) {
return _result;
}
if (_e == null) {
_e = new DRPCExecutionException("Internal Error: No Result and No Exception");
_e.set_type(DRPCExceptionType.INTERNAL_ERROR);
}
throw _e;
}
use of org.apache.storm.generated.DRPCExecutionException in project storm by apache.
the class DRPCTest method testFailedBlocking.
@Test
public void testFailedBlocking() throws Exception {
try (DRPC server = new DRPC(null, 100)) {
Future<String> found = exec.submit(() -> server.executeBlocking("testing", "test"));
DRPCRequest request = getNextAvailableRequest(server, "testing");
assertNotNull(request);
assertEquals("test", request.get_func_args());
assertNotNull(request.get_request_id());
server.failRequest(request.get_request_id(), null);
try {
found.get(100, TimeUnit.MILLISECONDS);
fail("exec did not throw an exception");
} catch (ExecutionException e) {
Throwable t = e.getCause();
assertEquals(t.getClass(), DRPCExecutionException.class);
//Don't know a better way to validate that it failed.
assertEquals(DRPCExceptionType.FAILED_REQUEST, ((DRPCExecutionException) t).get_type());
}
}
}
Aggregations