You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2019/10/12 13:39:50 UTC

[httpcomponents-core] 01/01: More integration tests

This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch jsse-provider-tests-4.4
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git

commit 780ecc69b59cc0f400cd712a84974dfff81e95ad
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Sat Oct 12 15:27:30 2019 +0200

    More integration tests
---
 .../nio/integration/TestHttpAsyncHandlers.java     | 109 +++++++++++++++++++--
 .../http/nio/integration/TestTLSIntegration.java   |   3 +-
 2 files changed, 101 insertions(+), 11 deletions(-)

diff --git a/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java b/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
index 8cfcbef..bbd880d 100644
--- a/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
+++ b/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
@@ -37,6 +37,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.http.HttpException;
+import org.apache.http.HttpHeaders;
 import org.apache.http.HttpHost;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpRequestInterceptor;
@@ -67,6 +68,7 @@ import org.apache.http.protocol.RequestConnControl;
 import org.apache.http.protocol.RequestExpectContinue;
 import org.apache.http.protocol.RequestTargetHost;
 import org.apache.http.protocol.RequestUserAgent;
+import org.apache.http.protocol.ResponseServer;
 import org.apache.http.util.EntityUtils;
 import org.junit.After;
 import org.junit.Assert;
@@ -82,6 +84,7 @@ import org.junit.runners.Parameterized;
 public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
 
     private final static long RESULT_TIMEOUT_SEC = 30;
+    private final static int REQ_NUM = 25;
 
     @Parameterized.Parameters(name = "{0}")
     public static Collection<Object[]> protocols() {
@@ -144,7 +147,65 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final String expectedPattern = createExpectedString(pattern, count);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
+            final BasicHttpRequest request = new BasicHttpRequest("GET", createRequestUri(pattern, count));
+            final Future<HttpResponse> future = this.client.execute(target, request);
+            queue.add(future);
+        }
+
+        while (!queue.isEmpty()) {
+            final Future<HttpResponse> future = queue.remove();
+            final HttpResponse response = future.get(RESULT_TIMEOUT_SEC, TimeUnit.SECONDS);
+            Assert.assertNotNull(response);
+            Assert.assertEquals(expectedPattern, EntityUtils.toString(response.getEntity()));
+        }
+    }
+
+    @Test
+    public void testHttpGetsCloseConnection() throws Exception {
+        this.server.registerHandler("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
+        final HttpHost target = start();
+
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
+
+        final String pattern = RndTestPatternGenerator.generateText();
+        final int count = RndTestPatternGenerator.generateCount(1000);
+
+        final String expectedPattern = createExpectedString(pattern, count);
+
+        final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
+        for (int i = 0; i < REQ_NUM; i++) {
+            final BasicHttpRequest request = new BasicHttpRequest("GET", createRequestUri(pattern, count));
+            request.addHeader(HttpHeaders.CONNECTION, "Close");
+            final Future<HttpResponse> future = this.client.execute(target, request);
+            queue.add(future);
+        }
+
+        while (!queue.isEmpty()) {
+            final Future<HttpResponse> future = queue.remove();
+            final HttpResponse response = future.get(RESULT_TIMEOUT_SEC, TimeUnit.SECONDS);
+            Assert.assertNotNull(response);
+            Assert.assertEquals(expectedPattern, EntityUtils.toString(response.getEntity()));
+        }
+    }
+
+    @Test
+    public void testHttpGetIdentityTransfer() throws Exception {
+        this.server.setHttpProcessor(new ImmutableHttpProcessor(new ResponseServer("TEST-SERVER/1.1")));
+        this.server.registerHandler("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
+        final HttpHost target = start();
+
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
+
+        final String pattern = RndTestPatternGenerator.generateText();
+        final int count = RndTestPatternGenerator.generateCount(1000);
+
+        final String expectedPattern = createExpectedString(pattern, count);
+
+        final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpRequest request = new BasicHttpRequest("GET", createRequestUri(pattern, count));
             final Future<HttpResponse> future = this.client.execute(target, request);
             queue.add(future);
@@ -170,8 +231,35 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final int count = RndTestPatternGenerator.generateCount(1000);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
+            final BasicHttpRequest request = new BasicHttpRequest("HEAD", createRequestUri(pattern, count));
+            final Future<HttpResponse> future = this.client.execute(target, request);
+            queue.add(future);
+        }
+
+        while (!queue.isEmpty()) {
+            final Future<HttpResponse> future = queue.remove();
+            final HttpResponse response = future.get(RESULT_TIMEOUT_SEC, TimeUnit.SECONDS);
+            Assert.assertNotNull(response);
+            Assert.assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
+        }
+    }
+
+    @Test
+    public void testHttpHeadsCloseConnection() throws Exception {
+        this.server.registerHandler("*", new BasicAsyncRequestHandler(new SimpleRequestHandler()));
+        final HttpHost target = start();
+
+        this.client.setMaxPerRoute(3);
+        this.client.setMaxTotal(3);
+
+        final String pattern = RndTestPatternGenerator.generateText();
+        final int count = RndTestPatternGenerator.generateCount(1000);
+
+        final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpRequest request = new BasicHttpRequest("HEAD", createRequestUri(pattern, count));
+            request.addHeader(HttpHeaders.CONNECTION, "Close");
             final Future<HttpResponse> future = this.client.execute(target, request);
             queue.add(future);
         }
@@ -181,6 +269,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
             final HttpResponse response = future.get(RESULT_TIMEOUT_SEC, TimeUnit.SECONDS);
             Assert.assertNotNull(response);
             Assert.assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
+            Assert.assertNull(response.getEntity());
         }
     }
 
