Skip to content

Commit 3597eea

Browse files
committed
Migrated Docker based integration tests to TestContainers
1 parent d4caf7f commit 3597eea

File tree

4 files changed

+95
-52
lines changed

4 files changed

+95
-52
lines changed

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/ApacheHTTPDSquidCompatibilityIT.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
3030
import org.apache.hc.client5.testing.compatibility.async.CachingHttpAsyncClientCompatibilityTest;
3131
import org.apache.hc.client5.testing.compatibility.async.HttpAsyncClientCompatibilityTest;
32+
import org.apache.hc.client5.testing.compatibility.async.HttpAsyncClientHttp1CompatibilityTest;
3233
import org.apache.hc.client5.testing.compatibility.sync.CachingHttpClientCompatibilityTest;
3334
import org.apache.hc.client5.testing.compatibility.sync.HttpClientCompatibilityTest;
3435
import org.apache.hc.core5.http.HttpHost;
@@ -144,60 +145,60 @@ public ClassicViaPwProtectedProxyHttpTls() throws Exception {
144145

145146
@Nested
146147
@DisplayName("Async client: HTTP/1.1, plain, direct connection")
147-
class AsyncDirectHttp1 extends HttpAsyncClientCompatibilityTest {
148+
class AsyncDirectHttp1 extends HttpAsyncClientHttp1CompatibilityTest {
148149

149150
public AsyncDirectHttp1() throws Exception {
150-
super(HttpVersionPolicy.FORCE_HTTP_1, targetContainerHost(), null, null);
151+
super(targetContainerHost(), null, null);
151152
}
152153

153154
}
154155

155156
@Nested
156157
@DisplayName("Async client: HTTP/1.1, plain, connection via proxy")
157-
class AsyncViaProxyHttp1 extends HttpAsyncClientCompatibilityTest {
158+
class AsyncViaProxyHttp1 extends HttpAsyncClientHttp1CompatibilityTest {
158159

159160
public AsyncViaProxyHttp1() throws Exception {
160-
super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalHost(), proxyContainerHost(), null);
161+
super(targetInternalHost(), proxyContainerHost(), null);
161162
}
162163

163164
}
164165

165166
@Nested
166167
@DisplayName("Async client: HTTP/1.1, plain, connection via password protected proxy")
167-
class AsyncViaPwProtectedProxyHttp1 extends HttpAsyncClientCompatibilityTest {
168+
class AsyncViaPwProtectedProxyHttp1 extends HttpAsyncClientHttp1CompatibilityTest {
168169

169170
public AsyncViaPwProtectedProxyHttp1() throws Exception {
170-
super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray()));
171+
super(targetInternalHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray()));
171172
}
172173

173174
}
174175

