diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/test/groovy/ApacheHttpAsyncClientTest.groovy b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/test/groovy/ApacheHttpAsyncClientTest.groovy index 28d3cc108e..c50a07312d 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/test/groovy/ApacheHttpAsyncClientTest.groovy +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/test/groovy/ApacheHttpAsyncClientTest.groovy @@ -12,6 +12,7 @@ import org.apache.http.HttpHost import org.apache.http.HttpResponse import org.apache.http.client.config.RequestConfig 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.message.BasicHeader import spock.lang.AutoCleanup @@ -26,12 +27,29 @@ abstract class ApacheHttpAsyncClientTest extends HttpClientTest .setConnectTimeout(CONNECT_TIMEOUT_MS) .build() + @Shared + RequestConfig requestWithReadTimeoutConfig = RequestConfig.copy(requestConfig) + .setSocketTimeout(READ_TIMEOUT_MS) + .build() + @AutoCleanup @Shared def client = HttpAsyncClients.custom().setDefaultRequestConfig(requestConfig).build() + @AutoCleanup + @Shared + def clientWithReadTimeout = HttpAsyncClients.custom().setDefaultRequestConfig(requestWithReadTimeoutConfig).build() + def setupSpec() { client.start() + clientWithReadTimeout.start() + } + + CloseableHttpAsyncClient getClient(URI uri) { + if (uri.toString().contains("/read-timeout")) { + return clientWithReadTimeout + } + return client } @Override @@ -44,6 +62,11 @@ abstract class ApacheHttpAsyncClientTest extends HttpClientTest return 302 } + @Override + boolean testReadTimeout() { + true + } + @Override HttpUriRequest buildRequest(String method, URI uri, Map headers) { def request = createRequest(method, uri) @@ -128,12 +151,12 @@ class ApacheClientUriRequest extends ApacheHttpAsyncClientTest { @Override HttpResponse executeRequest(HttpUriRequest request, URI uri) { - return client.execute(request, null).get() + return getClient(uri).execute(request, null).get() } @Override void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback callback) { - client.execute(request, callback) + getClient(uri).execute(request, callback) } } @@ -146,12 +169,12 @@ class ApacheClientHostRequest extends ApacheHttpAsyncClientTest { @Override 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 void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback 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 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 void executeRequestWithCallback(HttpUriRequest request, URI uri, FutureCallback 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) } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy index 64d8b2e349..19cf85b291 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/test/groovy/CommonsHttpClientTest.groovy @@ -8,6 +8,7 @@ import io.opentelemetry.instrumentation.test.AgentTestTrait import io.opentelemetry.instrumentation.test.base.HttpClientTest import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.apache.commons.httpclient.HttpClient +import org.apache.commons.httpclient.HttpConnectionManager import org.apache.commons.httpclient.HttpMethod import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager import org.apache.commons.httpclient.methods.DeleteMethod @@ -21,10 +22,26 @@ import spock.lang.Shared class CommonsHttpClientTest extends HttpClientTest implements AgentTestTrait { @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) + if (readTimeout) { + client.setTimeout(READ_TIMEOUT_MS) + } + return client + } + + HttpClient getClient(URI uri) { + if (uri.toString().contains("/read-timeout")) { + return clientWithReadTimeout + } + return client } @Override @@ -62,7 +79,7 @@ class CommonsHttpClientTest extends HttpClientTest implements AgentT @Override int sendRequest(HttpMethod request, String method, URI uri, Map headers) { try { - client.executeMethod(request) + getClient(uri).executeMethod(request) return request.getStatusCode() } finally { request.releaseConnection() @@ -86,6 +103,11 @@ class CommonsHttpClientTest extends HttpClientTest implements AgentT false } + @Override + boolean testReadTimeout() { + true + } + @Override Set> httpAttributes(URI uri) { Set> extra = [ diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/test/groovy/ApacheHttpClientTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/test/groovy/ApacheHttpClientTest.groovy index b9fc198335..e2a1c9a62f 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/test/groovy/ApacheHttpClientTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/test/groovy/ApacheHttpClientTest.groovy @@ -29,15 +29,28 @@ import java.util.function.Consumer abstract class ApacheHttpClientTest extends HttpClientTest implements AgentTestTrait { @Shared - DefaultHttpClient client + DefaultHttpClient client = buildClient(false) - def setupSpec() { + @Shared + DefaultHttpClient clientWithReadTimeout = buildClient(true) + + DefaultHttpClient buildClient(boolean readTimeout) { HttpParams httpParams = new BasicHttpParams() HttpConnectionParams.setConnectionTimeout(httpParams, CONNECT_TIMEOUT_MS) + if (readTimeout) { + HttpConnectionParams.setSoTimeout(httpParams, READ_TIMEOUT_MS) + } httpParams.setParameter(ClientPNames.CONNECTION_MANAGER_FACTORY_CLASS_NAME, ThreadSafeClientConnManagerFactory.getName()) client = new DefaultHttpClient(httpParams) } + DefaultHttpClient getClient(URI uri) { + if (uri.toString().contains("/read-timeout")) { + return clientWithReadTimeout + } + return client + } + static class ThreadSafeClientConnManagerFactory implements ClientConnectionManagerFactory { @Override ClientConnectionManager newInstance(HttpParams httpParams, SchemeRegistry schemeRegistry) { @@ -47,6 +60,7 @@ abstract class ApacheHttpClientTest extends HttpClientTes def cleanupSpec() { client.getConnectionManager().shutdown() + clientWithReadTimeout.getConnectionManager().shutdown() } @Override @@ -54,6 +68,11 @@ abstract class ApacheHttpClientTest extends HttpClientTes return "apachehttpclient" } + @Override + boolean testReadTimeout() { + true + } + @Override T buildRequest(String method, URI uri, Map headers) { def request = createRequest(method, uri) @@ -126,12 +145,12 @@ class ApacheClientHostRequest extends ApacheHttpClientTest { @Override 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 void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer 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) } } @@ -145,12 +164,12 @@ class ApacheClientHostAbsoluteUriRequest extends ApacheHttpClientTest 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) } } @@ -165,12 +184,12 @@ class ApacheClientHostRequestContext extends ApacheHttpClientTest 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) }, new BasicHttpContext()) } @@ -184,12 +203,12 @@ class ApacheClientHostAbsoluteUriRequestContext extends ApacheHttpClientTest 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) }, new BasicHttpContext()) } @@ -203,12 +222,12 @@ class ApacheClientUriRequest extends ApacheHttpClientTest { @Override HttpResponse executeRequest(HttpUriRequest request, URI uri) { - return client.execute(request) + return getClient(uri).execute(request) } @Override void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer callback) { - client.execute(request) { + getClient(uri).execute(request) { callback.accept(it) } } @@ -222,12 +241,12 @@ class ApacheClientUriRequestContext extends ApacheHttpClientTest @Override HttpResponse executeRequest(HttpUriRequest request, URI uri) { - return client.execute(request, new BasicHttpContext()) + return getClient(uri).execute(request, new BasicHttpContext()) } @Override void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer callback) { - client.execute(request, { + getClient(uri).execute(request, { callback.accept(it) }, new BasicHttpContext()) } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestContextTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestContextTest.groovy index 2a0e851f65..17612f88e9 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestContextTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestContextTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientHostAbsoluteUriRequestContextTest extends AbstractApacheClientHostAbsoluteUriRequestContextTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestTest.groovy index d3522603d0..3185623123 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostAbsoluteUriRequestTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientHostAbsoluteUriRequestTest extends AbstractApacheClientHostAbsoluteUriRequestTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestContextTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestContextTest.groovy index 20a9af73fc..dd40a466b6 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestContextTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestContextTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientHostRequestContextTest extends AbstractApacheClientHostRequestContextTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestTest.groovy index 076f482ac8..a778114f9c 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientHostRequestTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientHostRequestTest extends AbstractApacheClientHostRequestTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestContextTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestContextTest.groovy index 4713b34300..fad40b39bb 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestContextTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestContextTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientUriRequestContextTest extends AbstractApacheClientUriRequestContextTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestTest.groovy index 9cd38014a4..91219b84ea 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheClientUriRequestTest.groovy @@ -11,12 +11,15 @@ import org.apache.http.impl.client.CloseableHttpClient class ApacheClientUriRequestTest extends AbstractApacheClientUriRequestTest implements LibraryTestTrait { @Override - protected CloseableHttpClient createClient() { + protected CloseableHttpClient createClient(boolean readTimeout) { def builder = ApacheHttpClientTracing.create(openTelemetry).newHttpClientBuilder() - builder.defaultRequestConfig = RequestConfig.custom() + def requestConfigBuilder = RequestConfig.custom() .setMaxRedirects(maxRedirects()) .setConnectTimeout(CONNECT_TIMEOUT_MS) - .build() + if (readTimeout) { + requestConfigBuilder.setSocketTimeout(READ_TIMEOUT_MS) + } + builder.defaultRequestConfig = requestConfigBuilder.build() return builder.build() } } diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/testing/src/main/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTest.groovy b/instrumentation/apache-httpclient/apache-httpclient-4.3/testing/src/main/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTest.groovy index 462d5bdfa0..aca1498ce4 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/testing/src/main/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTest.groovy +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/testing/src/main/groovy/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTest.groovy @@ -22,7 +22,7 @@ import java.util.function.Consumer abstract class ApacheHttpClientTest extends HttpClientTest { - abstract protected CloseableHttpClient createClient() + abstract protected CloseableHttpClient createClient(boolean readTimeout) @Override String userAgent() { @@ -34,8 +34,23 @@ abstract class ApacheHttpClientTest extends HttpClientTes return 302 } + @Override + boolean testReadTimeout() { + true + } + @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 T buildRequest(String method, URI uri, Map headers) { @@ -109,12 +124,12 @@ abstract class AbstractApacheClientHostRequestTest extends ApacheHttpClientTest< @Override 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 void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer 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) } } @@ -128,12 +143,12 @@ abstract class AbstractApacheClientHostAbsoluteUriRequestTest extends ApacheHttp @Override 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 void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer 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) } } @@ -148,12 +163,12 @@ abstract class AbstractApacheClientHostRequestContextTest extends ApacheHttpClie @Override 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 void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer 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) }, new BasicHttpContext()) } @@ -167,12 +182,12 @@ abstract class AbstractApacheClientHostAbsoluteUriRequestContextTest extends Apa @Override 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 void executeRequestWithCallback(BasicHttpRequest request, URI uri, Consumer 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) }, new BasicHttpContext()) } @@ -186,12 +201,12 @@ abstract class AbstractApacheClientUriRequestTest extends ApacheHttpClientTest callback) { - client.execute(request) { + getClient(uri).execute(request) { callback.accept(it) } } @@ -205,12 +220,12 @@ abstract class AbstractApacheClientUriRequestContextTest extends ApacheHttpClien @Override HttpResponse executeRequest(HttpUriRequest request, URI uri) { - return client.execute(request, new BasicHttpContext()) + return getClient(uri).execute(request, new BasicHttpContext()) } @Override void executeRequestWithCallback(HttpUriRequest request, URI uri, Consumer callback) { - client.execute(request, { + getClient(uri).execute(request, { callback.accept(it) }, new BasicHttpContext()) } diff --git a/instrumentation/google-http-client-1.19/javaagent/src/test/groovy/AbstractGoogleHttpClientTest.groovy b/instrumentation/google-http-client-1.19/javaagent/src/test/groovy/AbstractGoogleHttpClientTest.groovy index c9c464a8ca..135bd47820 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/test/groovy/AbstractGoogleHttpClientTest.groovy +++ b/instrumentation/google-http-client-1.19/javaagent/src/test/groovy/AbstractGoogleHttpClientTest.groovy @@ -30,12 +30,20 @@ abstract class AbstractGoogleHttpClientTest extends HttpClientTest return false } + @Override + boolean testReadTimeout() { + true + } + @Override HttpRequest buildRequest(String method, URI uri, Map headers) { def genericUrl = new GenericUrl(uri) def request = requestFactory.buildRequest(method, genericUrl, null) 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 // and lowercase all other headers diff --git a/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionResponseCodeOnlyTest.groovy b/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionResponseCodeOnlyTest.groovy index fe598969e1..3f2ecc60df 100644 --- a/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionResponseCodeOnlyTest.groovy +++ b/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionResponseCodeOnlyTest.groovy @@ -18,6 +18,9 @@ class HttpUrlConnectionResponseCodeOnlyTest extends HttpClientTest implements AgentTest headers.entrySet().each { requestBuilder.header(it.key, it.value) } + if (uri.toString().contains("/read-timeout")) { + requestBuilder.timeout(Duration.of(READ_TIMEOUT_MS, ChronoUnit.MILLIS)) + } return requestBuilder.build() } @@ -58,4 +61,9 @@ class JdkHttpClientTest extends HttpClientTest implements AgentTest boolean testWithClientParent() { false } + + @Override + boolean testReadTimeout() { + true + } }