@@ -198,7 +287,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final String expectedPattern = createExpectedString(pattern, count);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
                     "POST", createRequestUri(pattern, count));
             final NStringEntity entity = new NStringEntity(expectedPattern, ContentType.DEFAULT_TEXT);
@@ -229,7 +318,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final String expectedPattern = createExpectedString(pattern, count);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
                     "POST", createRequestUri(pattern, count));
             final NStringEntity entity = new NStringEntity(expectedPattern, ContentType.DEFAULT_TEXT);
@@ -261,7 +350,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final String expectedPattern = createExpectedString(pattern, count);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
                     "POST", createRequestUri(pattern, count), HttpVersion.HTTP_1_0);
             final NStringEntity entity = new NStringEntity(expectedPattern, ContentType.DEFAULT_TEXT);
@@ -290,7 +379,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final int count = RndTestPatternGenerator.generateCount(1000);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
                     "POST", createRequestUri(pattern, count));
             request.setEntity(null);
@@ -388,7 +477,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final String expectedPattern = createExpectedString(pattern, count);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
                     "POST", createRequestUri(pattern, count));
             final NStringEntity entity = new NStringEntity(expectedPattern, ContentType.DEFAULT_TEXT);
@@ -525,7 +614,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final int count = RndTestPatternGenerator.generateCount(1000);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpRequest request = new BasicHttpRequest("HEAD", createRequestUri(pattern, count));
             final Future<HttpResponse> future = this.client.execute(target, request);
             queue.add(future);
@@ -671,7 +760,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         final int count = RndTestPatternGenerator.generateCount(1000);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpRequest request = new BasicHttpRequest("GET", createRequestUri(pattern, count));
             final Future<HttpResponse> future = this.client.execute(target, request);
             queue.add(future);
@@ -704,7 +793,7 @@ public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase {
         this.client.setMaxTotal(3);
 
         final Queue<Future<HttpResponse>> queue = new ConcurrentLinkedQueue<Future<HttpResponse>>();
-        for (int i = 0; i < 30; i++) {
+        for (int i = 0; i < REQ_NUM; i++) {
             final BasicHttpRequest request = new BasicHttpRequest("GET", "/");
             final Future<HttpResponse> future = this.client.execute(target, request);
             queue.add(future);
diff --git a/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTLSIntegration.java b/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTLSIntegration.java
index 273023a..975d2fa 100644
--- a/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTLSIntegration.java
+++ b/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTLSIntegration.java
@@ -125,7 +125,8 @@ public class TestTLSIntegration {
             return SSLContextBuilder.create()
                     .loadTrustMaterial(keyStoreURL, storePassword.toCharArray())
                     .loadKeyMaterial(keyStoreURL, storePassword.toCharArray(), storePassword.toCharArray())
-                    .build();        }
+                    .build();
+        }
     }
 
     private static SSLContext createClientSSLContext() throws Exception {