175176
@Nested
176177
@DisplayName("Async client: HTTP/1.1, TLS, direct connection")
177-
class AsyncDirectHttp1Tls extends HttpAsyncClientCompatibilityTest {
178+
class AsyncDirectHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest {
178179

179180
public AsyncDirectHttp1Tls() throws Exception {
180-
super(HttpVersionPolicy.FORCE_HTTP_1, targetContainerTlsHost(), null, null);
181+
super(targetContainerTlsHost(), null, null);
181182
}
182183

183184
}
184185

185186
@Nested
186187
@DisplayName("Async client: HTTP/1.1, TLS, connection via proxy (tunnel)")
187-
class AsyncViaProxyHttp1Tls extends HttpAsyncClientCompatibilityTest {
188+
class AsyncViaProxyHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest {
188189

189190
public AsyncViaProxyHttp1Tls() throws Exception {
190-
super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalTlsHost(), proxyContainerHost(), null);
191+
super(targetInternalTlsHost(), proxyContainerHost(), null);
191192
}
192193

193194
}
194195

195196
@Nested
196197
@DisplayName("Async client: HTTP/1.1, TLS, connection via password protected proxy (tunnel)")
197-
class AsyncViaPwProtectedProxyHttp1Tls extends HttpAsyncClientCompatibilityTest {
198+
class AsyncViaPwProtectedProxyHttp1Tls extends HttpAsyncClientHttp1CompatibilityTest {
198199

199200
public AsyncViaPwProtectedProxyHttp1Tls() throws Exception {
200-
super(HttpVersionPolicy.FORCE_HTTP_1, targetInternalTlsHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray()));
201+
super(targetInternalTlsHost(), proxyPwProtectedContainerHost(), new UsernamePasswordCredentials("squid", "nopassword".toCharArray()));
201202
}
202203

203204
}

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/CachingHttpAsyncClientCompatibilityTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@
4545
import org.apache.hc.core5.http2.HttpVersionPolicy;
4646
import org.apache.hc.core5.util.Timeout;
4747
import org.junit.jupiter.api.Assertions;
48+
import org.junit.jupiter.api.Disabled;
4849
import org.junit.jupiter.api.Test;
4950
import org.junit.jupiter.api.extension.RegisterExtension;
5051

5152
public abstract class CachingHttpAsyncClientCompatibilityTest {
5253

53-
private static final Timeout TIMEOUT = Timeout.ofSeconds(5);
54+
static final Timeout TIMEOUT = Timeout.ofSeconds(5);
5455

5556
private final HttpHost target;
5657
@RegisterExtension
@@ -71,6 +72,7 @@ CloseableHttpAsyncClient client() {
7172
}
7273

7374
@Test
75+
@Disabled
7476
void test_options_ping() throws Exception {
7577
final CloseableHttpAsyncClient client = client();
7678
final HttpCacheContext context = HttpCacheContext.create();

httpclient5-testing/src/test/java/org/apache/hc/client5/testing/compatibility/async/HttpAsyncClientCompatibilityTest.java

+1-39
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,18 @@
3939
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
4040
import org.apache.hc.client5.http.protocol.HttpClientContext;
4141
import org.apache.hc.client5.testing.extension.async.HttpAsyncClientResource;
42-
import org.apache.hc.core5.http.HeaderElements;
43-
import org.apache.hc.core5.http.HttpHeaders;
4442
import org.apache.hc.core5.http.HttpHost;
4543
import org.apache.hc.core5.http.HttpStatus;
4644
import org.apache.hc.core5.http.HttpVersion;
4745
import org.apache.hc.core5.http2.HttpVersionPolicy;
4846
import org.apache.hc.core5.util.Timeout;
4947
import org.junit.jupiter.api.Assertions;
50-
import org.junit.jupiter.api.Assumptions;
5148
import org.junit.jupiter.api.Test;
5249
import org.junit.jupiter.api.extension.RegisterExtension;
5350

5451
public abstract class HttpAsyncClientCompatibilityTest {
5552

56-
private static final Timeout TIMEOUT = Timeout.ofSeconds(5);
53+
static final Timeout TIMEOUT = Timeout.ofSeconds(5);
5754

5855
private final HttpVersionPolicy versionPolicy;
5956
private final HttpHost target;
@@ -102,21 +99,6 @@ void assertProtocolVersion(final HttpClientContext context) {
10299
}
103100
}
104101

105-
@Test
106-
void test_options_ping() throws Exception {
107-
final CloseableHttpAsyncClient client = client();
108-
final HttpClientContext context = context();
109-
110-
final SimpleHttpRequest options = SimpleRequestBuilder.options()
111-
.setHttpHost(target)
112-
.setPath("*")
113-
.build();
114-
final Future<SimpleHttpResponse> future = client.execute(options, context, null);
115-
final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
116-
Assertions.assertEquals(HttpStatus.SC_OK, response.getCode());
117-
assertProtocolVersion(context);
118-
}
119-
120102
@Test
121103
void test_sequential_gets() throws Exception {
122104
final CloseableHttpAsyncClient client = client();
@@ -189,24 +171,4 @@ void test_auth_success() throws Exception {
189171
assertProtocolVersion(context);
190172
}
191173

192-
@Test
193-
void test_auth_success_no_keep_alive() throws Exception {
194-
Assumptions.assumeTrue(versionPolicy == HttpVersionPolicy.FORCE_HTTP_1);
195-
addCredentials(
196-
new AuthScope(target),
197-
new UsernamePasswordCredentials("testuser", "nopassword".toCharArray()));
198-
final CloseableHttpAsyncClient client = client();
199-
final HttpClientContext context = context();
200-
201-
final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
202-
.setHttpHost(target)
203-
.setPath("/private/big-secret.txt")
204-
.addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE)
205-
.build();
206-
final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
207-
final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
208-
Assertions.assertEquals(HttpStatus.SC_OK, response.getCode());
209-
assertProtocolVersion(context);
210-
}
211-
212174
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* ====================================================================
3+
* Licensed to the Apache Software Foundation (ASF) under one
4+
* or more contributor license agreements. See the NOTICE file
5+
* distributed with this work for additional information
6+
* regarding copyright ownership. The ASF licenses this file
7+
* to you under the Apache License, Version 2.0 (the
8+
* "License"); you may not use this file except in compliance
9+
* with the License. You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing,
14+
* software distributed under the License is distributed on an
15+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16+
* KIND, either express or implied. See the License for the
17+
* specific language governing permissions and limitations
18+
* under the License.
19+
* ====================================================================
20+
*
21+
* This software consists of voluntary contributions made by many
22+
* individuals on behalf of the Apache Software Foundation. For more
23+
* information on the Apache Software Foundation, please see
24+
* <http://www.apache.org/>.
25+
*
26+
*/
27+
package org.apache.hc.client5.testing.compatibility.async;
28+
29+
import java.util.concurrent.Future;
30+
31+
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
32+
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
33+
import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
34+
import org.apache.hc.client5.http.auth.AuthScope;
35+
import org.apache.hc.client5.http.auth.Credentials;
36+
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
37+
import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
38+
import org.apache.hc.client5.http.protocol.HttpClientContext;
39+
import org.apache.hc.core5.http.HeaderElements;
40+
import org.apache.hc.core5.http.HttpHeaders;
41+
import org.apache.hc.core5.http.HttpHost;
42+
import org.apache.hc.core5.http.HttpStatus;
43+
import org.apache.hc.core5.http2.HttpVersionPolicy;
44+
import org.junit.jupiter.api.Assertions;
45+
import org.junit.jupiter.api.Test;
46+
47+
public abstract class HttpAsyncClientHttp1CompatibilityTest extends HttpAsyncClientCompatibilityTest {
48+
49+
private final HttpHost target;
50+
51+
public HttpAsyncClientHttp1CompatibilityTest(
52+
final HttpHost target,
53+
final HttpHost proxy,
54+
final Credentials proxyCreds) throws Exception {
55+
super(HttpVersionPolicy.FORCE_HTTP_1, target, proxy, proxyCreds);
56+
this.target = target;
57+
}
58+
59+
@Test
60+
void test_auth_success_no_keep_alive() throws Exception {
61+
addCredentials(
62+
new AuthScope(target),
63+
new UsernamePasswordCredentials("testuser", "nopassword".toCharArray()));
64+
final CloseableHttpAsyncClient client = client();
65+
final HttpClientContext context = context();
66+
67+
final SimpleHttpRequest httpGetSecret = SimpleRequestBuilder.get()
68+
.setHttpHost(target)
69+
.setPath("/private/big-secret.txt")
70+
.addHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE)
71+
.build();
72+
final Future<SimpleHttpResponse> future = client.execute(httpGetSecret, context, null);
73+
final SimpleHttpResponse response = future.get(TIMEOUT.getDuration(), TIMEOUT.getTimeUnit());
74+
Assertions.assertEquals(HttpStatus.SC_OK, response.getCode());
75+
assertProtocolVersion(context);
76+
}
77+
78+
}

0 commit comments

Comments
 (0)