Skip to content

Commit a51535d

Browse files
authored
Test http client captured headers (#7993)
1 parent 2b91879 commit a51535d

File tree

14 files changed

+129
-9
lines changed

14 files changed

+129
-9
lines changed

instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/test/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
99
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
1010
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
11+
import java.util.Collections;
1112
import org.apache.http.client.config.RequestConfig;
1213
import org.apache.http.impl.client.CloseableHttpClient;
1314
import org.apache.http.impl.client.HttpClientBuilder;
@@ -26,7 +27,13 @@ protected InstrumentationExtension testing() {
2627
@Override
2728
protected CloseableHttpClient createClient(boolean readTimeout) {
2829
HttpClientBuilder builder =
29-
ApacheHttpClientTelemetry.create(testing.getOpenTelemetry()).newHttpClientBuilder();
30+
ApacheHttpClientTelemetry.builder(testing.getOpenTelemetry())
31+
.setCapturedRequestHeaders(
32+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
33+
.setCapturedResponseHeaders(
34+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
35+
.build()
36+
.newHttpClientBuilder();
3037
RequestConfig.Builder requestConfigBuilder =
3138
RequestConfig.custom()
3239
.setMaxRedirects(2)

instrumentation/armeria-1.3/library/src/test/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77

88
import com.linecorp.armeria.client.WebClientBuilder;
99
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
10+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
1011
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
1112
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
13+
import java.util.Collections;
1214
import org.junit.jupiter.api.extension.RegisterExtension;
1315

1416
class ArmeriaHttpClientTest extends AbstractArmeriaHttpClientTest {
@@ -19,7 +21,13 @@ class ArmeriaHttpClientTest extends AbstractArmeriaHttpClientTest {
1921
@Override
2022
protected WebClientBuilder configureClient(WebClientBuilder clientBuilder) {
2123
return clientBuilder.decorator(
22-
ArmeriaTelemetry.create(testing.getOpenTelemetry()).newClientDecorator());
24+
ArmeriaTelemetry.builder(testing.getOpenTelemetry())
25+
.setCapturedClientRequestHeaders(
26+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
27+
.setCapturedClientResponseHeaders(
28+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
29+
.build()
30+
.newClientDecorator());
2331
}
2432

2533
@Override

instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/ResteasyProxyClientTest.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ class ResteasyProxyClientTest extends HttpClientTest<ResteasyProxyResource> impl
7474
boolean testCallback() {
7575
false
7676
}
77+
78+
@Override
79+
boolean testCapturedHttpHeaders() {
80+
false
81+
}
7782
}
7883

7984
@Path("")

instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/test/groovy/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/JettyHttpClient9LibraryTest.groovy

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ package io.opentelemetry.instrumentation.jetty.httpclient.v9_2
77

88

99
import io.opentelemetry.instrumentation.test.LibraryTestTrait
10+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest
1011
import org.eclipse.jetty.client.HttpClient
1112
import org.eclipse.jetty.util.ssl.SslContextFactory
1213

1314
class JettyHttpClient9LibraryTest extends AbstractJettyClient9Test implements LibraryTestTrait {
1415

1516
@Override
1617
HttpClient createStandardClient() {
17-
return JettyClientTelemetry.create(getOpenTelemetry()).getHttpClient()
18+
return JettyClientTelemetry.builder(getOpenTelemetry())
19+
.setCapturedRequestHeaders([AbstractHttpClientTest.TEST_REQUEST_HEADER])
20+
.setCapturedResponseHeaders([AbstractHttpClientTest.TEST_RESPONSE_HEADER])
21+
.build().getHttpClient()
1822
}
1923

2024
@Override

instrumentation/ktor/ktor-2.0/library/src/test/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/client/KtorHttpClientTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class KtorHttpClientTest : AbstractHttpClientTest<HttpRequestBuilder>() {
8080
private fun HttpClientConfig<*>.installTracing() {
8181
install(KtorClientTracing) {
8282
setOpenTelemetry(TESTING.openTelemetry)
83+
setCapturedRequestHeaders(listOf(AbstractHttpClientTest.TEST_REQUEST_HEADER))
84+
setCapturedResponseHeaders(listOf(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
8385
}
8486
}
8587
}

instrumentation/netty/netty-4.1/library/src/test/java/io/opentelemetry/instrumentation/netty/v4_1/Netty41ClientTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import io.netty.channel.Channel;
99
import io.opentelemetry.context.Context;
1010
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
11+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
1112
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
13+
import java.util.Collections;
1214
import org.junit.jupiter.api.extension.RegisterExtension;
1315

1416
public class Netty41ClientTest extends AbstractNetty41ClientTest {
@@ -22,6 +24,10 @@ public class Netty41ClientTest extends AbstractNetty41ClientTest {
2224
channelPipeline ->
2325
channelPipeline.addLast(
2426
NettyClientTelemetry.builder(testing.getOpenTelemetry())
27+
.setCapturedRequestHeaders(
28+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
29+
.setCapturedResponseHeaders(
30+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
2531
.build()
2632
.createCombinedHandler()));
2733

instrumentation/okhttp/okhttp-3.0/library/src/test/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttp3Test.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
package io.opentelemetry.instrumentation.okhttp.v3_0;
77

88
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
9+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
910
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
11+
import java.util.Collections;
1012
import okhttp3.Call;
1113
import okhttp3.OkHttpClient;
1214
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -18,6 +20,12 @@ public class OkHttp3Test extends AbstractOkHttp3Test {
1820

1921
@Override
2022
public Call.Factory createCallFactory(OkHttpClient.Builder clientBuilder) {
21-
return OkHttpTelemetry.create(testing.getOpenTelemetry()).newCallFactory(clientBuilder.build());
23+
return OkHttpTelemetry.builder(testing.getOpenTelemetry())
24+
.setCapturedRequestHeaders(
25+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
26+
.setCapturedResponseHeaders(
27+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
28+
.build()
29+
.newCallFactory(clientBuilder.build());
2230
}
2331
}

instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackTelemetry.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
import ratpack.registry.RegistrySpec;
1919

2020
/**
21-
* Entrypoint for instrumenting Ratpack servers. To apply OpenTelemetry to a server, configure the
22-
* {@link RegistrySpec} using {@link #configureServerRegistry(RegistrySpec)}.
21+
* Entrypoint for instrumenting Ratpack server and http client.
22+
*
23+
* <p>To apply OpenTelemetry instrumentation to a server, configure the {@link RegistrySpec} using
24+
* {@link #configureServerRegistry(RegistrySpec)}.
2325
*
2426
* <pre>{@code
2527
* RatpackTelemetry telemetry = RatpackTelemetry.create(OpenTelemetrySdk.builder()
@@ -30,6 +32,16 @@
3032
* server.handlers(chain -> ...);
3133
* });
3234
* }</pre>
35+
*
36+
* <p>To apply OpenTelemetry instrumentation to a http client, wrap the {@link HttpClient} using
37+
* {@link #instrumentHttpClient(HttpClient)}.
38+
*
39+
* <pre>{@code
40+
* RatpackTelemetry telemetry = RatpackTelemetry.create(OpenTelemetrySdk.builder()
41+
* ...
42+
* .build());
43+
* HttpClient instrumentedHttpClient = telemetry.instrumentHttpClient(httpClient);
44+
* }</pre>
3345
*/
3446
public final class RatpackTelemetry {
3547

instrumentation/ratpack/ratpack-1.7/library/src/test/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackHttpClientTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
package io.opentelemetry.instrumentation.ratpack.v1_7;
77

88
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
9+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
910
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
11+
import java.util.Collections;
1012
import org.junit.jupiter.api.extension.RegisterExtension;
1113
import ratpack.func.Action;
1214
import ratpack.http.client.HttpClient;
@@ -19,7 +21,12 @@ class RatpackHttpClientTest extends AbstractRatpackHttpClientTest {
1921

2022
@Override
2123
protected HttpClient buildHttpClient() throws Exception {
22-
return RatpackTelemetry.create(testing.getOpenTelemetry())
24+
return RatpackTelemetry.builder(testing.getOpenTelemetry())
25+
.setCapturedClientRequestHeaders(
26+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
27+
.setCapturedClientResponseHeaders(
28+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
29+
.build()
2330
.instrumentHttpClient(HttpClient.of(Action.noop()));
2431
}
2532

instrumentation/spring/spring-web/spring-web-3.1/library/src/test/java/io/opentelemetry/instrumentation/spring/web/v3_1/SpringWebInstrumentationTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
1616
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
1717
import java.net.URI;
18+
import java.util.Collections;
1819
import java.util.HashSet;
1920
import java.util.Map;
2021
import java.util.Set;
@@ -41,7 +42,14 @@ static void setUp() {
4142
restTemplate = new RestTemplate(requestFactory);
4243
restTemplate
4344
.getInterceptors()
44-
.add(SpringWebTelemetry.create(testing.getOpenTelemetry()).newInterceptor());
45+
.add(
46+
SpringWebTelemetry.builder(testing.getOpenTelemetry())
47+
.setCapturedRequestHeaders(
48+
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
49+
.setCapturedResponseHeaders(
50+
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
51+
.build()
52+
.newInterceptor());
4553
}
4654

4755
@Override

0 commit comments

Comments
 (0)