Skip to content

Commit 7d7bed8

Browse files
committed
Merge remote-tracking branch 'upstream/main' into add-option-withparent-to-annotation-withspan
2 parents d3e79fd + e9227c3 commit 7d7bed8

File tree

36 files changed

+1749
-1657
lines changed

36 files changed

+1749
-1657
lines changed

dependencyManagement/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ val DEPENDENCIES = listOf(
9090
"com.uber.nullaway:nullaway:0.12.3",
9191
"commons-beanutils:commons-beanutils:1.10.0",
9292
"commons-cli:commons-cli:1.9.0",
93-
"commons-codec:commons-codec:1.17.2",
93+
"commons-codec:commons-codec:1.18.0",
9494
"commons-collections:commons-collections:3.2.2",
9595
"commons-digester:commons-digester:2.1",
9696
"commons-fileupload:commons-fileupload:1.5",

instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxHttpClientTest.java

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
1010
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
1111

12-
import client.VertxSingleConnection;
1312
import io.opentelemetry.api.common.AttributeKey;
1413
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1514
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;

instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/client/VertxSingleConnection.java instrumentation/vertx/vertx-http-client/vertx-http-client-3.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v3_0/client/VertxSingleConnection.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package client;
6+
package io.opentelemetry.javaagent.instrumentation.vertx.v3_0.client;
77

88
import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection;
99
import io.vertx.core.Vertx;
@@ -18,7 +18,7 @@
1818
import java.util.concurrent.CompletableFuture;
1919
import java.util.concurrent.ExecutionException;
2020

21-
public class VertxSingleConnection implements SingleConnection {
21+
class VertxSingleConnection implements SingleConnection {
2222

2323
private final HttpClient httpClient;
2424
private final String host;

instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/test/groovy/client/VertxHttpClientTest.groovy

-119
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.client;
7+
8+
import static java.util.Collections.emptySet;
9+
10+
import io.opentelemetry.api.common.AttributeKey;
11+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
12+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
13+
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
14+
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientResult;
15+
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
16+
import io.vertx.core.Future;
17+
import io.vertx.core.Vertx;
18+
import io.vertx.core.VertxOptions;
19+
import io.vertx.core.http.HttpClient;
20+
import io.vertx.core.http.HttpClientOptions;
21+
import io.vertx.core.http.HttpClientRequest;
22+
import io.vertx.core.http.HttpMethod;
23+
import io.vertx.core.http.RequestOptions;
24+
import java.net.URI;
25+
import java.util.Map;
26+
import java.util.Set;
27+
import java.util.concurrent.CompletableFuture;
28+
import java.util.concurrent.TimeUnit;
29+
import org.junit.jupiter.api.extension.RegisterExtension;
30+
31+
class VertxHttpClientTest extends AbstractHttpClientTest<Future<HttpClientRequest>> {
32+
33+
@RegisterExtension
34+
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
35+
36+
private final HttpClient httpClient = buildClient();
37+
38+
private static HttpClient buildClient() {
39+
Vertx vertx = Vertx.vertx(new VertxOptions());
40+
HttpClientOptions clientOptions =
41+
new HttpClientOptions().setConnectTimeout(Math.toIntExact(CONNECTION_TIMEOUT.toMillis()));
42+
return vertx.createHttpClient(clientOptions);
43+
}
44+
45+
@Override
46+
public Future<HttpClientRequest> buildRequest(
47+
String method, URI uri, Map<String, String> headers) {
48+
RequestOptions requestOptions =
49+
new RequestOptions().setMethod(HttpMethod.valueOf(method)).setAbsoluteURI(uri.toString());
50+
headers.forEach(requestOptions::putHeader);
51+
return httpClient.request(requestOptions);
52+
}
53+
54+
private static CompletableFuture<Integer> sendRequest(Future<HttpClientRequest> request) {
55+
CompletableFuture<Integer> future = new CompletableFuture<>();
56+
57+
request
58+
.compose(
59+
req ->
60+
req.send()
61+
.onComplete(
62+
asyncResult -> {
63+
if (asyncResult.succeeded()) {
64+
future.complete(asyncResult.result().statusCode());
65+
} else {
66+
future.completeExceptionally(asyncResult.cause());
67+
}
68+
}))
69+
.onFailure(future::completeExceptionally);
70+
71+
return future;
72+
}
73+
74+
@Override
75+
public int sendRequest(
76+
Future<HttpClientRequest> request, String method, URI uri, Map<String, String> headers)
77+
throws Exception {
78+
// Vertx doesn't seem to provide any synchronous API so bridge through a callback
79+
return sendRequest(request).get(30, TimeUnit.SECONDS);
80+
}
81+
82+
@Override
83+
public void sendRequestWithCallback(
84+
Future<HttpClientRequest> request,
85+
String method,
86+
URI uri,
87+
Map<String, String> headers,
88+
HttpClientResult httpClientResult) {
89+
sendRequest(request)
90+
.whenComplete((status, throwable) -> httpClientResult.complete(() -> status, throwable));
91+
}
92+
93+
@Override
94+
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
95+
optionsBuilder.disableTestRedirects();
96+
optionsBuilder.disableTestReusedRequest();
97+
optionsBuilder.disableTestHttps();
98+
optionsBuilder.disableTestReadTimeout();
99+
optionsBuilder.setHttpAttributes(VertxHttpClientTest::getHttpAttributes);
100+
optionsBuilder.setExpectedClientSpanNameMapper(VertxHttpClientTest::getExpectedClientSpanName);
101+
102+
optionsBuilder.setSingleConnectionFactory(VertxSingleConnection::new);
103+
}
104+
105+
private static Set<AttributeKey<?>> getHttpAttributes(URI uri) {
106+
String uriString = uri.toString();
107+
// http://localhost:61/ => unopened port, http://192.0.2.1/ => non routable address
108+
if ("http://localhost:61/".equals(uriString) || "http://192.0.2.1/".equals(uriString)) {
109+
return emptySet();
110+
}
111+
return HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES;
112+
}
113+
114+
private static String getExpectedClientSpanName(URI uri, String method) {
115+
switch (uri.toString()) {
116+
case "http://localhost:61/": // unopened port
117+
case "http://192.0.2.1/": // non routable address
118+
return "CONNECT";
119+
default:
120+
return HttpClientTestOptions.DEFAULT_EXPECTED_CLIENT_SPAN_NAME_MAPPER.apply(uri, method);
121+
}
122+
}
123+
}

instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/test/java/client/VertxSingleConnection.java instrumentation/vertx/vertx-http-client/vertx-http-client-4.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/client/VertxSingleConnection.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package client;
6+
package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.client;
77

88
import io.opentelemetry.instrumentation.testing.junit.http.SingleConnection;
99
import io.vertx.core.Future;
@@ -18,7 +18,7 @@
1818
import java.util.Objects;
1919
import java.util.concurrent.ExecutionException;
2020

21-
public class VertxSingleConnection implements SingleConnection {
21+
class VertxSingleConnection implements SingleConnection {
2222

2323
private final HttpClient httpClient;
2424
private final String host;
@@ -41,7 +41,7 @@ public int doRequest(String path, Map<String, String> headers)
4141
Future<HttpClientRequest> request = httpClient.request(requestOptions);
4242

4343
HttpClientResponse response =
44-
request.compose(req -> req.send()).toCompletionStage().toCompletableFuture().get();
44+
request.compose(HttpClientRequest::send).toCompletionStage().toCompletableFuture().get();
4545

4646
String responseId = response.getHeader(REQUEST_ID_HEADER);
4747
if (!requestId.equals(responseId)) {

instrumentation/vertx/vertx-rx-java-3.5/javaagent/build.gradle.kts

+8-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ testing {
2929
suites {
3030
val version35Test by registering(JvmTestSuite::class) {
3131
dependencies {
32-
implementation("org.hsqldb:hsqldb:2.3.4")
32+
// this only exists to make Intellij happy since it doesn't (currently at least) understand our
33+
// inclusion of this artifact inside :testing-common
34+
compileOnly(project.dependencies.project(":testing:armeria-shaded-for-testing", configuration = "shadow"))
3335

36+
implementation("org.hsqldb:hsqldb:2.3.4")
3437
compileOnly("io.vertx:vertx-codegen:$vertxVersion")
3538
implementation("io.vertx:vertx-web:$vertxVersion")
3639
implementation("io.vertx:vertx-rx-java2:$vertxVersion")
@@ -42,8 +45,11 @@ testing {
4245

4346
val latestDepTest by registering(JvmTestSuite::class) {
4447
dependencies {
45-
implementation("org.hsqldb:hsqldb:2.3.4")
48+
// this only exists to make Intellij happy since it doesn't (currently at least) understand our
49+
// inclusion of this artifact inside :testing-common
50+
compileOnly(project.dependencies.project(":testing:armeria-shaded-for-testing", configuration = "shadow"))
4651

52+
implementation("org.hsqldb:hsqldb:2.3.4")
4753
implementation("io.vertx:vertx-web:latest.release")
4854
implementation("io.vertx:vertx-rx-java2:latest.release")
4955
implementation("io.vertx:vertx-web-client:latest.release")

0 commit comments

Comments
 (0)