public java.lang.Object getFieldValue(_Fields field) { switch (field) { case FUNC_ARGS: return get_func_args(); case REQUEST_ID: return get_request_id(); } throw new java.lang.IllegalStateException(); }
returnInfo.put("host", client.getHost()); returnInfo.put("port", client.getPort()); _collector.emit(new Values(req.get_func_args(), JSONValue.toJSONString(returnInfo)), new DRPCMessageId(req.get_request_id(), i)); break; returnInfo.put("host", _local_drpc_id); returnInfo.put("port", 0); _collector.emit(new Values(req.get_func_args(), JSONValue.toJSONString(returnInfo)), new DRPCMessageId(req.get_request_id(), 0));
@Test public void testGoodBlocking() throws Exception { try (DRPC server = new DRPC(new StormMetricsRegistry(), 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.returnResult(request.get_request_id(), "tested"); String result = found.get(10, TimeUnit.MILLISECONDS); assertEquals("tested", result); } }
@Test public void testFailedHttpGet() throws Exception { LOG.info("STARTING HTTP GET (FAIL) TEST..."); Map<String, Object> conf = getConf(0, 0, 0); try (DRPCServer server = new DRPCServer(conf, new StormMetricsRegistry())) { server.start(); //TODO need a better way to do this Thread.sleep(2000); try (DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) { Future<String> found = exec.submit(() -> doGet(server.getHttpServerPort(), "testing", "test")); DRPCRequest request = getNextAvailableRequest(invoke, "testing"); assertNotNull(request); assertEquals("test", request.get_func_args()); assertNotNull(request.get_request_id()); invoke.getClient().failRequest(request.get_request_id()); try { found.get(1000, TimeUnit.MILLISECONDS); fail("exec did not throw an exception"); } catch (ExecutionException e) { LOG.warn("Got Expected Exception", e); //Getting the exact response code is a bit more complex. //TODO should use a better client } } } } }
@Test public void testGoodHttpGet() throws Exception { LOG.info("STARTING HTTP GET TEST..."); Map<String, Object> conf = getConf(0, 0, 0); try (DRPCServer server = new DRPCServer(conf, new StormMetricsRegistry())) { server.start(); //TODO need a better way to do this Thread.sleep(2000); try (DRPCInvocationsClient invoke = new DRPCInvocationsClient(conf, "localhost", server.getDrpcInvokePort())) { final Future<String> found = exec.submit(() -> doGet(server.getHttpServerPort(), "testing", "test")); DRPCRequest request = getNextAvailableRequest(invoke, "testing"); assertNotNull(request); assertEquals("test", request.get_func_args()); assertNotNull(request.get_request_id()); invoke.result(request.get_request_id(), "tested"); String result = found.get(1000, TimeUnit.MILLISECONDS); assertEquals("tested", result); } } }
@Test public void testFailedBlocking() throws Exception { try (DRPC server = new DRPC(new StormMetricsRegistry(), 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(); assertTrue(t instanceof DRPCExecutionException); //Don't know a better way to validate that it failed. assertEquals(DRPCExceptionType.FAILED_REQUEST, ((DRPCExecutionException) t).get_type()); } } }
@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); //Don't know a better way to validate that it failed. assertEquals("Request failed", ((DRPCExecutionException)t).get_msg()); } } } }
@Test public void testGoodThrift() 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())) { final 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.result(request.get_request_id(), "tested"); String result = found.get(1000, TimeUnit.MILLISECONDS); assertEquals("tested", result); } } }
@Test public void testDequeueAfterTimeout() throws Exception { long timeout = 1000; try (DRPC server = new DRPC(new StormMetricsRegistry(), 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()); } }
public Object getFieldValue(_Fields field) { switch (field) { case FUNC_ARGS: return get_func_args(); case REQUEST_ID: return get_request_id(); } throw new IllegalStateException(); }
returnInfo.put("host", client.getHost()); returnInfo.put("port", client.getPort()); _collector.emit(new Values(req.get_func_args(), JSONValue.toJSONString(returnInfo)), new DRPCMessageId(req.get_request_id(), i)); break; returnInfo.put("host", _local_drpc_id); returnInfo.put("port", 0); _collector.emit(new Values(req.get_func_args(), JSONValue.toJSONString(returnInfo)), new DRPCMessageId(req.get_request_id(), 0));