diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/ApacheHTTPDSquidCompatibilityIT.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/ApacheHTTPDSquidCompatibilityIT.java index ae3f1c30f5..66ef1cda97 100644 --- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/ApacheHTTPDSquidCompatibilityIT.java +++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/ApacheHTTPDSquidCompatibilityIT.java @@ -29,6 +29,7 @@ import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; import org.apache.hc.client5.testing.compatibility.async.CachingHttpAsyncClientCompatibilityTest; import org.apache.hc.client5.testing.compatibility.async.HttpAsyncClientCompatibilityTest; +import org.apache.hc.client5.testing.compatibility.async.HttpAsyncClientHttp1CompatibilityTest; import org.apache.hc.client5.testing.compatibility.sync.CachingHttpClientCompatibilityTest; import org.apache.hc.client5.testing.compatibility.sync.HttpClientCompatibilityTest; import org.apache.hc.core5.http.HttpHost; @@ -144,60 +145,60 @@ public ClassicViaPwProtectedProxyHttpTls() throws Exception { @Nested @DisplayName("Async client: HTTP/1.1, plain, direct connection") - class AsyncDirectHttp1 extends HttpAsyncClientCompatibilityTest { + class AsyncDirectHttp1 extends HttpAsyncClientHttp1CompatibilityTest { public AsyncDirectHttp1() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetContainerHost(), null, null); + super(targetContainerHost(), null, null); } } @Nested @DisplayName("Async client: HTTP/1.1, plain, connection via proxy") - class AsyncViaProxyHttp1 extends HttpAsyncClientCompatibilityTest { + class AsyncViaProxyHttp1 extends HttpAsyncClientHttp1CompatibilityTest { public AsyncViaProxyHttp1() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalHost(), proxyContainerHost(), null); + super(targetInternalHost(), proxyContainerHost(), null); } } @Nested @DisplayName("Async client: HTTP/1.1, plain, connection via password protected proxy") - class AsyncViaPwProtectedProxyHttp1 extends HttpAsyncClientCompatibilityTest { + class AsyncViaPwProtectedProxyHttp1 extends HttpAsyncClientHttp1CompatibilityTest { public AsyncViaPwProtectedProxyHttp1() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray())); + super(targetInternalHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray())); } } @Nested @DisplayName("Async client: HTTP/1.1, TLS, direct connection") - class AsyncDirectHttp1Tls extends HttpAsyncClientCompatibilityTest { + class AsyncDirectHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest { public AsyncDirectHttp1Tls() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetContainerTlsHost(), null, null); + super(targetContainerTlsHost(), null, null); } } @Nested @DisplayName("Async client: HTTP/1.1, TLS, connection via proxy (tunnel)") - class AsyncViaProxyHttp1Tls extends HttpAsyncClientCompatibilityTest { + class AsyncViaProxyHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest { public AsyncViaProxyHttp1Tls() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalTlsHost(), proxyContainerHost(), null); + super(targetInternalTlsHost(), proxyContainerHost(), null); } } @Nested @DisplayName("Async client: HTTP/1.1, TLS, connection via password protected proxy (tunnel)") - class AsyncViaPwProtectedProxyHttp1Tls extends HttpAsyncClientCompatibilityTest { + class AsyncViaPwProtectedProxyHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest { public AsyncViaPwProtectedProxyHttp1Tls() throws Exception { - super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalTlsHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray())); + super(targetInternalTlsHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray())); } } diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/CachingHttpAsyncClientCompatibilityTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/CachingHttpAsyncClientCompatibilityTest.java index c3c99cc958..647f32d4b4 100644 --- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/CachingHttpAsyncClientCompatibilityTest.java +++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/CachingHttpAsyncClientCompatibilityTest.java @@ -45,12 +45,13 @@ import org.apache.hc.core5.http2.HttpVersionPolicy; import org.apache.hc.core5.util.Timeout; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; public abstract class CachingHttpAsyncClientCompatibilityTest { - private static final Timeout TIMEOUT = Timeout.ofSeconds(5); + static final Timeout TIMEOUT = Timeout.ofSeconds(5); private final HttpHost target; @RegisterExtension @@ -71,6 +72,7 @@ CloseableHttpAsyncClient client() { } @Test + @Disabled void test_options_ping() throws Exception { final CloseableHttpAsyncClient client = client(); final HttpCacheContext context = HttpCacheContext.create(); diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientCompatibilityTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientCompatibilityTest.java index f5cc3ec5d9..990f86e35b 100644 --- a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientCompatibilityTest.java +++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientCompatibilityTest.java @@ -39,21 +39,18 @@ import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider; import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.client5.testing.extension.async.HttpAsyncClientResource; -import org.apache.hc.core5.http.HeaderElements; -import org.apache.hc.core5.http.HttpHeaders; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.HttpStatus; import org.apache.hc.core5.http.HttpVersion; import org.apache.hc.core5.http2.HttpVersionPolicy; import org.apache.hc.core5.util.Timeout; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; public abstract class HttpAsyncClientCompatibilityTest { - private static final Timeout TIMEOUT = Timeout.ofSeconds(5); + static final Timeout TIMEOUT = Timeout.ofSeconds(5); private final HttpVersionPolicy versionPolicy; private final HttpHost target; @@ -102,21 +99,6 @@ void assertProtocolVersion(final HttpClientContext context) { } } - @Test - void test_options_ping() throws Exception { - final CloseableHttpAsyncClient client = client(); - final HttpClientContext context = context(); - - final SimpleHttpRequest options = SimpleRequestBuilder.options() - .setHttpHost(target) - .setPath("*") - .build(); - final Future future = client.execute(options, context, null); - final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit()); - Assertions.assertEquals(HttpStatus.SC_OK, response.getCode()); - assertProtocolVersion(context); - } - @Test void test_sequential_gets() throws Exception { final CloseableHttpAsyncClient client = client(); @@ -189,24 +171,4 @@ void test_auth_success() throws Exception { assertProtocolVersion(context); } - @Test - void test_auth_success_no_keep_alive() throws Exception { - Assumptions.assumeTrue(versionPolicy == HttpVersionPolicy.FORCE_HTTP_1); - addCredentials( - new AuthScope(target), - new UsernamePasswordCredentials("testuser", "nopassword".toCharArray())); - final CloseableHttpAsyncClient client = client(); - final HttpClientContext context = context(); - - final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get() - .setHttpHost(target) - .setPath("/private/big-secret.txt") - .addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE) - .build(); - final Future future = client.execute(httpGetSecret, context, null); - final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit()); - Assertions.assertEquals(HttpStatus.SC_OK, response.getCode()); - assertProtocolVersion(context); - } - } diff --git a/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientHttp1CompatibilityTest.java b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientHttp1CompatibilityTest.java new file mode 100644 index 0000000000..901e655c4b --- /dev/null +++ b/httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientHttp1CompatibilityTest.java @@ -0,0 +1,78 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ +package org.apache.hc.client5.testing.compatibility.async; + +import java.util.concurrent.Future; + +import org.apache.hc.client5.http.async.methods.SimpleHttpRequest; +import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; +import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder; +import org.apache.hc.client5.http.auth.AuthScope; +import org.apache.hc.client5.http.auth.Credentials; +import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; +import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient; +import org.apache.hc.client5.http.protocol.HttpClientContext; +import org.apache.hc.core5.http.HeaderElements; +import org.apache.hc.core5.http.HttpHeaders; +import org.apache.hc.core5.http.HttpHost; +import org.apache.hc.core5.http.HttpStatus; +import org.apache.hc.core5.http2.HttpVersionPolicy; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public abstract class HttpAsyncClientHttp1CompatibilityTest extends HttpAsyncClientCompatibilityTest { + + private final HttpHost target; + + public HttpAsyncClientHttp1CompatibilityTest( + final HttpHost target, + final HttpHost proxy, + final Credentials proxyCreds) throws Exception { + super(HttpVersionPolicy.FORCE_HTTP_1, target, proxy, proxyCreds); + this.target = target; + } + + @Test + void test_auth_success_no_keep_alive() throws Exception { + addCredentials( + new AuthScope(target), + new UsernamePasswordCredentials("testuser", "nopassword".toCharArray())); + final CloseableHttpAsyncClient client = client(); + final HttpClientContext context = context(); + + final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get() + .setHttpHost(target) + .setPath("/private/big-secret.txt") + .addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE) + .build(); + final Future future = client.execute(httpGetSecret, context, null); + final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit()); + Assertions.assertEquals(HttpStatus.SC_OK, response.getCode()); + assertProtocolVersion(context); + } + +}