Skip to content

Commit b937dc4

Browse files
authored
Assert user agent when it is present (#7918)
1 parent 2a20f5e commit b937dc4

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/AbstractApacheHttpClientTest.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,11 @@
2626

2727
abstract class AbstractApacheHttpClientTest<T extends HttpRequest>
2828
extends AbstractHttpClientTest<T> {
29-
30-
@Override
31-
protected String userAgent() {
32-
return "apachehttpclient";
33-
}
29+
private static final String USER_AGENT = "apachehttpclient";
3430

3531
@Override
3632
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
37-
optionsBuilder.setUserAgent(userAgent());
33+
optionsBuilder.setUserAgent(USER_AGENT);
3834
optionsBuilder.enableTestReadTimeout();
3935
optionsBuilder.setHttpAttributes(this::getHttpAttributes);
4036
}
@@ -55,7 +51,7 @@ protected Set<AttributeKey<?>> getHttpAttributes(URI endpoint) {
5551
@Override
5652
public T buildRequest(String method, URI uri, Map<String, String> headers) {
5753
T request = createRequest(method, uri);
58-
request.addHeader("user-agent", userAgent());
54+
request.addHeader("user-agent", USER_AGENT);
5955
headers.forEach((key, value) -> request.setHeader(new BasicHeader(key, value)));
6056
return request;
6157
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ class JerseyClientTest extends JaxRsClientTest {
140140
return new JerseyClientBuilder().withConfig(config)
141141
}
142142

143+
@Override
144+
String userAgent() {
145+
"Jersey"
146+
}
147+
143148
@Override
144149
SingleConnection createSingleConnection(String host, int port) {
145150
// Jersey JAX-RS client uses HttpURLConnection internally, which does not support pipelining nor
@@ -178,6 +183,11 @@ class CxfClientTest extends JaxRsClientTest {
178183
return exception
179184
}
180185

186+
@Override
187+
String userAgent() {
188+
"Apache"
189+
}
190+
181191
@Override
182192
ClientBuilder builder() {
183193
return new ClientBuilderImpl()

instrumentation/jodd-http-4.2/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/joddhttp/v4_2/JoddHttpTest.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,15 @@
1212
import java.net.URI;
1313
import java.util.Map;
1414
import jodd.http.HttpRequest;
15-
import org.jetbrains.annotations.Nullable;
1615
import org.junit.jupiter.api.extension.RegisterExtension;
1716

1817
public class JoddHttpTest extends AbstractHttpClientTest<HttpRequest> {
1918

19+
private static final String USER_AGENT = "Jodd HTTP";
20+
2021
@RegisterExtension
2122
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
2223

23-
@Nullable
24-
@Override
25-
protected String userAgent() {
26-
return "Jodd HTTP";
27-
}
28-
2924
@Override
3025
public HttpRequest buildRequest(String method, URI uri, Map<String, String> headers) {
3126
HttpRequest request =
@@ -34,7 +29,7 @@ public HttpRequest buildRequest(String method, URI uri, Map<String, String> head
3429
.set(uri.toString())
3530
.followRedirects(true)
3631
.connectionKeepAlive(true)
37-
.header("user-agent", userAgent());
32+
.header("user-agent", USER_AGENT);
3833
for (Map.Entry<String, String> header : headers.entrySet()) {
3934
request.headerOverwrite(header.getKey(), header.getValue());
4035
}
@@ -45,8 +40,7 @@ public HttpRequest buildRequest(String method, URI uri, Map<String, String> head
4540
}
4641

4742
@Override
48-
public int sendRequest(HttpRequest request, String method, URI uri, Map<String, String> headers)
49-
throws Exception {
43+
public int sendRequest(HttpRequest request, String method, URI uri, Map<String, String> headers) {
5044
request.method(method).set(uri.toString());
5145
for (Map.Entry<String, String> header : headers.entrySet()) {
5246
request.headerOverwrite(header.getKey(), header.getValue());
@@ -60,5 +54,6 @@ protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
6054
optionsBuilder.disableTestCallback();
6155
// Circular Redirects are not explicitly handled by jodd-http
6256
optionsBuilder.disableTestCircularRedirects();
57+
optionsBuilder.setUserAgent(USER_AGENT);
6358
}
6459
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -914,11 +914,17 @@ SpanDataAssert assertClientSpan(
914914
}
915915
if (httpClientAttributes.contains(SemanticAttributes.HTTP_USER_AGENT)) {
916916
String userAgent = options.getUserAgent();
917-
if (userAgent != null) {
917+
if (userAgent != null || attrs.get(SemanticAttributes.HTTP_USER_AGENT) != null) {
918918
assertThat(attrs)
919919
.hasEntrySatisfying(
920920
SemanticAttributes.HTTP_USER_AGENT,
921-
actual -> assertThat(actual).startsWith(userAgent));
921+
actual -> {
922+
if (userAgent != null) {
923+
assertThat(actual).startsWith(userAgent);
924+
} else {
925+
assertThat(actual).isNull();
926+
}
927+
});
922928
}
923929
}
924930
if (attrs.get(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) != null) {

0 commit comments

Comments
 (0)