@Test public void testServerStarts() { StatusResponseHandler.StatusResponse response = client.execute( prepareGet().setUri(server.resolve("/v1/query")).build(), createStatusResponseHandler()); assertEquals(response.getStatusCode(), OK.getStatusCode()); }
@Test public void testQuotedSpace() throws Exception { URI uri = baseURI.resolve("/road/to/nowhere?query=ab%20cd"); Request request = prepareGet() .setUri(uri) .build(); int statusCode = executeRequest(request, createStatusResponseHandler()).getStatusCode(); assertEquals(statusCode, 200); assertEquals(servlet.getRequestMethod(), "GET"); assertEquals(servlet.getRequestUri(), uri); }
@Test public void testDeleteViaQueryParam() throws Exception { client.execute(buildRequestWithQueryParam(POST, DELETE), createStatusResponseHandler()); assertFalse(resource.postCalled(), "POST"); assertTrue(resource.deleteCalled(), "DELETE"); assertFalse(resource.putCalled(), "PUT"); assertFalse(resource.getCalled(), "GET"); }
@Test public void testPutMethodWithFileBodyGenerator() throws Exception { byte[] contents = "hello world".getBytes(UTF_8); File testFile = File.createTempFile("test", null); Files.write(testFile.toPath(), contents); URI uri = baseURI.resolve("/road/to/nowhere"); Request request = preparePut() .setUri(uri) .addHeader(CONTENT_TYPE, "x-test") .setBodyGenerator(new FileBodyGenerator(testFile.toPath())) .build(); int statusCode = executeRequest(request, createStatusResponseHandler()).getStatusCode(); assertEquals(statusCode, 200); assertEquals(servlet.getRequestMethod(), "PUT"); assertEquals(servlet.getRequestUri(), uri); assertEquals(servlet.getRequestHeaders(CONTENT_TYPE), ImmutableList.of("x-test")); assertEquals(servlet.getRequestHeaders(CONTENT_LENGTH), ImmutableList.of(String.valueOf(contents.length))); assertEquals(servlet.getRequestBytes(), contents); assertTrue(testFile.delete()); }
@Test public void testKeepAlive() throws Exception { URI uri = URI.create(baseURI.toASCIIString() + "/?remotePort="); Request request = prepareGet() .setUri(uri) .build(); StatusResponse response1 = executeRequest(request, createStatusResponseHandler()); Thread.sleep(1000); StatusResponse response2 = executeRequest(request, createStatusResponseHandler()); Thread.sleep(1000); StatusResponse response3 = executeRequest(request, createStatusResponseHandler()); assertNotNull(response1.getHeader("remotePort")); assertNotNull(response2.getHeader("remotePort")); assertNotNull(response3.getHeader("remotePort")); int port1 = Integer.parseInt(response1.getHeader("remotePort")); int port2 = Integer.parseInt(response2.getHeader("remotePort")); int port3 = Integer.parseInt(response3.getHeader("remotePort")); assertEquals(port2, port1); assertEquals(port3, port1); assertBetweenInclusive(port1, 1024, 65535); }
@Test public void testHttpIsDisabled() throws Exception { config.setHttpEnabled(false); createServer(); server.start(); try (HttpClient client = new JettyHttpClient(new HttpClientConfig().setConnectTimeout(new Duration(2.0, TimeUnit.SECONDS)))) { StatusResponse response = client.execute(prepareGet().setUri(httpServerInfo.getHttpUri().resolve("/")).build(), createStatusResponseHandler()); if (response != null) { // TODO: this is a workaround for a bug in AHC (some race condition) fail("Expected connection refused, got response code: " + response.getStatusCode()); } } catch (RuntimeException e) { assertTrue(e.getCause() instanceof ConnectException, e.getCause().getClass() + " instanceof ConnectException"); } }
@Test(timeOut = 60000) public void testStop() throws Exception { createAndStartServer(); try (HttpClient client = new JettyHttpClient()) { URI uri = URI.create(httpServerInfo.getHttpUri().toASCIIString() + "/?sleep=50000"); Request request = prepareGet().setUri(uri).build(); HttpResponseFuture<?> future = client.executeAsync(request, createStatusResponseHandler()); server.stop(); try { future.get(1, TimeUnit.SECONDS); fail("expected exception"); } catch (ExecutionException e) { assertInstanceOf(e.getCause(), RuntimeIOException.class); } } }
private void assertNonOverridableMethod(Request request) throws IOException, ExecutionException, InterruptedException { StatusResponse response = client.execute(request, createStatusResponseHandler()); assertEquals(response.getStatusCode(), Status.BAD_REQUEST.getStatusCode()); assertFalse(resource.postCalled(), "POST"); assertFalse(resource.deleteCalled(), "DELETE"); assertFalse(resource.putCalled(), "PUT"); assertFalse(resource.getCalled(), "GET"); }
public void execute(String query) { Request request = buildQueryRequest(session, query); StatusResponse response = httpClient.execute(request, createStatusResponseHandler()); if (response.getStatusCode() != 200) { throw new RuntimeException("Query failed: [" + response.getStatusCode() + "] " + response.getStatusMessage()); } }
private synchronized void sendDelete() HttpResponseFuture<StatusResponse> resultFuture = httpClient.executeAsync(prepareDelete().setUri(location).build(), createStatusResponseHandler()); future = resultFuture; Futures.addCallback(resultFuture, new FutureCallback<StatusResponse>()
@Test public void testQuotedSpace() throws Exception { URI uri = baseURI.resolve("/road/to/nowhere?query=ab%20cd"); Request request = prepareGet() .setUri(uri) .build(); int statusCode = executeRequest(request, createStatusResponseHandler()).getStatusCode(); assertEquals(statusCode, 200); assertEquals(servlet.getRequestMethod(), "GET"); assertEquals(servlet.getRequestUri(), uri); }
@Test public void testPutViaQueryParam() throws Exception { client.execute(buildRequestWithQueryParam(POST, PUT), createStatusResponseHandler()); assertFalse(resource.postCalled(), "POST"); assertFalse(resource.deleteCalled(), "DELETE"); assertTrue(resource.putCalled(), "PUT"); assertFalse(resource.getCalled(), "GET"); }
@Test public void testPutMethodWithFileBodyGenerator() throws Exception { byte[] contents = "hello world".getBytes(UTF_8); File testFile = File.createTempFile("test", null); Files.write(testFile.toPath(), contents); URI uri = baseURI.resolve("/road/to/nowhere"); Request request = preparePut() .setUri(uri) .addHeader(CONTENT_TYPE, "x-test") .setBodyGenerator(new FileBodyGenerator(testFile.toPath())) .build(); int statusCode = executeRequest(request, createStatusResponseHandler()).getStatusCode(); assertEquals(statusCode, 200); assertEquals(servlet.getRequestMethod(), "PUT"); assertEquals(servlet.getRequestUri(), uri); assertEquals(servlet.getRequestHeaders(CONTENT_TYPE), ImmutableList.of("x-test")); assertEquals(servlet.getRequestHeaders(CONTENT_LENGTH), ImmutableList.of(String.valueOf(contents.length))); assertEquals(servlet.getRequestBytes(), contents); assertTrue(testFile.delete()); }
@Test public void testKeepAlive() throws Exception { URI uri = URI.create(baseURI.toASCIIString() + "/?remotePort="); Request request = prepareGet() .setUri(uri) .build(); StatusResponse response1 = executeRequest(request, createStatusResponseHandler()); Thread.sleep(1000); StatusResponse response2 = executeRequest(request, createStatusResponseHandler()); Thread.sleep(1000); StatusResponse response3 = executeRequest(request, createStatusResponseHandler()); assertNotNull(response1.getHeader("remotePort")); assertNotNull(response2.getHeader("remotePort")); assertNotNull(response3.getHeader("remotePort")); int port1 = Integer.parseInt(response1.getHeader("remotePort")); int port2 = Integer.parseInt(response2.getHeader("remotePort")); int port3 = Integer.parseInt(response3.getHeader("remotePort")); assertEquals(port2, port1); assertEquals(port3, port1); assertBetweenInclusive(port1, 1024, 65535); }
@Test(timeOut = 30000) public void testStop() throws Exception { DummyServlet servlet = new DummyServlet(); createAndStartServer(servlet); try (HttpClient client = new JettyHttpClient()) { URI uri = URI.create(httpServerInfo.getHttpUri().toASCIIString() + "/?sleep=50000"); Request request = prepareGet().setUri(uri).build(); HttpResponseFuture<?> future = client.executeAsync(request, createStatusResponseHandler()); // wait until the servlet starts processing the request servlet.getLatch().await(1, TimeUnit.SECONDS); // stop server while the request is still active server.stop(); // wait until the server is stopped server.join(); // request should fail rather than sleeping the full duration try { future.get(5, TimeUnit.SECONDS); fail("expected exception"); } catch (ExecutionException e) { assertInstanceOf(e.getCause(), UncheckedIOException.class); } } }
@Override public void processBatch(final Collection<Entry> entries) { final Request request = Request.Builder.preparePost() .setUri(uri) .setHeader("Content-Type", "application/x-jackson-smile") .setBodyGenerator(new BodyGenerator() { @Override public void write(OutputStream out) throws Exception { mapper.writeValue(out, entries); } }) .build(); try { httpClient.execute(request, createStatusResponseHandler()); } catch (RuntimeException e) { // ignore } } }
private void scheduleAsyncCleanupRequest(Backoff cleanupBackoff, Request request, String action) Futures.addCallback(httpClient.executeAsync(request, createStatusResponseHandler()), new FutureCallback<StatusResponse>()
@Test public void testNothing() throws Exception { StatusResponse response = client.execute( prepareGet().setUri(uriFor("/v1/jmx/mbean")).build(), createStatusResponseHandler()); assertEquals(response.getStatusCode(), OK.getStatusCode()); }
@Test public void testQuotedSpace() throws Exception { URI uri = baseURI.resolve("/road/to/nowhere?query=ab%20cd"); Request request = prepareGet() .setUri(uri) .build(); int statusCode = executeRequest(request, createStatusResponseHandler()).getStatusCode(); assertEquals(statusCode, 200); assertEquals(servlet.getRequestMethod(), "GET"); assertEquals(servlet.getRequestUri(), uri); }
@Test public void testPostViaQueryParam() throws Exception { client.execute(buildRequestWithQueryParam(POST, POST), createStatusResponseHandler()); assertTrue(resource.postCalled(), "POST"); assertFalse(resource.deleteCalled(), "DELETE"); assertFalse(resource.putCalled(), "PUT"); assertFalse(resource.getCalled(), "GET"); }