@Test public void testRetryNonBlocking() throws IOException, InterruptedException, ExecutionException { AsyncHttpClientConfig config = config() .setKeepAlive(true) .setMaxConnections(100) .setConnectTimeout(60000) .setRequestTimeout(30000) .build(); try (AsyncHttpClient client = asyncHttpClient(config)) { List<ListenableFuture<Response>> res = new ArrayList<>(); for (int i = 0; i < 32; i++) { res.add(testMethodRequest(client, 3, "servlet", UUID.randomUUID().toString())); } StringBuilder b = new StringBuilder(); for (ListenableFuture<Response> r : res) { Response theres = r.get(); assertEquals(200, theres.getStatusCode()); b.append("==============\r\n") .append("Response Headers\r\n"); HttpHeaders heads = theres.getHeaders(); b.append(heads).append("\r\n") .append("==============\r\n"); } System.out.println(b.toString()); System.out.flush(); } }
try (AsyncHttpClient client = asyncHttpClient(config().setMaxConnections(1))) { final CountDownLatch latch = new CountDownLatch(samples); final List<Exception> tooManyConnections = Collections.synchronizedList(new ArrayList<>(2));
@Test public void testRetryNonBlockingAsyncConnect() throws IOException, InterruptedException, ExecutionException { AsyncHttpClientConfig config = config() .setKeepAlive(true) .setMaxConnections(100) .setConnectTimeout(60000) .setRequestTimeout(30000) .build(); try (AsyncHttpClient client = asyncHttpClient(config)) { List<ListenableFuture<Response>> res = new ArrayList<>(); for (int i = 0; i < 32; i++) { res.add(testMethodRequest(client, 3, "servlet", UUID.randomUUID().toString())); } StringBuilder b = new StringBuilder(); for (ListenableFuture<Response> r : res) { Response theres = r.get(); assertEquals(theres.getStatusCode(), 200); b.append("==============\r\n") .append("Response Headers\r\n"); HttpHeaders heads = theres.getHeaders(); b.append(heads).append("\r\n") .append("==============\r\n"); } System.out.println(b.toString()); System.out.flush(); } }
config.setHandshakeTimeout(poolConfiguration.getHandshakeTimeout()); config.setMaxConnections(poolConfiguration.getMaxConnections()); config.setMaxConnectionsPerHost(poolConfiguration.getMaxConnectionsPerHost()); config.setPooledConnectionIdleTimeout(poolConfiguration.getIdleConnectionInPoolTimeout());
.setMaxConnections(maxConnections).setMaxConnectionsPerHost(maxConnectionsPerHost) .setConnectTimeout(connectTimeout).setReadTimeout(readTimeout) .setPooledConnectionIdleTimeout(pooledConnectionIdleTimeout).setRequestTimeout(requestTimeout)
config.setConnectionTtl((int) (period * 2)); // 2 times the period so it gives a chance under heavy load to reuse connections config.setMaxConnectionsPerHost(maxConnections + 10); config.setMaxConnections(maxConnections + 10); config.setIoThreadsCount(nioThreads); config.setThreadFactory(new DaemonThreadFactory("elasticsearch-event-"));
/** * Creates a {@link HttpClient} that can be used by the {@link SphereClient}. * @return new http client with custom settings */ public static HttpClient createCustomHttpClient() { final AsyncHttpClientConfig httpClientConfig = new DefaultAsyncHttpClientConfig.Builder() .setEnabledProtocols(new String[]{"TLSv1.2"})//required //examples for configuration .setMaxConnections(500) .setConnectTimeout(10000) // .setProxyServer(proxy) .build(); final AsyncHttpClient asyncHttpClient = new DefaultAsyncHttpClient(httpClientConfig); return AsyncHttpClientAdapter.of(asyncHttpClient); }
.setRequestTimeout(5000) .setKeepAlive(true) .setMaxConnections(1) .setMaxConnectionsPerHost(1) .build();
.setRequestTimeout(5000) .setKeepAlive(false) .setMaxConnections(2) .setMaxConnectionsPerHost(1) .build();
.setRequestTimeout(5000) .setKeepAlive(false) .setMaxConnections(1) .setMaxConnectionsPerHost(1) .build();
@Test(groups = "online", invocationCount = 4) public void multipleSslRequestsWithDelayAndKeepAlive() throws Exception { AsyncHttpClientConfig config = config() .setFollowRedirect(true) .setKeepAlive(true) .setConnectTimeout(10000) .setPooledConnectionIdleTimeout(60000) .setRequestTimeout(10000) .setMaxConnectionsPerHost(-1) .setMaxConnections(-1) .build(); try (AsyncHttpClient client = asyncHttpClient(config)) { final BoundRequestBuilder builder = client.prepareGet(GOOGLE_HTTPS_URL); final Response response1 = builder.execute().get(); Thread.sleep(4000); final Response response2 = builder.execute().get(); assertNotNull(response1); assertNotNull(response2); } } }
@Test(expectedExceptions = TooManyConnectionsException.class) public void testMaxTotalConnectionsException() throws Throwable { try (AsyncHttpClient client = asyncHttpClient(config().setKeepAlive(true).setMaxConnections(1))) { String url = getTargetUrl(); List<ListenableFuture<Response>> futures = new ArrayList<>(); for (int i = 0; i < 5; i++) { logger.info("{} requesting url [{}]...", i, url); futures.add(client.prepareGet(url).execute()); } Exception exception = null; for (ListenableFuture<Response> future : futures) { try { future.get(); } catch (Exception ex) { exception = ex; break; } } assertNotNull(exception); throw exception.getCause(); } }
/** * Tests that after a redirect the final url in the response reflect the redirect */ @Test public void testGetRedirectFinalUrl() throws Exception { AsyncHttpClientConfig config = config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true) .build(); try (AsyncHttpClient c = asyncHttpClient(config)) { ListenableFuture<Response> response = c.executeRequest(get(servletEndpointRedirectUrl)); Response res = response.get(); assertNotNull(res.getResponseBody()); assertEquals(res.getUri().toString(), BASE_URL + "/overthere"); } }
@Test public void multipleMaxConnectionOpenTestWithQuery() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setKeepAlive(true).setConnectTimeout(5000).setMaxConnections(1))) { String body = "hello there"; // once Response response = c.preparePost(getTargetUrl() + "?foo=bar").setBody(body).execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), "foo_" + body); // twice Exception exception = null; try { response = c.preparePost(getTargetUrl()).setBody(body).execute().get(TIMEOUT, TimeUnit.SECONDS); } catch (Exception ex) { ex.printStackTrace(); exception = ex; } assertNull(exception); assertNotNull(response); assertEquals(response.getStatusCode(), 200); } }
@Test(expectedExceptions = TooManyConnectionsException.class) public void multipleMaxConnectionOpenTest() throws Throwable { try (AsyncHttpClient c = asyncHttpClient(config().setKeepAlive(true).setConnectTimeout(5000).setMaxConnections(1))) { String body = "hello there"; // once Response response = c.preparePost(getTargetUrl()).setBody(body).execute().get(TIMEOUT, TimeUnit.SECONDS); assertEquals(response.getResponseBody(), body); // twice Exception exception = null; try { c.preparePost(String.format("http://localhost:%d/foo/test", port2)).setBody(body).execute().get(TIMEOUT, TimeUnit.SECONDS); fail("Should throw exception. Too many connections issued."); } catch (Exception ex) { ex.printStackTrace(); exception = ex; } assertNotNull(exception); throw exception.getCause(); } }
@Test public void negativeContentTypeTest() throws Exception { AsyncHttpClientConfig config = config() .setConnectTimeout(100) .setMaxConnections(50) .setRequestTimeout(5 * 60 * 1000) // 5 minutes .build(); try (AsyncHttpClient client = asyncHttpClient(config)) { RequestBuilder requestBuilder = post(getTargetUrl()) .setHeader("Content-Type", "message/rfc822") .setBody(new InputStreamBodyGenerator(new ByteArrayInputStream(MY_MESSAGE.getBytes()))); Future<Response> future = client.executeRequest(requestBuilder.build()); System.out.println("waiting for response"); Response response = future.get(); assertEquals(response.getStatusCode(), 200); assertEquals(response.getResponseBody(), MY_MESSAGE); } } }
@Test public void testMaxTotalConnections() throws Exception { try (AsyncHttpClient client = asyncHttpClient(config().setKeepAlive(true).setMaxConnections(1))) { String url = getTargetUrl(); int i; Exception exception = null; for (i = 0; i < 3; i++) { try { logger.info("{} requesting url [{}]...", i, url); Response response = client.prepareGet(url).execute().get(); logger.info("{} response [{}].", i, response); } catch (Exception ex) { exception = ex; } } assertNull(exception); } }
public Builder setMaxConnections(int defaultMaxConnections) { configBuilder.setMaxConnections(defaultMaxConnections); return this; }
@Test public void nonPoolableConnectionReleaseSemaphoresTest() throws Throwable { RequestBuilder request = get(getTargetUrl()).setHeader("Connection", "close"); try (AsyncHttpClient client = asyncHttpClient(config().setMaxConnections(6).setMaxConnectionsPerHost(3))) { client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); Thread.sleep(1000); client.executeRequest(request).get(); } }
private DefaultAsyncHttpClientConfig.Builder httpClientBuilder() { return config() .setKeepAlive(true) .setMaxConnectionsPerHost(1) .setMaxConnections(1) .setConnectTimeout(1000) .setRequestTimeout(1000) .setFollowRedirect(true); }