Skip to content

Commit 87345f0

Browse files
committed
polish
1 parent 81827bc commit 87345f0

File tree

7 files changed

+74
-107
lines changed

7 files changed

+74
-107
lines changed

instrumentation/activej-http-6.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ muzzle {
1313

1414
dependencies {
1515
library("io.activej:activej-http:6.0-rc2")
16-
latestDepTestLibrary("io.activej:activej-http:6.0-rc2") // documented limitation
16+
latestDepTestLibrary("io.activej:activej-http:6.+") // documented limitation, can be removed when there is a non rc version in 6.x series
1717
}
1818

1919
otelJava {

instrumentation/activej-http-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/activejhttp/ActivejHttpServerConnectionSingletons.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public final class ActivejHttpServerConnectionSingletons {
2121
JavaagentHttpServerInstrumenters.create(
2222
INSTRUMENTATION_NAME,
2323
new ActivejHttpServerHttpAttributesGetter(),
24-
ActivejHttpServerHeaders.INSTANCE);
24+
ActivejHttpServerRequestGetter.INSTANCE);
2525
}
2626

2727
public static Instrumenter<HttpRequest, HttpResponse> instrumenter() {

instrumentation/activej-http-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/activejhttp/ActivejHttpServerHttpAttributesGetter.java

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55

66
package io.opentelemetry.javaagent.instrumentation.activejhttp;
77

8+
import io.activej.http.HttpHeader;
9+
import io.activej.http.HttpHeaderValue;
10+
import io.activej.http.HttpHeaders;
811
import io.activej.http.HttpRequest;
912
import io.activej.http.HttpResponse;
1013
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter;
14+
import java.net.InetAddress;
15+
import java.util.ArrayList;
1116
import java.util.List;
17+
import java.util.Map;
1218
import javax.annotation.Nullable;
1319

1420
final class ActivejHttpServerHttpAttributesGetter
@@ -21,19 +27,35 @@ public String getHttpRequestMethod(HttpRequest request) {
2127

2228
@Override
2329
public List<String> getHttpRequestHeader(HttpRequest request, String name) {
24-
return ActivejHttpServerUtil.requestHeader(request, name);
30+
HttpHeader httpHeader = HttpHeaders.of(name);
31+
List<String> values = new ArrayList<>();
32+
for (Map.Entry<HttpHeader, HttpHeaderValue> entry : request.getHeaders()) {
33+
if (httpHeader.equals(entry.getKey())) {
34+
values.add(entry.getValue().toString());
35+
}
36+
}
37+
38+
return values;
2539
}
2640

2741
@Override
2842
public Integer getHttpResponseStatusCode(
2943
HttpRequest request, HttpResponse httpResponse, @Nullable Throwable error) {
30-
return ActivejHttpServerUtil.getHttpResponseStatusCode(request, httpResponse, error);
44+
return httpResponse.getCode();
3145
}
3246

3347
@Override
3448
public List<String> getHttpResponseHeader(
3549
HttpRequest request, HttpResponse httpResponse, String name) {
36-
return ActivejHttpServerUtil.getHttpResponseHeader(request, httpResponse, name);
50+
HttpHeader httpHeader = HttpHeaders.of(name);
51+
List<String> values = new ArrayList<>();
52+
for (Map.Entry<HttpHeader, HttpHeaderValue> entry : httpResponse.getHeaders()) {
53+
if (httpHeader.equals(entry.getKey())) {
54+
values.add(entry.getValue().toString());
55+
}
56+
}
57+
58+
return values;
3759
}
3860

3961
@Override
@@ -53,12 +75,28 @@ public String getUrlQuery(HttpRequest request) {
5375

5476
@Override
5577
public String getNetworkProtocolName(HttpRequest request, @Nullable HttpResponse httpResponse) {
56-
return ActivejHttpServerUtil.getNetworkProtocolName(request);
78+
return switch (request.getVersion()) {
79+
case HTTP_0_9, HTTP_1_0, HTTP_1_1, HTTP_2_0 -> "http";
80+
default -> null;
81+
};
5782
}
5883

5984
@Override
6085
public String getNetworkProtocolVersion(
6186
HttpRequest request, @Nullable HttpResponse httpResponse) {
62-
return ActivejHttpServerUtil.getNetworkProtocolVersion(request.getVersion());
87+
return switch (request.getVersion()) {
88+
case HTTP_0_9 -> "0.9";
89+
case HTTP_1_0 -> "1.0";
90+
case HTTP_1_1 -> "1.1";
91+
case HTTP_2_0 -> "2";
92+
default -> null;
93+
};
94+
}
95+
96+
@Nullable
97+
@Override
98+
public String getNetworkPeerAddress(HttpRequest request, @Nullable HttpResponse httpResponse) {
99+
InetAddress remoteAddress = request.getConnection().getRemoteAddress();
100+
return remoteAddress != null ? remoteAddress.getHostAddress() : null;
63101
}
64102
}
Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
import io.activej.http.HttpRequest;
1212
import io.opentelemetry.context.propagation.internal.ExtendedTextMapGetter;
1313
import java.util.ArrayList;
14+
import java.util.Collections;
1415
import java.util.Iterator;
1516
import java.util.List;
1617
import java.util.Map;
1718

18-
enum ActivejHttpServerHeaders implements ExtendedTextMapGetter<HttpRequest> {
19+
enum ActivejHttpServerRequestGetter implements ExtendedTextMapGetter<HttpRequest> {
1920
INSTANCE;
2021

2122
@Override
@@ -28,18 +29,21 @@ public String get(HttpRequest carrier, String key) {
2829
if (carrier == null) {
2930
return null;
3031
}
32+
3133
return carrier.getHeader(HttpHeaders.of(key));
3234
}
3335

3436
@Override
3537
public Iterator<String> getAll(HttpRequest carrier, String key) {
38+
if (carrier == null) {
39+
return Collections.emptyIterator();
40+
}
41+
3642
HttpHeader httpHeader = HttpHeaders.of(key);
3743
List<String> values = new ArrayList<>();
38-
if (carrier != null) {
39-
for (Map.Entry<HttpHeader, HttpHeaderValue> entry : carrier.getHeaders()) {
40-
if (httpHeader.equals(entry.getKey())) {
41-
values.add(entry.getValue().toString());
42-
}
44+
for (Map.Entry<HttpHeader, HttpHeaderValue> entry : carrier.getHeaders()) {
45+
if (httpHeader.equals(entry.getKey())) {
46+
values.add(entry.getValue().toString());
4347
}
4448
}
4549
return values.iterator();

instrumentation/activej-http-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/activejhttp/ActivejHttpServerUtil.java

Lines changed: 0 additions & 72 deletions
This file was deleted.

instrumentation/activej-http-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/activejhttp/PromiseWrapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import io.activej.promise.Promise;
1313
import io.opentelemetry.context.Context;
1414

15-
public class PromiseWrapper {
15+
public final class PromiseWrapper {
1616

1717
public static Promise<HttpResponse> wrap(
1818
Promise<HttpResponse> promise, HttpRequest httpRequest, Context context) {

instrumentation/activej-http-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/activejhttp/ActivejHttpServerTest.java

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
package io.opentelemetry.javaagent.instrumentation.activejhttp;
77

8-
import static io.activej.common.exception.FatalErrorHandlers.rethrow;
8+
import static io.activej.common.exception.FatalErrorHandlers.logging;
99
import static io.activej.http.HttpMethod.GET;
1010
import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.CAPTURE_HEADERS;
1111
import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.ERROR;
@@ -26,7 +26,6 @@
2626
import io.activej.http.HttpServer;
2727
import io.activej.http.RoutingServlet;
2828
import io.activej.promise.Promise;
29-
import io.opentelemetry.instrumentation.api.internal.HttpConstants;
3029
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
3130
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest;
3231
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
@@ -41,12 +40,11 @@ class ActivejHttpServerTest extends AbstractHttpServerTest<HttpServer> {
4140
static final InstrumentationExtension testing = HttpServerInstrumentationExtension.forAgent();
4241

4342
private static final Eventloop eventloop =
44-
Eventloop.builder().withCurrentThread().withFatalErrorHandler(rethrow()).build();
43+
Eventloop.builder().withCurrentThread().withFatalErrorHandler(logging()).build();
4544
private Thread thread;
4645

4746
@Override
4847
protected HttpServer setupServer() throws Exception {
49-
5048
AsyncServlet captureHttpHeadersAsyncServlet =
5149
request -> {
5250
HttpResponse httpResponse =
@@ -65,11 +63,6 @@ protected HttpServer setupServer() throws Exception {
6563
.withBody(INDEXED_CHILD.getBody())
6664
.withCode(INDEXED_CHILD.getStatus())
6765
.build();
68-
INDEXED_CHILD.collectSpanAttributes(
69-
id ->
70-
id.equals(ID_PARAMETER_NAME)
71-
? request.getQueryParameter(ID_PARAMETER_NAME)
72-
: null);
7366
controller(
7467
INDEXED_CHILD,
7568
() -> {
@@ -89,8 +82,21 @@ protected HttpServer setupServer() throws Exception {
8982
.with(GET, QUERY_PARAM.getPath(), request -> prepareResponse(QUERY_PARAM))
9083
.with(GET, ERROR.getPath(), request -> prepareResponse(ERROR))
9184
.with(GET, NOT_FOUND.getPath(), request -> prepareResponse(NOT_FOUND))
92-
.with(GET, EXCEPTION.getPath(), request -> prepareResponse(EXCEPTION))
93-
.with(GET, REDIRECT.getPath(), request -> prepareResponse(REDIRECT))
85+
.with(
86+
GET,
87+
EXCEPTION.getPath(),
88+
request ->
89+
controller(
90+
EXCEPTION,
91+
() -> {
92+
throw new IllegalStateException(EXCEPTION.getBody());
93+
}))
94+
.with(
95+
GET,
96+
REDIRECT.getPath(),
97+
request ->
98+
controller(
99+
REDIRECT, () -> HttpResponse.redirect302(REDIRECT.getBody()).toPromise()))
94100
.with(GET, CAPTURE_HEADERS.getPath(), captureHttpHeadersAsyncServlet)
95101
.with(GET, INDEXED_CHILD.getPath(), indexChildAsyncServlet)
96102
.build();
@@ -111,21 +117,12 @@ protected void stopServer(HttpServer server) throws Exception {
111117

112118
@Override
113119
protected void configure(HttpServerTestOptions options) {
114-
options.setTestHttpPipelining(false);
115-
options.setTestRedirect(false);
116120
options.setTestException(false);
117121
options.disableTestNonStandardHttpMethod();
118-
options.setExpectedServerSpanNameMapper(
119-
(uri, method, route) -> {
120-
if (HttpConstants._OTHER.equals(method)) {
121-
method = "HTTP";
122-
}
123-
return method;
124-
});
125122
options.setHttpAttributes(endpoint -> ImmutableSet.of(NETWORK_PEER_PORT));
126123
}
127124

128-
Promise<HttpResponse> prepareResponse(ServerEndpoint endpoint) {
125+
private static Promise<HttpResponse> prepareResponse(ServerEndpoint endpoint) {
129126
HttpResponse httpResponse =
130127
HttpResponse.builder().withBody(endpoint.getBody()).withCode(endpoint.getStatus()).build();
131128
controller(endpoint, () -> httpResponse);

0 commit comments

Comments
 (0)