Enable read timeout test for some http clients (#4702)
* Enable read timeout test for some http clients * remove unused import * use separate client for read timeout request
This commit is contained in:
parent
0aa888a014
commit
b287c8d1d0
|
@ -12,6 +12,7 @@ import org.apache.http.HttpHost
|
||||||
import org.apache.http.HttpResponse
|
import org.apache.http.HttpResponse
|
||||||
import org.apache.http.client.config.RequestConfig
|
import org.apache.http.client.config.RequestConfig
|
||||||
import org.apache.http.concurrent.FutureCallback
|
import org.apache.http.concurrent.FutureCallback
|
||||||
|
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient
|
||||||
import org.apache.http.impl.nio.client.HttpAsyncClients
|
import org.apache.http.impl.nio.client.HttpAsyncClients
|
||||||
import org.apache.http.message.BasicHeader
|
import org.apache.http.message.BasicHeader
|
||||||
import spock.lang.AutoCleanup
|
import spock.lang.AutoCleanup
|
||||||
|
@ -26,12 +27,29 @@ abstract class ApacheHttpAsyncClientTest extends HttpClientTest<HttpUriRequest>
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
@Shared
|
||||||
|
RequestConfig requestWithReadTimeoutConfig = RequestConfig.copy(requestConfig)
|
||||||
|
.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
.build()
|
||||||
|
|
||||||
@AutoCleanup
|
@AutoCleanup
|
||||||
@Shared
|
@Shared
|
||||||
def client = HttpAsyncClients.custom().setDefaultRequestConfig(requestConfig).build()
|
def client = HttpAsyncClients.custom().setDefaultRequestConfig(requestConfig).build()
|
||||||
|
|
||||||
|
@AutoCleanup
|
||||||
|
@Shared
|
||||||
|
def clientWithReadTimeout = HttpAsyncClients.custom().setDefaultRequestConfig(requestWithReadTimeoutConfig).build()
|
||||||
|
|
||||||
def setupSpec() {
|
def setupSpec() {
|
||||||
client.start()
|
client.start()
|
||||||
|
clientWithReadTimeout.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseableHttpAsyncClient getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,6 +62,11 @@ abstract class ApacheHttpAsyncClientTest extends HttpClientTest<HttpUriRequest>
|
||||||
return 302
|
return 302
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpUriRequest buildRequest(String method, URI uri, Map<String, String> headers) {
|
HttpUriRequest buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||||
def request = createRequest(method, uri)
|
def request = createRequest(method, uri)
|
||||||
|
@ -128,12 +151,12 @@ class ApacheClientUriRequest extends ApacheHttpAsyncClientTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(request, null).get()
|
return getClient(uri).execute(request, null).get()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
||||||
client.execute(request, callback)
|
getClient(uri).execute(request, callback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,12 +169,12 @@ class ApacheClientHostRequest extends ApacheHttpAsyncClientTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, null).get()
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, null).get()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, callback)
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, callback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,11 +187,11 @@ class ApacheClientHostAbsoluteUriRequest extends ApacheHttpAsyncClientTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, null).get()
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, null).get()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, callback)
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, callback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpClientTest
|
import io.opentelemetry.instrumentation.test.base.HttpClientTest
|
||||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
||||||
import org.apache.commons.httpclient.HttpClient
|
import org.apache.commons.httpclient.HttpClient
|
||||||
|
import org.apache.commons.httpclient.HttpConnectionManager
|
||||||
import org.apache.commons.httpclient.HttpMethod
|
import org.apache.commons.httpclient.HttpMethod
|
||||||
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
|
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
|
||||||
import org.apache.commons.httpclient.methods.DeleteMethod
|
import org.apache.commons.httpclient.methods.DeleteMethod
|
||||||
|
@ -21,10 +22,26 @@ import spock.lang.Shared
|
||||||
|
|
||||||
class CommonsHttpClientTest extends HttpClientTest<HttpMethod> implements AgentTestTrait {
|
class CommonsHttpClientTest extends HttpClientTest<HttpMethod> implements AgentTestTrait {
|
||||||
@Shared
|
@Shared
|
||||||
HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager())
|
HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager()
|
||||||
|
@Shared
|
||||||
|
HttpClient client = buildClient(false)
|
||||||
|
@Shared
|
||||||
|
HttpClient clientWithReadTimeout = buildClient(true)
|
||||||
|
|
||||||
def setupSpec() {
|
def buildClient(boolean readTimeout) {
|
||||||
|
HttpClient client = new HttpClient(connectionManager)
|
||||||
client.setConnectionTimeout(CONNECT_TIMEOUT_MS)
|
client.setConnectionTimeout(CONNECT_TIMEOUT_MS)
|
||||||
|
if (readTimeout) {
|
||||||
|
client.setTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpClient getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -62,7 +79,7 @@ class CommonsHttpClientTest extends HttpClientTest<HttpMethod> implements AgentT
|
||||||
@Override
|
@Override
|
||||||
int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers) {
|
int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers) {
|
||||||
try {
|
try {
|
||||||
client.executeMethod(request)
|
getClient(uri).executeMethod(request)
|
||||||
return request.getStatusCode()
|
return request.getStatusCode()
|
||||||
} finally {
|
} finally {
|
||||||
request.releaseConnection()
|
request.releaseConnection()
|
||||||
|
@ -86,6 +103,11 @@ class CommonsHttpClientTest extends HttpClientTest<HttpMethod> implements AgentT
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Set<AttributeKey<?>> httpAttributes(URI uri) {
|
Set<AttributeKey<?>> httpAttributes(URI uri) {
|
||||||
Set<AttributeKey<?>> extra = [
|
Set<AttributeKey<?>> extra = [
|
||||||
|
|
|
@ -29,15 +29,28 @@ import java.util.function.Consumer
|
||||||
|
|
||||||
abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTest<T> implements AgentTestTrait {
|
abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTest<T> implements AgentTestTrait {
|
||||||
@Shared
|
@Shared
|
||||||
DefaultHttpClient client
|
DefaultHttpClient client = buildClient(false)
|
||||||
|
|
||||||
def setupSpec() {
|
@Shared
|
||||||
|
DefaultHttpClient clientWithReadTimeout = buildClient(true)
|
||||||
|
|
||||||
|
DefaultHttpClient buildClient(boolean readTimeout) {
|
||||||
HttpParams httpParams = new BasicHttpParams()
|
HttpParams httpParams = new BasicHttpParams()
|
||||||
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECT_TIMEOUT_MS)
|
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECT_TIMEOUT_MS)
|
||||||
|
if (readTimeout) {
|
||||||
|
HttpConnectionParams.setSoTimeout(httpParams, READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
httpParams.setParameter(ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME, ThreadSafeClientConnManagerFactory.getName())
|
httpParams.setParameter(ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME, ThreadSafeClientConnManagerFactory.getName())
|
||||||
client = new DefaultHttpClient(httpParams)
|
client = new DefaultHttpClient(httpParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefaultHttpClient getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
static class ThreadSafeClientConnManagerFactory implements ClientConnectionManagerFactory {
|
static class ThreadSafeClientConnManagerFactory implements ClientConnectionManagerFactory {
|
||||||
@Override
|
@Override
|
||||||
ClientConnectionManager newInstance(HttpParams httpParams, SchemeRegistry schemeRegistry) {
|
ClientConnectionManager newInstance(HttpParams httpParams, SchemeRegistry schemeRegistry) {
|
||||||
|
@ -47,6 +60,7 @@ abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTes
|
||||||
|
|
||||||
def cleanupSpec() {
|
def cleanupSpec() {
|
||||||
client.getConnectionManager().shutdown()
|
client.getConnectionManager().shutdown()
|
||||||
|
clientWithReadTimeout.getConnectionManager().shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -54,6 +68,11 @@ abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTes
|
||||||
return "apachehttpclient"
|
return "apachehttpclient"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
T buildRequest(String method, URI uri, Map<String, String> headers) {
|
T buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||||
def request = createRequest(method, uri)
|
def request = createRequest(method, uri)
|
||||||
|
@ -126,12 +145,12 @@ class ApacheClientHostRequest extends ApacheHttpClientTest<BasicHttpRequest> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,12 +164,12 @@ class ApacheClientHostAbsoluteUriRequest extends ApacheHttpClientTest<BasicHttpR
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,12 +184,12 @@ class ApacheClientHostRequestContext extends ApacheHttpClientTest<BasicHttpReque
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
@ -184,12 +203,12 @@ class ApacheClientHostAbsoluteUriRequestContext extends ApacheHttpClientTest<Bas
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
@ -203,12 +222,12 @@ class ApacheClientUriRequest extends ApacheHttpClientTest<HttpUriRequest> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(request)
|
return getClient(uri).execute(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(request) {
|
getClient(uri).execute(request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,12 +241,12 @@ class ApacheClientUriRequestContext extends ApacheHttpClientTest<HttpUriRequest>
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(request, new BasicHttpContext())
|
return getClient(uri).execute(request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(request, {
|
getClient(uri).execute(request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientHostAbsoluteUriRequestContextTest extends AbstractApacheClientHostAbsoluteUriRequestContextTest implements LibraryTestTrait {
|
class ApacheClientHostAbsoluteUriRequestContextTest extends AbstractApacheClientHostAbsoluteUriRequestContextTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientHostAbsoluteUriRequestTest extends AbstractApacheClientHostAbsoluteUriRequestTest implements LibraryTestTrait {
|
class ApacheClientHostAbsoluteUriRequestTest extends AbstractApacheClientHostAbsoluteUriRequestTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientHostRequestContextTest extends AbstractApacheClientHostRequestContextTest implements LibraryTestTrait {
|
class ApacheClientHostRequestContextTest extends AbstractApacheClientHostRequestContextTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientHostRequestTest extends AbstractApacheClientHostRequestTest implements LibraryTestTrait {
|
class ApacheClientHostRequestTest extends AbstractApacheClientHostRequestTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientUriRequestContextTest extends AbstractApacheClientUriRequestContextTest implements LibraryTestTrait {
|
class ApacheClientUriRequestContextTest extends AbstractApacheClientUriRequestContextTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient
|
||||||
|
|
||||||
class ApacheClientUriRequestTest extends AbstractApacheClientUriRequestTest implements LibraryTestTrait {
|
class ApacheClientUriRequestTest extends AbstractApacheClientUriRequestTest implements LibraryTestTrait {
|
||||||
@Override
|
@Override
|
||||||
protected CloseableHttpClient createClient() {
|
protected CloseableHttpClient createClient(boolean readTimeout) {
|
||||||
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder()
|
||||||
builder.defaultRequestConfig = RequestConfig.custom()
|
def requestConfigBuilder = RequestConfig.custom()
|
||||||
.setMaxRedirects(maxRedirects())
|
.setMaxRedirects(maxRedirects())
|
||||||
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
.setConnectTimeout(CONNECT_TIMEOUT_MS)
|
||||||
.build()
|
if (readTimeout) {
|
||||||
|
requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS)
|
||||||
|
}
|
||||||
|
builder.defaultRequestConfig = requestConfigBuilder.build()
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.function.Consumer
|
||||||
|
|
||||||
abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTest<T> {
|
abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTest<T> {
|
||||||
|
|
||||||
abstract protected CloseableHttpClient createClient()
|
abstract protected CloseableHttpClient createClient(boolean readTimeout)
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String userAgent() {
|
String userAgent() {
|
||||||
|
@ -34,8 +34,23 @@ abstract class ApacheHttpClientTest<T extends HttpRequest> extends HttpClientTes
|
||||||
return 302
|
return 302
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
@Shared
|
@Shared
|
||||||
CloseableHttpClient client = createClient()
|
CloseableHttpClient client = createClient(false)
|
||||||
|
|
||||||
|
@Shared
|
||||||
|
CloseableHttpClient clientWithReadTimeout = createClient(true)
|
||||||
|
|
||||||
|
CloseableHttpClient getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
T buildRequest(String method, URI uri, Map<String, String> headers) {
|
T buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||||
|
@ -109,12 +124,12 @@ abstract class AbstractApacheClientHostRequestTest extends ApacheHttpClientTest<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,12 +143,12 @@ abstract class AbstractApacheClientHostAbsoluteUriRequestTest extends ApacheHttp
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -148,12 +163,12 @@ abstract class AbstractApacheClientHostRequestContextTest extends ApacheHttpClie
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
@ -167,12 +182,12 @@ abstract class AbstractApacheClientHostAbsoluteUriRequestContextTest extends Apa
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
HttpResponse executeRequest(BasicHttpRequest request, URI uri) {
|
||||||
return client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
return getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
getClient(uri).execute(new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()), request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
@ -186,12 +201,12 @@ abstract class AbstractApacheClientUriRequestTest extends ApacheHttpClientTest<H
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(request)
|
return getClient(uri).execute(request)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(request) {
|
getClient(uri).execute(request) {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,12 +220,12 @@ abstract class AbstractApacheClientUriRequestContextTest extends ApacheHttpClien
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
HttpResponse executeRequest(HttpUriRequest request, URI uri) {
|
||||||
return client.execute(request, new BasicHttpContext())
|
return getClient(uri).execute(request, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer<HttpResponse> callback) {
|
||||||
client.execute(request, {
|
getClient(uri).execute(request, {
|
||||||
callback.accept(it)
|
callback.accept(it)
|
||||||
}, new BasicHttpContext())
|
}, new BasicHttpContext())
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,20 @@ abstract class AbstractGoogleHttpClientTest extends HttpClientTest<HttpRequest>
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
HttpRequest buildRequest(String method, URI uri, Map<String, String> headers) {
|
HttpRequest buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||||
def genericUrl = new GenericUrl(uri)
|
def genericUrl = new GenericUrl(uri)
|
||||||
|
|
||||||
def request = requestFactory.buildRequest(method, genericUrl, null)
|
def request = requestFactory.buildRequest(method, genericUrl, null)
|
||||||
request.connectTimeout = CONNECT_TIMEOUT_MS
|
request.connectTimeout = CONNECT_TIMEOUT_MS
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
request.readTimeout = READ_TIMEOUT_MS
|
||||||
|
}
|
||||||
|
|
||||||
// GenericData::putAll method converts all known http headers to List<String>
|
// GenericData::putAll method converts all known http headers to List<String>
|
||||||
// and lowercase all other headers
|
// and lowercase all other headers
|
||||||
|
|
|
@ -18,6 +18,9 @@ class HttpUrlConnectionResponseCodeOnlyTest extends HttpClientTest<HttpURLConnec
|
||||||
try {
|
try {
|
||||||
connection.setRequestMethod(method)
|
connection.setRequestMethod(method)
|
||||||
connection.connectTimeout = CONNECT_TIMEOUT_MS
|
connection.connectTimeout = CONNECT_TIMEOUT_MS
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
connection.readTimeout = READ_TIMEOUT_MS
|
||||||
|
}
|
||||||
headers.each { connection.setRequestProperty(it.key, it.value) }
|
headers.each { connection.setRequestProperty(it.key, it.value) }
|
||||||
connection.setRequestProperty("Connection", "close")
|
connection.setRequestProperty("Connection", "close")
|
||||||
return connection.getResponseCode()
|
return connection.getResponseCode()
|
||||||
|
@ -46,4 +49,9 @@ class HttpUrlConnectionResponseCodeOnlyTest extends HttpClientTest<HttpURLConnec
|
||||||
boolean testCallback() {
|
boolean testCallback() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,9 @@ class HttpUrlConnectionUseCachesFalseTest extends HttpClientTest<HttpURLConnecti
|
||||||
connection.setRequestProperty("Connection", "close")
|
connection.setRequestProperty("Connection", "close")
|
||||||
connection.useCaches = false
|
connection.useCaches = false
|
||||||
connection.connectTimeout = CONNECT_TIMEOUT_MS
|
connection.connectTimeout = CONNECT_TIMEOUT_MS
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
connection.readTimeout = READ_TIMEOUT_MS
|
||||||
|
}
|
||||||
def parentSpan = Span.current()
|
def parentSpan = Span.current()
|
||||||
def stream = connection.inputStream
|
def stream = connection.inputStream
|
||||||
assert Span.current() == parentSpan
|
assert Span.current() == parentSpan
|
||||||
|
@ -53,4 +56,9 @@ class HttpUrlConnectionUseCachesFalseTest extends HttpClientTest<HttpURLConnecti
|
||||||
boolean testCallback() {
|
boolean testCallback() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,9 @@ class JdkHttpClientTest extends HttpClientTest<HttpRequest> implements AgentTest
|
||||||
headers.entrySet().each {
|
headers.entrySet().each {
|
||||||
requestBuilder.header(it.key, it.value)
|
requestBuilder.header(it.key, it.value)
|
||||||
}
|
}
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
requestBuilder.timeout(Duration.of(READ_TIMEOUT_MS, ChronoUnit.MILLIS))
|
||||||
|
}
|
||||||
return requestBuilder.build()
|
return requestBuilder.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,4 +61,9 @@ class JdkHttpClientTest extends HttpClientTest<HttpRequest> implements AgentTest
|
||||||
boolean testWithClientParent() {
|
boolean testWithClientParent() {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean testReadTimeout() {
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue