diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java index 01b78dcd62..60988c5509 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java @@ -59,9 +59,7 @@ abstract class HttpCommonAttributesExtractor< @Nullable Throwable error) { internalSet( - attributes, - SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, - getter.requestContentLength(request, response)); + attributes, SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, requestContentLength(request)); if (response != null) { Integer statusCode = getter.statusCode(request, response); @@ -71,7 +69,7 @@ abstract class HttpCommonAttributesExtractor< internalSet( attributes, SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, - getter.responseContentLength(request, response)); + responseContentLength(request, response)); for (String name : capturedResponseHeaders) { List values = getter.responseHeader(request, response, name); @@ -87,8 +85,32 @@ abstract class HttpCommonAttributesExtractor< return firstHeaderValue(getter.requestHeader(request, "user-agent")); } + @Nullable + private Long requestContentLength(REQUEST request) { + return parseNumber(firstHeaderValue(getter.requestHeader(request, "content-length"))); + } + + @Nullable + private Long responseContentLength(REQUEST request, RESPONSE response) { + return parseNumber( + firstHeaderValue(getter.responseHeader(request, response, "content-length"))); + } + @Nullable static String firstHeaderValue(List values) { return values.isEmpty() ? null : values.get(0); } + + @Nullable + private static Long parseNumber(@Nullable String number) { + if (number == null) { + return null; + } + try { + return Long.parseLong(number); + } catch (NumberFormatException e) { + // not a number + return null; + } + } } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesGetter.java index 8758915eac..d7e4f8378d 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesGetter.java @@ -34,9 +34,15 @@ public interface HttpCommonAttributesGetter { * *

This is called from {@link Instrumenter#end(Context, Object, Object, Throwable)}, whether * {@code response} is {@code null} or not. + * + * @deprecated Request content length is now being calculated based on the request headers. This + * method is deprecated and will be removed in the next release. */ + @Deprecated @Nullable - Long requestContentLength(REQUEST request, @Nullable RESPONSE response); + default Long requestContentLength(REQUEST request, @Nullable RESPONSE response) { + throw new UnsupportedOperationException("This method is deprecated and will be removed"); + } /** * Extracts the {@code http.request_content_length_uncompressed} span attribute. @@ -66,9 +72,15 @@ public interface HttpCommonAttributesGetter { * *

This is called from {@link Instrumenter#end(Context, Object, Object, Throwable)}, only when * {@code response} is non-{@code null}. + * + * @deprecated Request content length is now being calculated based on the request headers. This + * method is deprecated and will be removed in the next release. */ + @Deprecated @Nullable - Long responseContentLength(REQUEST request, RESPONSE response); + default Long responseContentLength(REQUEST request, RESPONSE response) { + throw new UnsupportedOperationException("This method is deprecated and will be removed"); + } /** * Extracts the {@code http.response_content_length_uncompressed} span attribute. diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java index 7c884504b6..417ee2b1a2 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorTest.java @@ -42,12 +42,6 @@ class HttpClientAttributesExtractorTest { return value == null ? emptyList() : asList(value.split(",")); } - @Override - public Long requestContentLength(Map request, Map response) { - String value = request.get("requestContentLength"); - return value == null ? null : Long.parseLong(value); - } - @Override public Integer statusCode(Map request, Map response) { return Integer.parseInt(response.get("statusCode")); @@ -58,12 +52,6 @@ class HttpClientAttributesExtractorTest { return request.get("flavor"); } - @Override - public Long responseContentLength(Map request, Map response) { - String value = response.get("responseContentLength"); - return value == null ? null : Long.parseLong(value); - } - @Override public List responseHeader( Map request, Map response, String name) { @@ -77,14 +65,14 @@ class HttpClientAttributesExtractorTest { Map request = new HashMap<>(); request.put("method", "POST"); request.put("url", "http://github.com"); - request.put("requestContentLength", "10"); + request.put("header.content-length", "10"); request.put("flavor", "http/2"); request.put("header.user-agent", "okhttp 3.x"); request.put("header.custom-request-header", "123,456"); Map response = new HashMap<>(); response.put("statusCode", "202"); - response.put("responseContentLength", "20"); + response.put("header.content-length", "20"); response.put("header.custom-response-header", "654,321"); HttpClientAttributesExtractor, Map> extractor = diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorTest.java index 739b63e26b..a4eb6bd725 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorTest.java @@ -58,12 +58,6 @@ class HttpServerAttributesExtractorTest { return values == null ? emptyList() : asList(values.split(",")); } - @Override - public Long requestContentLength(Map request, Map response) { - String value = request.get("requestContentLength"); - return value == null ? null : Long.parseLong(value); - } - @Override public Integer statusCode(Map request, Map response) { String value = response.get("statusCode"); @@ -75,12 +69,6 @@ class HttpServerAttributesExtractorTest { return request.get("flavor"); } - @Override - public Long responseContentLength(Map request, Map response) { - String value = response.get("responseContentLength"); - return value == null ? null : Long.parseLong(value); - } - @Override public List responseHeader( Map request, Map response, String name) { @@ -96,7 +84,7 @@ class HttpServerAttributesExtractorTest { request.put("url", "http://github.com"); request.put("target", "/repositories/1"); request.put("scheme", "http"); - request.put("requestContentLength", "10"); + request.put("header.content-length", "10"); request.put("flavor", "http/2"); request.put("route", "/repositories/{id}"); request.put("serverName", "server"); @@ -107,7 +95,7 @@ class HttpServerAttributesExtractorTest { Map response = new HashMap<>(); response.put("statusCode", "202"); - response.put("responseContentLength", "20"); + response.put("header.content-length", "20"); response.put("header.custom-response-header", "654,321"); Function routeFromContext = ctx -> "/repositories/{repoId}"; @@ -147,11 +135,11 @@ class HttpServerAttributesExtractorTest { entry(SemanticAttributes.HTTP_ROUTE, "/repositories/{repoId}"), entry(SemanticAttributes.HTTP_SERVER_NAME, "server"), entry(SemanticAttributes.HTTP_CLIENT_IP, "1.1.1.1"), + entry(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, 10L), entry( AttributeKey.stringArrayKey("http.request.header.custom_request_header"), asList("123", "456")), entry(SemanticAttributes.HTTP_SERVER_NAME, "server"), - entry(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, 10L), entry(SemanticAttributes.HTTP_FLAVOR, "http/2"), entry(SemanticAttributes.HTTP_STATUS_CODE, 202L), entry(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, 20L), diff --git a/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java b/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java index a0e0492042..51e0237bb4 100644 --- a/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java +++ b/instrumentation-api/src/jmh/java/io/opentelemetry/instrumentation/api/instrumenter/InstrumenterBenchmark.java @@ -80,11 +80,6 @@ public class InstrumenterBenchmark { return Collections.emptyList(); } - @Override - public Long requestContentLength(Void unused, @Nullable Void unused2) { - return 100L; - } - @Override public String flavor(Void unused, @Nullable Void unused2) { return SemanticAttributes.HttpFlavorValues.HTTP_2_0; @@ -95,11 +90,6 @@ public class InstrumenterBenchmark { return 200; } - @Override - public Long responseContentLength(Void unused, Void unused2) { - return 100L; - } - @Override public List responseHeader(Void unused, Void unused2, String name) { return Collections.emptyList(); diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java index 43a331d725..41c7596f85 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/client/AkkaHttpClientAttributesGetter.java @@ -35,23 +35,11 @@ class AkkaHttpClientAttributesGetter return AkkaHttpUtil.requestHeader(httpRequest, name); } - @Override - @Nullable - public Long requestContentLength(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { - return null; - } - @Override public Integer statusCode(HttpRequest httpRequest, HttpResponse httpResponse) { return httpResponse.status().intValue(); } - @Override - @Nullable - public Long responseContentLength(HttpRequest httpRequest, HttpResponse httpResponse) { - return null; - } - @Override public List responseHeader( HttpRequest httpRequest, HttpResponse httpResponse, String name) { diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java index c12361e2df..a0c6bdf0ea 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java @@ -26,23 +26,11 @@ class AkkaHttpServerAttributesGetter return AkkaHttpUtil.requestHeader(request, name); } - @Override - @Nullable - public Long requestContentLength(HttpRequest request, @Nullable HttpResponse httpResponse) { - return null; - } - @Override public Integer statusCode(HttpRequest request, HttpResponse httpResponse) { return httpResponse.status().intValue(); } - @Override - @Nullable - public Long responseContentLength(HttpRequest request, HttpResponse httpResponse) { - return null; - } - @Override public List responseHeader(HttpRequest request, HttpResponse httpResponse, String name) { return AkkaHttpUtil.responseHeader(httpResponse, name); diff --git a/instrumentation/apache-camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy b/instrumentation/apache-camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy index 5c4ebb3d91..765c917fbc 100644 --- a/instrumentation/apache-camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy +++ b/instrumentation/apache-camel-2.20/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/apachecamel/aws/AwsSpan.groovy @@ -34,7 +34,7 @@ class AwsSpan { "http.url" String "net.peer.name" String "net.transport" IP_TCP - "net.peer.port" { it == null || Number } + "net.peer.port" { it == null || it instanceof Number } } } } @@ -60,9 +60,11 @@ class AwsSpan { "http.method" "POST" "http.status_code" 200 "http.url" String - "http.user_agent" { it == null || String } + "http.user_agent" { it == null || it instanceof String } + "http.request_content_length" { it == null || it instanceof Long } + "http.response_content_length" { it == null || it instanceof Long } "net.peer.name" String - "net.peer.port" { it == null || Number } + "net.peer.port" { it == null || it instanceof Number } "net.transport" IP_TCP } } @@ -88,7 +90,7 @@ class AwsSpan { "http.status_code" 200 "http.url" String "net.peer.name" String - "net.peer.port" { it == null || Number } + "net.peer.port" { it == null || it instanceof Number } "net.transport" IP_TCP } } diff --git a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java index af01333fcd..c31160fd92 100644 --- a/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpasyncclient-4.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpasyncclient/ApacheHttpAsyncClientHttpAttributesGetter.java @@ -31,13 +31,6 @@ final class ApacheHttpAsyncClientHttpAttributesGetter return request.getHeader(name); } - @Override - @Nullable - public Long requestContentLength( - ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return null; - } - @Override @Nullable public Integer statusCode(ApacheHttpClientRequest request, HttpResponse response) { @@ -51,12 +44,6 @@ final class ApacheHttpAsyncClientHttpAttributesGetter return request.getFlavor(); } - @Override - @Nullable - public Long responseContentLength(ApacheHttpClientRequest request, HttpResponse response) { - return null; - } - @Override public List responseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java index ef96d024d2..6eb64519d4 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v2_0/ApacheHttpClientHttpAttributesGetter.java @@ -37,12 +37,6 @@ final class ApacheHttpClientHttpAttributesGetter return header == null ? emptyList() : singletonList(header.getValue()); } - @Override - @Nullable - public Long requestContentLength(HttpMethod request, @Nullable HttpMethod response) { - return null; - } - @Override @Nullable public Integer statusCode(HttpMethod request, HttpMethod response) { @@ -61,12 +55,6 @@ final class ApacheHttpClientHttpAttributesGetter return null; } - @Override - @Nullable - public Long responseContentLength(HttpMethod request, HttpMethod response) { - return null; - } - @Override public List responseHeader(HttpMethod request, HttpMethod response, String name) { Header header = response.getResponseHeader(name); diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java index 4cf21edddc..be10a1f1e2 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v4_0/ApacheHttpClientHttpAttributesGetter.java @@ -30,13 +30,6 @@ final class ApacheHttpClientHttpAttributesGetter return request.getHeader(name); } - @Override - @Nullable - public Long requestContentLength( - ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(ApacheHttpClientRequest request, HttpResponse response) { return response.getStatusLine().getStatusCode(); @@ -48,12 +41,6 @@ final class ApacheHttpClientHttpAttributesGetter return request.getFlavor(); } - @Override - @Nullable - public Long responseContentLength(ApacheHttpClientRequest request, HttpResponse response) { - return null; - } - @Override public List responseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java index cba402debb..144472a181 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientHttpAttributesGetter.java @@ -32,13 +32,6 @@ enum ApacheHttpClientHttpAttributesGetter return request.getHeader(name); } - @Override - @Nullable - public Long requestContentLength( - ApacheHttpClientRequest request, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(ApacheHttpClientRequest request, HttpResponse response) { return response.getStatusLine().getStatusCode(); @@ -50,12 +43,6 @@ enum ApacheHttpClientHttpAttributesGetter return request.getFlavor(); } - @Override - @Nullable - public Long responseContentLength(ApacheHttpClientRequest request, HttpResponse response) { - return null; - } - @Override public List responseHeader( ApacheHttpClientRequest request, HttpResponse response, String name) { diff --git a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java index 184a5ec4e1..b2df286563 100644 --- a/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java +++ b/instrumentation/apache-httpclient/apache-httpclient-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachehttpclient/v5_0/ApacheHttpClientHttpAttributesGetter.java @@ -68,12 +68,6 @@ final class ApacheHttpClientHttpAttributesGetter return getHeader(request, name); } - @Override - @Nullable - public Long requestContentLength(HttpRequest request, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(HttpRequest request, HttpResponse response) { return response.getCode(); @@ -105,12 +99,6 @@ final class ApacheHttpClientHttpAttributesGetter return null; } - @Override - @Nullable - public Long responseContentLength(HttpRequest request, HttpResponse response) { - return null; - } - @Override public List responseHeader(HttpRequest request, HttpResponse response, String name) { return getHeader(response, name); diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java index 0e8e3d155f..7a6484baa6 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpClientAttributesGetter.java @@ -34,15 +34,6 @@ enum ArmeriaHttpClientAttributesGetter return request(ctx).headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength(RequestContext ctx, @Nullable RequestLog requestLog) { - if (requestLog == null) { - return null; - } - return requestLog.requestLength(); - } - @Override @Nullable public Integer statusCode(RequestContext ctx, RequestLog requestLog) { @@ -63,11 +54,6 @@ enum ArmeriaHttpClientAttributesGetter } } - @Override - public Long responseContentLength(RequestContext ctx, RequestLog requestLog) { - return requestLog.responseLength(); - } - @Override public List responseHeader(RequestContext ctx, RequestLog requestLog, String name) { return requestLog.responseHeaders().getAll(name); diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpServerAttributesGetter.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpServerAttributesGetter.java index 4b515106df..29a754fdc8 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpServerAttributesGetter.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaHttpServerAttributesGetter.java @@ -41,15 +41,6 @@ enum ArmeriaHttpServerAttributesGetter return request(ctx).headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength(RequestContext ctx, @Nullable RequestLog requestLog) { - if (requestLog == null) { - return null; - } - return requestLog.requestLength(); - } - @Override @Nullable public Integer statusCode(RequestContext ctx, RequestLog requestLog) { @@ -70,11 +61,6 @@ enum ArmeriaHttpServerAttributesGetter } } - @Override - public Long responseContentLength(RequestContext ctx, RequestLog requestLog) { - return requestLog.responseLength(); - } - @Override public List responseHeader(RequestContext ctx, RequestLog requestLog, String name) { return requestLog.responseHeaders().getAll(name); diff --git a/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpClientTest.java b/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpClientTest.java index 5e28a687c8..9ce8cfd6c7 100644 --- a/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpClientTest.java +++ b/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpClientTest.java @@ -14,14 +14,10 @@ import com.linecorp.armeria.common.HttpMethod; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.RequestHeaders; import com.linecorp.armeria.common.util.Exceptions; -import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.URI; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.concurrent.CompletionException; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.BeforeEach; @@ -104,12 +100,6 @@ public abstract class AbstractArmeriaHttpClientTest extends AbstractHttpClientTe // armeria requests can't be reused options.disableTestReusedRequest(); options.enableTestReadTimeout(); - - Set> extra = new HashSet<>(); - extra.add(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH); - extra.add(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH); - extra.addAll(HttpClientTestOptions.DEFAULT_HTTP_ATTRIBUTES); - options.setHttpAttributes(unused -> extra); } @Test diff --git a/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpServerTest.java b/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpServerTest.java index b31a1f5788..3d1581bed9 100644 --- a/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpServerTest.java +++ b/instrumentation/armeria-1.3/testing/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/AbstractArmeriaHttpServerTest.java @@ -194,8 +194,6 @@ public abstract class AbstractArmeriaHttpServerTest extends AbstractHttpServerTe options.setHttpAttributes( endpoint -> { Set> keys = new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); - keys.add(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH); - keys.add(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH); keys.add(SemanticAttributes.HTTP_SERVER_NAME); return keys; }); diff --git a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java index 920f3fd890..37f6cdba35 100644 --- a/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-1.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v1_9/AsyncHttpClientHttpAttributesGetter.java @@ -31,12 +31,6 @@ final class AsyncHttpClientHttpAttributesGetter return request.getHeaders().getOrDefault(name, Collections.emptyList()); } - @Override - @Nullable - public Long requestContentLength(Request request, @Nullable Response response) { - return null; - } - @Override public Integer statusCode(Request request, Response response) { return response.getStatusCode(); @@ -47,12 +41,6 @@ final class AsyncHttpClientHttpAttributesGetter return SemanticAttributes.HttpFlavorValues.HTTP_1_1; } - @Override - @Nullable - public Long responseContentLength(Request request, Response response) { - return null; - } - @Override public List responseHeader(Request request, Response response, String name) { return response.getHeaders().getOrDefault(name, Collections.emptyList()); diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java index 6ea090be40..4150fdc792 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/v2_0/AsyncHttpClientHttpAttributesGetter.java @@ -10,7 +10,6 @@ import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.util.List; import javax.annotation.Nullable; import org.asynchttpclient.Response; -import org.asynchttpclient.netty.request.NettyRequest; final class AsyncHttpClientHttpAttributesGetter implements HttpClientAttributesGetter { @@ -30,23 +29,6 @@ final class AsyncHttpClientHttpAttributesGetter return requestContext.getRequest().getHeaders().getAll(name); } - @Override - @Nullable - public Long requestContentLength(RequestContext requestContext, @Nullable Response response) { - NettyRequest nettyRequest = requestContext.getNettyRequest(); - if (nettyRequest != null) { - String contentLength = nettyRequest.getHttpRequest().headers().get("Content-Length"); - if (contentLength != null) { - try { - return Long.valueOf(contentLength); - } catch (NumberFormatException ignored) { - // ignore - } - } - } - return null; - } - @Override public Integer statusCode(RequestContext requestContext, Response response) { return response.getStatusCode(); @@ -57,20 +39,6 @@ final class AsyncHttpClientHttpAttributesGetter return SemanticAttributes.HttpFlavorValues.HTTP_1_1; } - @Override - @Nullable - public Long responseContentLength(RequestContext requestContext, Response response) { - String contentLength = response.getHeaders().get("Content-Length"); - if (contentLength != null) { - try { - return Long.valueOf(contentLength); - } catch (NumberFormatException ignored) { - // ignore - } - } - return null; - } - @Override public List responseHeader( RequestContext requestContext, Response response, String name) { diff --git a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy index 0d8808b620..cef53131ac 100644 --- a/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy +++ b/instrumentation/async-http-client/async-http-client-2.0/javaagent/src/test/groovy/AsyncHttpClientTest.groovy @@ -72,14 +72,6 @@ class AsyncHttpClientTest extends HttpClientTest implements AgentTestTr SemanticAttributes.HTTP_SCHEME, SemanticAttributes.HTTP_TARGET ] - switch (uri.toString()) { - case "http://localhost:61/": // unopened port - case "https://192.0.2.1/": // non routable address - break - default: - extra.add(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) - } - super.httpAttributes(uri) + extra } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy index aa4d5daf99..0d60807116 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/S3TracingTest.groovy @@ -4,6 +4,7 @@ */ import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification +import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import spock.lang.Shared import static io.opentelemetry.api.trace.SpanKind.CLIENT @@ -63,6 +64,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -86,6 +88,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -109,6 +112,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -132,6 +136,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -155,6 +160,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -177,6 +183,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -199,6 +206,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -220,6 +228,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -247,6 +256,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -269,6 +279,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -291,6 +302,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -313,6 +325,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -335,6 +348,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -387,6 +401,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -409,6 +424,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -431,6 +447,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -452,6 +469,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -473,6 +491,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -495,6 +514,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -516,6 +536,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -538,6 +559,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -561,6 +583,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -583,6 +606,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -609,6 +633,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -632,6 +657,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -654,6 +680,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -676,6 +703,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -698,6 +726,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -720,6 +749,7 @@ class S3TracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy index 98e9bfc96a..cbe9e5c592 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test/groovy/SnsTracingTest.groovy @@ -4,6 +4,7 @@ */ import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification +import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import spock.lang.Shared import static io.opentelemetry.api.trace.SpanKind.CLIENT @@ -56,6 +57,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -79,6 +81,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -102,6 +105,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -124,6 +128,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -146,6 +151,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -167,6 +173,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(1) { @@ -188,6 +195,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -214,6 +222,7 @@ class SnsTracingTest extends AgentInstrumentationSpecification { "net.peer.name" String "net.transport" IP_TCP "net.peer.port" { it == null || Number } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy index ee706e35ae..089e7afbab 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/javaagent/src/test_before_1_11_106/groovy/Aws0ClientTest.groovy @@ -110,6 +110,7 @@ class Aws0ClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java index d65031bbd2..835d5653dc 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-1.11/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v1_11/AwsSdkHttpAttributesGetter.java @@ -39,23 +39,11 @@ class AwsSdkHttpAttributesGetter implements HttpClientAttributesGetter request, @Nullable Response response) { - return null; - } - @Override public Integer statusCode(Request request, Response response) { return response.getHttpResponse().getStatusCode(); } - @Override - @Nullable - public Long responseContentLength(Request request, Response response) { - return null; - } - @Override public List responseHeader(Request request, Response response, String name) { String value = response.getHttpResponse().getHeaders().get(name); diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy index 93a3e070e9..767a2f84e5 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractAws1ClientTest.groovy @@ -108,6 +108,7 @@ abstract class AbstractAws1ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" diff --git a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy index 41b6149796..731a16ad36 100644 --- a/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-1.11/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v1_11/AbstractSqsTracingTest.groovy @@ -14,6 +14,7 @@ import com.amazonaws.services.sqs.model.ReceiveMessageRequest import com.amazonaws.services.sqs.model.SendMessageRequest import io.opentelemetry.instrumentation.test.InstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils +import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.elasticmq.rest.sqs.SQSRestServerBuilder import spock.lang.Shared @@ -81,6 +82,7 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -103,6 +105,7 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(1) { @@ -124,6 +127,7 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -150,6 +154,7 @@ abstract class AbstractSqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java index c1df829e77..7e70b9fae6 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkHttpAttributesGetter.java @@ -46,25 +46,11 @@ class AwsSdkHttpAttributesGetter return value == null ? emptyList() : value; } - @Override - @Nullable - public Long requestContentLength( - ExecutionAttributes request, @Nullable SdkHttpResponse response) { - return null; - } - @Override public Integer statusCode(ExecutionAttributes request, SdkHttpResponse response) { return response.statusCode(); } - @Override - @Nullable - public Long responseContentLength( - ExecutionAttributes request, @Nullable SdkHttpResponse response) { - return null; - } - @Override public List responseHeader( ExecutionAttributes request, SdkHttpResponse response, String name) { diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy index 2ebcdf2802..25273797e0 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2ClientTest.groovy @@ -169,6 +169,8 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "DynamoDb" "$SemanticAttributes.RPC_METHOD" "CreateTable" @@ -204,6 +206,8 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_METHOD" "$method" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "DynamoDb" @@ -240,6 +244,8 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "$service" "$SemanticAttributes.RPC_METHOD" "${operation}" @@ -353,6 +359,8 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "$service" "$SemanticAttributes.RPC_METHOD" "${operation}" @@ -443,6 +451,8 @@ abstract class AbstractAws2ClientTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_STATUS_CODE" 200 "$SemanticAttributes.HTTP_USER_AGENT" { it.startsWith("aws-sdk-java/") } + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } "$SemanticAttributes.RPC_SYSTEM" "aws-api" "$SemanticAttributes.RPC_SERVICE" "$service" "$SemanticAttributes.RPC_METHOD" "${operation}" diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy index 97225b26d0..d5ce940dfe 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/groovy/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2SqsTracingTest.groovy @@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation.awssdk.v2_2 import io.opentelemetry.instrumentation.test.InstrumentationSpecification import io.opentelemetry.instrumentation.test.utils.PortUtils +import io.opentelemetry.semconv.trace.attributes.SemanticAttributes import org.elasticmq.rest.sqs.SQSRestServerBuilder import software.amazon.awssdk.auth.credentials.AwsBasicCredentials import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider @@ -104,6 +105,8 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -127,6 +130,8 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -145,6 +150,8 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } @@ -172,6 +179,8 @@ abstract class AbstractAws2SqsTracingTest extends InstrumentationSpecification { "net.peer.name" "localhost" "net.peer.port" sqsPort "net.transport" IP_TCP + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } } diff --git a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy index 75c6554c5d..9d7bcf1fc6 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-5.0/javaagent/src/test/groovy/ElasticsearchRest5Test.groovy @@ -96,6 +96,7 @@ class ElasticsearchRest5Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -170,6 +171,7 @@ class ElasticsearchRest5Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(3) { diff --git a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy index 1e94e0b377..fe8a5663f3 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-6.4/javaagent/src/test/groovy/ElasticsearchRest6Test.groovy @@ -90,6 +90,7 @@ class ElasticsearchRest6Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -163,6 +164,7 @@ class ElasticsearchRest6Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(3) { diff --git a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy index c4db7098c9..404c45a390 100644 --- a/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy +++ b/instrumentation/elasticsearch/elasticsearch-rest-7.0/javaagent/src/test/groovy/ElasticsearchRest7Test.groovy @@ -89,6 +89,7 @@ class ElasticsearchRest7Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } } @@ -162,6 +163,7 @@ class ElasticsearchRest7Test extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" SemanticAttributes.HttpFlavorValues.HTTP_1_1 "$SemanticAttributes.HTTP_URL" "${httpHost.toURI()}/_cluster/health" "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(3) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java index f1877b6c8d..3442585c1e 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/GoogleHttpClientHttpAttributesGetter.java @@ -31,12 +31,6 @@ final class GoogleHttpClientHttpAttributesGetter return httpRequest.getHeaders().getHeaderStringValues(name); } - @Override - @Nullable - public Long requestContentLength(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { - return null; - } - @Override public String flavor(HttpRequest httpRequest, @Nullable HttpResponse httpResponse) { return SemanticAttributes.HttpFlavorValues.HTTP_1_1; @@ -47,12 +41,6 @@ final class GoogleHttpClientHttpAttributesGetter return httpResponse.getStatusCode(); } - @Override - @Nullable - public Long responseContentLength(HttpRequest httpRequest, HttpResponse httpResponse) { - return null; - } - @Override public List responseHeader( HttpRequest httpRequest, HttpResponse httpResponse, String name) { diff --git a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java index db279d3de3..4a8d8b3cd8 100644 --- a/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java +++ b/instrumentation/google-http-client-1.19/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/googlehttpclient/AbstractGoogleHttpClientTest.java @@ -98,7 +98,7 @@ public abstract class AbstractGoogleHttpClientTest extends AbstractHttpClientTes .hasAttributesSatisfying( attrs -> assertThat(attrs) - .hasSize(7) + .hasSize(8) .containsEntry( SemanticAttributes.NET_TRANSPORT, SemanticAttributes.NetTransportValues.IP_TCP) @@ -109,6 +109,9 @@ public abstract class AbstractGoogleHttpClientTest extends AbstractHttpClientTes .containsEntry(SemanticAttributes.HTTP_URL, uri.toString()) .containsEntry(SemanticAttributes.HTTP_METHOD, "GET") .containsEntry(SemanticAttributes.HTTP_STATUS_CODE, 500) + .hasEntrySatisfying( + SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, + length -> assertThat(length).isPositive()) .containsEntry( SemanticAttributes.HTTP_FLAVOR, SemanticAttributes.HttpFlavorValues.HTTP_1_1)), diff --git a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java index d2e018efd3..8ce1621541 100644 --- a/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java +++ b/instrumentation/grizzly-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlyHttpAttributesGetter.java @@ -28,24 +28,11 @@ final class GrizzlyHttpAttributesGetter return value == null ? emptyList() : singletonList(value); } - @Nullable - @Override - public Long requestContentLength( - HttpRequestPacket request, @Nullable HttpResponsePacket response) { - return null; - } - @Override public Integer statusCode(HttpRequestPacket request, HttpResponsePacket response) { return response.getStatus(); } - @Nullable - @Override - public Long responseContentLength(HttpRequestPacket request, HttpResponsePacket response) { - return null; - } - @Override public List responseHeader( HttpRequestPacket request, HttpResponsePacket response, String name) { diff --git a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java index 56a5a7979a..38a75d074e 100644 --- a/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java +++ b/instrumentation/http-url-connection/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlHttpAttributesGetter.java @@ -33,12 +33,6 @@ class HttpUrlHttpAttributesGetter return value == null ? emptyList() : singletonList(value); } - @Override - @Nullable - public Long requestContentLength(HttpURLConnection connection, @Nullable Integer statusCode) { - return null; - } - @Override public String flavor(HttpURLConnection connection, @Nullable Integer statusCode) { return SemanticAttributes.HttpFlavorValues.HTTP_1_1; @@ -49,12 +43,6 @@ class HttpUrlHttpAttributesGetter return statusCode; } - @Override - @Nullable - public Long responseContentLength(HttpURLConnection connection, Integer statusCode) { - return null; - } - @Override public List responseHeader( HttpURLConnection connection, Integer statusCode, String name) { diff --git a/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionTest.groovy b/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionTest.groovy index 9662a09ee4..0b518a08d6 100644 --- a/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionTest.groovy +++ b/instrumentation/http-url-connection/javaagent/src/test/groovy/HttpUrlConnectionTest.groovy @@ -119,6 +119,7 @@ class HttpUrlConnectionTest extends HttpClientTest implements "$SemanticAttributes.HTTP_METHOD" "GET" "$SemanticAttributes.HTTP_STATUS_CODE" STATUS "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(2) { @@ -140,6 +141,7 @@ class HttpUrlConnectionTest extends HttpClientTest implements "$SemanticAttributes.HTTP_METHOD" "GET" "$SemanticAttributes.HTTP_STATUS_CODE" STATUS "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(4) { @@ -156,7 +158,7 @@ class HttpUrlConnectionTest extends HttpClientTest implements useCaches << [false, true] } - def "test broken API usage"() { + def "test broken API usage (#iteration)"() { setup: def url = resolveAddress("/success").toURL() HttpURLConnection connection = runWithSpan("someTrace") { @@ -188,6 +190,7 @@ class HttpUrlConnectionTest extends HttpClientTest implements "$SemanticAttributes.HTTP_METHOD" "GET" "$SemanticAttributes.HTTP_STATUS_CODE" STATUS "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } serverSpan(it, 2, span(1)) @@ -246,6 +249,8 @@ class HttpUrlConnectionTest extends HttpClientTest implements "$SemanticAttributes.HTTP_METHOD" "POST" "$SemanticAttributes.HTTP_STATUS_CODE" STATUS "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" Long + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(2) { @@ -310,6 +315,8 @@ class HttpUrlConnectionTest extends HttpClientTest implements "$SemanticAttributes.HTTP_METHOD" "POST" "$SemanticAttributes.HTTP_STATUS_CODE" STATUS "$SemanticAttributes.HTTP_FLAVOR" "1.1" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" Long + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(2) { diff --git a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/JdkHttpAttributesGetter.java b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/JdkHttpAttributesGetter.java index 056755d4ed..79ed356f7c 100644 --- a/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/JdkHttpAttributesGetter.java +++ b/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/JdkHttpAttributesGetter.java @@ -30,13 +30,6 @@ class JdkHttpAttributesGetter implements HttpClientAttributesGetter httpResponse) { - return null; - } - @Override public Integer statusCode(HttpRequest httpRequest, HttpResponse httpResponse) { return httpResponse.statusCode(); @@ -50,12 +43,6 @@ class JdkHttpAttributesGetter implements HttpClientAttributesGetter httpResponse) { - return null; - } - @Override public List responseHeader( HttpRequest httpRequest, HttpResponse httpResponse, String name) { diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java index d0482dd078..cfc4e4df41 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/v1_1/JaxRsClientHttpAttributesGetter.java @@ -42,13 +42,6 @@ final class JaxRsClientHttpAttributesGetter return stringHeaders; } - @Override - @Nullable - public Long requestContentLength( - ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { - return null; - } - @Override public String flavor(ClientRequest httpRequest, @Nullable ClientResponse httpResponse) { return SemanticAttributes.HttpFlavorValues.HTTP_1_1; @@ -59,13 +52,6 @@ final class JaxRsClientHttpAttributesGetter return httpResponse.getStatus(); } - @Override - @Nullable - public Long responseContentLength(ClientRequest httpRequest, ClientResponse httpResponse) { - int length = httpResponse.getLength(); - return length != -1 ? (long) length : null; - } - @Override public List responseHeader( ClientRequest httpRequest, ClientResponse httpResponse, String name) { diff --git a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy index b221a27a6b..3becbe40e6 100644 --- a/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy +++ b/instrumentation/jaxrs-client/jaxrs-client-2.0-testing/src/test/groovy/JaxRsClientTest.groovy @@ -116,7 +116,8 @@ abstract class JaxRsClientTest extends HttpClientTest implem "$SemanticAttributes.HTTP_METHOD" method "$SemanticAttributes.HTTP_STATUS_CODE" statusCode "$SemanticAttributes.HTTP_FLAVOR" "1.1" - "$SemanticAttributes.HTTP_USER_AGENT" { it == null || String } + "$SemanticAttributes.HTTP_USER_AGENT" { it == null || it instanceof String } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } serverSpan(it, 1, span(0)) diff --git a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java index 488ce58968..6b6114af53 100644 --- a/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java +++ b/instrumentation/jetty-httpclient/jetty-httpclient-9.2/library/src/main/java/io/opentelemetry/instrumentation/jetty/httpclient/v9_2/internal/JettyClientHttpAttributesGetter.java @@ -8,24 +8,17 @@ package io.opentelemetry.instrumentation.jetty.httpclient.v9_2.internal; import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_0; import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_1_1; import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.HttpFlavorValues.HTTP_2_0; -import static java.util.logging.Level.FINE; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter; import java.util.List; -import java.util.logging.Logger; import javax.annotation.Nullable; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; -import org.eclipse.jetty.http.HttpField; -import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpVersion; enum JettyClientHttpAttributesGetter implements HttpClientAttributesGetter { INSTANCE; - private static final Logger logger = - Logger.getLogger(JettyClientHttpAttributesGetter.class.getName()); - @Override @Nullable public String method(Request request) { @@ -43,13 +36,6 @@ enum JettyClientHttpAttributesGetter implements HttpClientAttributesGetter responseHeader(Request request, Response response, String name) { return response.getHeaders().getValuesList(name); } - - private static Long getLongFromJettyHttpField(HttpField httpField) { - Long longFromField = null; - try { - longFromField = httpField != null ? Long.getLong(httpField.getValue()) : null; - } catch (NumberFormatException t) { - if (logger.isLoggable(FINE)) { - logger.log( - FINE, - "Value {0} is not valid number format for header field: {1}", - new Object[] {httpField.getValue(), httpField.getName()}); - } - } - return longFromField; - } } diff --git a/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorHttpServerAttributesGetter.kt b/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorHttpServerAttributesGetter.kt index 3f80315428..15c80e3271 100644 --- a/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorHttpServerAttributesGetter.kt +++ b/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorHttpServerAttributesGetter.kt @@ -23,18 +23,10 @@ internal enum class KtorHttpServerAttributesGetter : return request.headers.getAll(name) ?: emptyList() } - override fun requestContentLength(request: ApplicationRequest, response: ApplicationResponse?): Long? { - return null - } - override fun statusCode(request: ApplicationRequest, response: ApplicationResponse): Int? { return response.status()?.value } - override fun responseContentLength(request: ApplicationRequest, response: ApplicationResponse): Long? { - return null - } - override fun responseHeader(request: ApplicationRequest, response: ApplicationResponse, name: String): List { return response.headers.allValues().getAll(name) ?: emptyList() } diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/KtorHttpServerAttributesGetter.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/KtorHttpServerAttributesGetter.kt index 8161a808e5..0ac0656b10 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/KtorHttpServerAttributesGetter.kt +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/KtorHttpServerAttributesGetter.kt @@ -23,18 +23,10 @@ internal enum class KtorHttpServerAttributesGetter : return request.headers.getAll(name) ?: emptyList() } - override fun requestContentLength(request: ApplicationRequest, response: ApplicationResponse?): Long? { - return null - } - override fun statusCode(request: ApplicationRequest, response: ApplicationResponse): Int? { return response.status()?.value } - override fun responseContentLength(request: ApplicationRequest, response: ApplicationResponse): Long? { - return null - } - override fun responseHeader(request: ApplicationRequest, response: ApplicationResponse, name: String): List { return response.headers.allValues().getAll(name) ?: emptyList() } diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java index ef64a32c5d..125fa5a0bd 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kubernetesclient/KubernetesHttpAttributesGetter.java @@ -32,12 +32,6 @@ class KubernetesHttpAttributesGetter return request.headers(name); } - @Nullable - @Override - public Long requestContentLength(Request request, @Nullable ApiResponse apiResponse) { - return null; - } - @Override public String flavor(Request request, @Nullable ApiResponse apiResponse) { return SemanticAttributes.HttpFlavorValues.HTTP_1_1; @@ -48,12 +42,6 @@ class KubernetesHttpAttributesGetter return apiResponse.getStatusCode(); } - @Nullable - @Override - public Long responseContentLength(Request request, ApiResponse apiResponse) { - return null; - } - @Override public List responseHeader(Request request, ApiResponse apiResponse, String name) { return apiResponse.getHeaders().getOrDefault(name, emptyList()); diff --git a/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy b/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy index ccdce4aed8..b72ba466b3 100644 --- a/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy +++ b/instrumentation/kubernetes-client-7.0/javaagent/src/test/groovy/KubernetesClientTest.groovy @@ -202,6 +202,7 @@ class KubernetesClientTest extends AgentInstrumentationSpecification { "$SemanticAttributes.NET_TRANSPORT" IP_TCP "$SemanticAttributes.NET_PEER_NAME" "127.0.0.1" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "kubernetes-client.namespace" "namespace" "kubernetes-client.name" "name" } diff --git a/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherHttpAttributesGetter.java b/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherHttpAttributesGetter.java index 990daad3a2..c418c9c8fa 100644 --- a/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherHttpAttributesGetter.java +++ b/instrumentation/liberty/liberty-dispatcher/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherHttpAttributesGetter.java @@ -23,13 +23,6 @@ public class LibertyDispatcherHttpAttributesGetter return libertyRequest.getHeaderValues(name); } - @Override - @Nullable - public Long requestContentLength( - LibertyRequest libertyRequest, @Nullable LibertyResponse libertyResponse) { - return null; - } - @Override @Nullable public String flavor(LibertyRequest libertyRequest) { @@ -49,13 +42,6 @@ public class LibertyDispatcherHttpAttributesGetter return libertyResponse.getStatus(); } - @Override - @Nullable - public Long responseContentLength( - LibertyRequest libertyRequest, LibertyResponse libertyResponse) { - return null; - } - @Override public List responseHeader( LibertyRequest libertyRequest, LibertyResponse libertyResponse, String name) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java index b3aa927913..1caadb47d7 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/NettyHttpClientAttributesGetter.java @@ -58,25 +58,11 @@ final class NettyHttpClientAttributesGetter return requestAndChannel.request().headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(HttpRequestAndChannel requestAndChannel, HttpResponse response) { return response.getStatus().getCode(); } - @Override - @Nullable - public Long responseContentLength( - HttpRequestAndChannel requestAndChannel, HttpResponse response) { - return null; - } - @Override public List responseHeader( HttpRequestAndChannel requestAndChannel, HttpResponse response, String name) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java index 13a687d4a4..8f8223a930 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyHttpServerAttributesGetter.java @@ -26,25 +26,11 @@ final class NettyHttpServerAttributesGetter return requestAndChannel.request().headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(HttpRequestAndChannel requestAndChannel, HttpResponse response) { return response.getStatus().getCode(); } - @Override - @Nullable - public Long responseContentLength( - HttpRequestAndChannel requestAndChannel, HttpResponse response) { - return null; - } - @Override public List responseHeader( HttpRequestAndChannel requestAndChannel, HttpResponse response, String name) { diff --git a/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/client/NettyHttpClientAttributesGetter.java b/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/client/NettyHttpClientAttributesGetter.java index 9c8f243b9e..95198e423a 100644 --- a/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/client/NettyHttpClientAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/client/NettyHttpClientAttributesGetter.java @@ -58,25 +58,11 @@ final class NettyHttpClientAttributesGetter return requestAndChannel.request().headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(HttpRequestAndChannel requestAndChannel, HttpResponse response) { return response.getStatus().code(); } - @Override - @Nullable - public Long responseContentLength( - HttpRequestAndChannel requestAndChannel, HttpResponse response) { - return null; - } - @Override public List responseHeader( HttpRequestAndChannel requestAndChannel, HttpResponse response, String name) { diff --git a/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/server/NettyHttpServerAttributesGetter.java b/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/server/NettyHttpServerAttributesGetter.java index 19092769fa..cd7799367e 100644 --- a/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/server/NettyHttpServerAttributesGetter.java +++ b/instrumentation/netty/netty-4-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4/common/server/NettyHttpServerAttributesGetter.java @@ -26,25 +26,11 @@ final class NettyHttpServerAttributesGetter return requestAndChannel.request().headers().getAll(name); } - @Override - @Nullable - public Long requestContentLength( - HttpRequestAndChannel requestAndChannel, @Nullable HttpResponse response) { - return null; - } - @Override public Integer statusCode(HttpRequestAndChannel requestAndChannel, HttpResponse response) { return response.getStatus().code(); } - @Override - @Nullable - public Long responseContentLength( - HttpRequestAndChannel requestAndChannel, HttpResponse response) { - return null; - } - @Override public List responseHeader( HttpRequestAndChannel requestAndChannel, HttpResponse response, String name) { diff --git a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java index 7c49407763..3aebcfb1a3 100644 --- a/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v2_2/OkHttp2HttpAttributesGetter.java @@ -29,12 +29,6 @@ final class OkHttp2HttpAttributesGetter implements HttpClientAttributesGetter responseHeader(Request request, Response response, String name) { return response.headers(name); diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java index 5f402aa763..1801dfd299 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/OkHttpAttributesGetter.java @@ -30,12 +30,6 @@ enum OkHttpAttributesGetter implements HttpClientAttributesGetter responseHeader(Request request, Response response, String name) { return response.headers(name); diff --git a/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/MockHttpServerAttributesGetter.java b/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/MockHttpServerAttributesGetter.java index 3a91d0a522..7010bbbf0d 100644 --- a/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/MockHttpServerAttributesGetter.java +++ b/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/MockHttpServerAttributesGetter.java @@ -27,24 +27,12 @@ enum MockHttpServerAttributesGetter implements HttpServerAttributesGetter responseHeader(String s, Void unused, String name) { return emptyList(); diff --git a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java index c103f08b99..0621d94c06 100644 --- a/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java +++ b/instrumentation/play/play-ws/play-ws-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/playws/PlayWsClientHttpAttributesGetter.java @@ -30,12 +30,6 @@ final class PlayWsClientHttpAttributesGetter return request.getHeaders().getAll(name); } - @Override - @Nullable - public Long requestContentLength(Request request, @Nullable Response response) { - return null; - } - @Override public Integer statusCode(Request request, Response response) { return response.getStatusCode(); @@ -46,12 +40,6 @@ final class PlayWsClientHttpAttributesGetter return SemanticAttributes.HttpFlavorValues.HTTP_1_1; } - @Override - @Nullable - public Long responseContentLength(Request request, Response response) { - return null; - } - @Override public List responseHeader(Request request, Response response, String name) { return response.getHeaders().getAll(name); diff --git a/instrumentation/ratpack/ratpack-1.4/testing/src/main/groovy/io/opentelemetry/instrumentation/ratpack/server/AbstractRatpackRoutesTest.groovy b/instrumentation/ratpack/ratpack-1.4/testing/src/main/groovy/io/opentelemetry/instrumentation/ratpack/server/AbstractRatpackRoutesTest.groovy index b459bcb5d2..09fd266689 100644 --- a/instrumentation/ratpack/ratpack-1.4/testing/src/main/groovy/io/opentelemetry/instrumentation/ratpack/server/AbstractRatpackRoutesTest.groovy +++ b/instrumentation/ratpack/ratpack-1.4/testing/src/main/groovy/io/opentelemetry/instrumentation/ratpack/server/AbstractRatpackRoutesTest.groovy @@ -109,6 +109,7 @@ abstract class AbstractRatpackRoutesTest extends InstrumentationSpecification { "$SemanticAttributes.HTTP_HOST" "localhost:${app.bindPort}" "$SemanticAttributes.HTTP_TARGET" "/$path" "$SemanticAttributes.HTTP_ROUTE" "/$route" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } if (hasHandlerSpan()) { diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpAttributesGetter.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpAttributesGetter.java index 766bc020e5..b9e0c47d1d 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpAttributesGetter.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpAttributesGetter.java @@ -54,12 +54,6 @@ enum RatpackHttpAttributesGetter implements HttpServerAttributesGetter responseHeader(Request request, Response response, String name) { return response.getHeaders().getAll(name); diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpClientAttributesGetter.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpClientAttributesGetter.java index d92e7be2e9..4ceb3ccf1f 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpClientAttributesGetter.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/RatpackHttpClientAttributesGetter.java @@ -38,23 +38,11 @@ enum RatpackHttpClientAttributesGetter return requestSpec.getHeaders().getAll(name); } - @Nullable - @Override - public Long requestContentLength(RequestSpec requestSpec, @Nullable HttpResponse httpResponse) { - return null; - } - @Override public Integer statusCode(RequestSpec requestSpec, HttpResponse httpResponse) { return httpResponse.getStatusCode(); } - @Nullable - @Override - public Long responseContentLength(RequestSpec requestSpec, HttpResponse httpResponse) { - return null; - } - @Override public List responseHeader( RequestSpec requestSpec, HttpResponse httpResponse, String name) { diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java index 6db0c8ec83..de1be63cd0 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyHttpClientAttributesGetter.java @@ -74,24 +74,11 @@ final class ReactorNettyHttpClientAttributesGetter return request.headers().getAll(name); } - @Nullable - @Override - public Long requestContentLength( - HttpClientConfig request, @Nullable HttpClientResponse response) { - return null; - } - @Override public Integer statusCode(HttpClientConfig request, HttpClientResponse response) { return response.status().code(); } - @Nullable - @Override - public Long responseContentLength(HttpClientConfig request, HttpClientResponse response) { - return null; - } - @Override public List responseHeader( HttpClientConfig request, HttpClientResponse response, String name) { diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.groovy b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.groovy index c982447dbb..4c9415d747 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.groovy +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyClientSslTest.groovy @@ -148,6 +148,7 @@ class ReactorNettyClientSslTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_URL" uri "$SemanticAttributes.HTTP_FLAVOR" HTTP_1_1 "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "$SemanticAttributes.NET_PEER_NAME" "localhost" "$SemanticAttributes.NET_PEER_PORT" server.httpsPort() "$SemanticAttributes.NET_PEER_IP" "127.0.0.1" diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.groovy b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.groovy index 859e4dbecd..c7e5206e28 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.groovy +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/test/groovy/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/ReactorNettyConnectionSpanTest.groovy @@ -71,6 +71,7 @@ class ReactorNettyConnectionSpanTest extends InstrumentationSpecification implem "$SemanticAttributes.HTTP_URL" uri "$SemanticAttributes.HTTP_FLAVOR" HTTP_1_1 "$SemanticAttributes.HTTP_STATUS_CODE" 200 + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "$SemanticAttributes.NET_PEER_NAME" "localhost" "$SemanticAttributes.NET_PEER_PORT" server.httpPort() "$SemanticAttributes.NET_PEER_IP" "127.0.0.1" diff --git a/instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/RestletHttpAttributesGetter.java b/instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/RestletHttpAttributesGetter.java index a84cf39204..c7f4aca1ae 100644 --- a/instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/RestletHttpAttributesGetter.java +++ b/instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/RestletHttpAttributesGetter.java @@ -57,12 +57,6 @@ enum RestletHttpAttributesGetter implements HttpServerAttributesGetter responseHeader(Request request, Response response, String name) { Form headers = getHeaders(response); diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHttpAttributesGetter.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHttpAttributesGetter.java index d2105f2bbc..547427bc69 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHttpAttributesGetter.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletHttpAttributesGetter.java @@ -59,12 +59,6 @@ public enum RestletHttpAttributesGetter implements HttpServerAttributesGetter responseHeader(Request request, Response response, String name) { Series headers = getHeaders(response); diff --git a/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/Servlet2Accessor.java b/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/Servlet2Accessor.java index c4fd3176f5..6325f265e1 100644 --- a/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/Servlet2Accessor.java +++ b/instrumentation/servlet/servlet-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v2_2/Servlet2Accessor.java @@ -35,11 +35,6 @@ public class Servlet2Accessor extends JavaxServletAccessor throw new UnsupportedOperationException(); } - @Override - public String getResponseHeader(HttpServletResponse httpServletResponse, String name) { - return null; - } - @Override public List getResponseHeaderValues( HttpServletResponse httpServletResponse, String name) { diff --git a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Accessor.java b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Accessor.java index 481739261f..68514bdc65 100644 --- a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Accessor.java +++ b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3Accessor.java @@ -43,11 +43,6 @@ public class Servlet3Accessor extends JavaxServletAccessor return response.getStatus(); } - @Override - public String getResponseHeader(HttpServletResponse response, String name) { - return response.getHeader(name); - } - @Override public List getResponseHeaderValues(HttpServletResponse response, String name) { Collection values = response.getHeaders(name); diff --git a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/Servlet5Accessor.java b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/Servlet5Accessor.java index 2109e0fe24..7d56896c38 100644 --- a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/Servlet5Accessor.java +++ b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/Servlet5Accessor.java @@ -35,16 +35,6 @@ public class Servlet5Accessor implements ServletAccessor getResponseHeaderValues(HttpServletResponse response, String name) { Collection values = response.getHeaders(name); diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletAccessor.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletAccessor.java index 056b70a1e9..6d24c11fb3 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletAccessor.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletAccessor.java @@ -23,10 +23,6 @@ public interface ServletAccessor { String getRequestScheme(REQUEST request); - String getRequestServerName(REQUEST request); - - int getRequestServerPort(REQUEST request); - String getRequestUri(REQUEST request); String getRequestQueryString(REQUEST request); @@ -57,15 +53,11 @@ public interface ServletAccessor { Integer getRequestRemotePort(REQUEST request); - int getRequestContentLength(REQUEST request); - void addRequestAsyncListener( REQUEST request, ServletAsyncListener listener, Object response); int getResponseStatus(RESPONSE response); - String getResponseHeader(RESPONSE response, String name); - List getResponseHeaderValues(RESPONSE response, String name); boolean isResponseCommitted(RESPONSE response); diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHttpAttributesGetter.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHttpAttributesGetter.java index ffb793c959..d686337d13 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHttpAttributesGetter.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletHttpAttributesGetter.java @@ -48,18 +48,6 @@ public class ServletHttpAttributesGetter return accessor.getRequestHeaderValues(requestContext.request(), name); } - @Override - @Nullable - public Long requestContentLength( - ServletRequestContext requestContext, - @Nullable ServletResponseContext responseContext) { - int contentLength = accessor.getRequestContentLength(requestContext.request()); - if (contentLength > -1) { - return (long) contentLength; - } - return null; - } - @Override @Nullable public String flavor(ServletRequestContext requestContext) { @@ -91,22 +79,6 @@ public class ServletHttpAttributesGetter return accessor.getResponseStatus(response); } - @Override - @Nullable - public Long responseContentLength( - ServletRequestContext requestContext, - ServletResponseContext responseContext) { - String contentLength = accessor.getResponseHeader(responseContext.response(), "Content-Length"); - if (contentLength != null) { - try { - return Long.valueOf(contentLength); - } catch (NumberFormatException ignored) { - // ignore - } - } - return null; - } - @Override public List responseHeader( ServletRequestContext requestContext, diff --git a/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java b/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java index b37c17f326..db1a619809 100644 --- a/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java +++ b/instrumentation/servlet/servlet-javax-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/javax/JavaxServletAccessor.java @@ -25,16 +25,6 @@ public abstract class JavaxServletAccessor implements ServletAccessor implements ServletAccessor responseHeader( HttpRequest httpRequest, ClientHttpResponse clientHttpResponse, String name) { diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy index bc60631e43..2ad561dd9c 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/test/groovy/SpringWebfluxTest.groovy @@ -92,6 +92,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" urlPathWithVariables + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -159,6 +161,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" urlPathWithVariables + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -246,6 +250,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" urlPathWithVariables + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -311,6 +317,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/**" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -355,6 +363,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/echo" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -404,6 +414,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" urlPathWithVariables + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -468,6 +480,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/double-greet-redirect" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -500,6 +514,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/double-greet" + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { @@ -547,6 +563,8 @@ class SpringWebfluxTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" urlPathWithVariables + "$SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH" { it == null || it instanceof Long } + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" { it == null || it instanceof Long } } } span(1) { diff --git a/instrumentation/spring/spring-webflux-5.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/SpringWebfluxHttpAttributesGetter.java b/instrumentation/spring/spring-webflux-5.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/SpringWebfluxHttpAttributesGetter.java index 07eaf9349b..c39f77f71d 100644 --- a/instrumentation/spring/spring-webflux-5.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/SpringWebfluxHttpAttributesGetter.java +++ b/instrumentation/spring/spring-webflux-5.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/client/SpringWebfluxHttpAttributesGetter.java @@ -55,12 +55,6 @@ enum SpringWebfluxHttpAttributesGetter return request.headers().getOrDefault(name, emptyList()); } - @Nullable - @Override - public Long requestContentLength(ClientRequest request, @Nullable ClientResponse response) { - return null; - } - @Override public Integer statusCode(ClientRequest request, ClientResponse response) { if (RAW_STATUS_CODE != null) { @@ -76,12 +70,6 @@ enum SpringWebfluxHttpAttributesGetter return response.statusCode().value(); } - @Nullable - @Override - public Long responseContentLength(ClientRequest request, ClientResponse response) { - return null; - } - @Override public List responseHeader(ClientRequest request, ClientResponse response, String name) { return response.headers().header(name); diff --git a/instrumentation/spring/spring-webmvc-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/SpringWebMvcHttpAttributesGetter.java b/instrumentation/spring/spring-webmvc-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/SpringWebMvcHttpAttributesGetter.java index f666b844ef..3aafabebb1 100644 --- a/instrumentation/spring/spring-webmvc-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/SpringWebMvcHttpAttributesGetter.java +++ b/instrumentation/spring/spring-webmvc-3.1/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/SpringWebMvcHttpAttributesGetter.java @@ -31,13 +31,6 @@ enum SpringWebMvcHttpAttributesGetter return headers == null ? Collections.emptyList() : Collections.list(headers); } - @Override - @Nullable - public Long requestContentLength( - HttpServletRequest request, @Nullable HttpServletResponse response) { - return null; - } - @Override @Nullable public String flavor(HttpServletRequest request) { @@ -51,12 +44,6 @@ enum SpringWebMvcHttpAttributesGetter return null; } - @Override - @Nullable - public Long responseContentLength(HttpServletRequest request, HttpServletResponse response) { - return null; - } - @Override public List responseHeader( HttpServletRequest request, HttpServletResponse response, String name) { diff --git a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatHttpAttributesGetter.java b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatHttpAttributesGetter.java index 5acfbaa3e7..fc674eed1e 100644 --- a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatHttpAttributesGetter.java +++ b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatHttpAttributesGetter.java @@ -43,13 +43,6 @@ public class TomcatHttpAttributesGetter implements HttpServerAttributesGetter responseHeader(Request request, Response response, String name) { return Collections.list(response.getMimeHeaders().values(name)); diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpAttributesGetter.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpAttributesGetter.java index 16e1cb60da..7250f8f7dd 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpAttributesGetter.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowHttpAttributesGetter.java @@ -26,14 +26,6 @@ public class UndertowHttpAttributesGetter return values == null ? Collections.emptyList() : values; } - @Override - @Nullable - public Long requestContentLength( - HttpServerExchange exchange, @Nullable HttpServerExchange unused) { - long requestContentLength = exchange.getRequestContentLength(); - return requestContentLength != -1 ? requestContentLength : null; - } - @Override public String flavor(HttpServerExchange exchange) { String flavor = exchange.getProtocol().toString(); @@ -49,13 +41,6 @@ public class UndertowHttpAttributesGetter return exchange.getStatusCode(); } - @Override - @Nullable - public Long responseContentLength(HttpServerExchange exchange, HttpServerExchange unused) { - long responseContentLength = exchange.getResponseContentLength(); - return responseContentLength != -1 ? responseContentLength : null; - } - @Override public List responseHeader( HttpServerExchange exchange, HttpServerExchange unused, String name) { diff --git a/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerDispatchTest.groovy b/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerDispatchTest.groovy index e262fb3cfb..40d3a14a11 100644 --- a/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerDispatchTest.groovy +++ b/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerDispatchTest.groovy @@ -101,7 +101,6 @@ class UndertowServerDispatchTest extends HttpServerTest implements Age Set> httpAttributes(ServerEndpoint endpoint) { def attributes = super.httpAttributes(endpoint) attributes.remove(SemanticAttributes.HTTP_ROUTE) - attributes.add(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) attributes } } diff --git a/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerTest.groovy b/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerTest.groovy index a07e616c23..f61b51b70d 100644 --- a/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerTest.groovy +++ b/instrumentation/undertow-1.4/javaagent/src/test/groovy/UndertowServerTest.groovy @@ -110,7 +110,6 @@ class UndertowServerTest extends HttpServerTest implements AgentTestTr Set> httpAttributes(ServerEndpoint endpoint) { def attributes = super.httpAttributes(endpoint) attributes.remove(SemanticAttributes.HTTP_ROUTE) - attributes.add(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) attributes } diff --git a/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java b/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java index 44fe6b6f22..542c8cd28e 100644 --- a/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java +++ b/instrumentation/vertx/vertx-http-client/vertx-http-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/client/AbstractVertxHttpAttributesGetter.java @@ -25,24 +25,11 @@ public abstract class AbstractVertxHttpAttributesGetter return request.headers().getAll(name); } - @Nullable - @Override - public Long requestContentLength( - HttpClientRequest request, @Nullable HttpClientResponse response) { - return null; - } - @Override public Integer statusCode(HttpClientRequest request, HttpClientResponse response) { return response.statusCode(); } - @Nullable - @Override - public Long responseContentLength(HttpClientRequest request, HttpClientResponse response) { - return null; - } - @Override public List responseHeader( HttpClientRequest request, HttpClientResponse response, String name) { diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy index bf748c67f6..f0baff9514 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/latestDepTest/groovy/VertxReactivePropagationTest.groovy @@ -75,6 +75,7 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/listProducts" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(1) { @@ -166,6 +167,7 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/listProducts" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "${TEST_REQUEST_ID_ATTRIBUTE}" requestId } } diff --git a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy index bf748c67f6..f0baff9514 100644 --- a/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy +++ b/instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/groovy/VertxReactivePropagationTest.groovy @@ -75,6 +75,7 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/listProducts" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long } } span(1) { @@ -166,6 +167,7 @@ class VertxReactivePropagationTest extends AgentInstrumentationSpecification { "$SemanticAttributes.HTTP_FLAVOR" "1.1" "$SemanticAttributes.HTTP_USER_AGENT" String "$SemanticAttributes.HTTP_ROUTE" "/listProducts" + "$SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH" Long "${TEST_REQUEST_ID_ATTRIBUTE}" requestId } } diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java index 2e493720e6..61e56b1c55 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpClientTest.java @@ -978,13 +978,13 @@ public abstract class AbstractHttpClientTest { actual -> assertThat(actual).startsWith(userAgent)); } } - if (httpClientAttributes.contains(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH)) { + if (attrs.get(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) != null) { assertThat(attrs) .hasEntrySatisfying( SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, length -> assertThat(length).isNotNegative()); } - if (httpClientAttributes.contains(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH)) { + if (attrs.get(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) != null) { assertThat(attrs) .hasEntrySatisfying( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java index 37e99a12ca..cba01596f1 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java @@ -560,8 +560,7 @@ public abstract class AbstractHttpServerTest { .isInstanceOf(Long.class) .isNotEqualTo(Long.valueOf(port))); } - if (httpAttributes.contains(SemanticAttributes.NET_PEER_IP) - || attrs.get(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) != null) { + if (httpAttributes.contains(SemanticAttributes.NET_PEER_IP)) { assertThat(attrs) .containsEntry(SemanticAttributes.NET_PEER_IP, options.peerIp.apply(endpoint)); } @@ -595,19 +594,17 @@ public abstract class AbstractHttpServerTest { + (endpoint == QUERY_PARAM ? "?" + endpoint.body : "")); } - if (httpAttributes.contains(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) - || attrs.get(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) != null) { + if (attrs.get(SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH) != null) { assertThat(attrs) .hasEntrySatisfying( SemanticAttributes.HTTP_REQUEST_CONTENT_LENGTH, - entry -> assertThat(entry).isInstanceOf(Long.class)); + entry -> assertThat(entry).isNotNegative()); } - if (httpAttributes.contains(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) - || attrs.get(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) != null) { + if (attrs.get(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH) != null) { assertThat(attrs) .hasEntrySatisfying( SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, - entry -> assertThat(entry).isInstanceOf(Long.class)); + entry -> assertThat(entry).isNotNegative()); } if (httpAttributes.contains(SemanticAttributes.HTTP_SERVER_NAME)) { assertThat(attrs) @@ -615,10 +612,8 @@ public abstract class AbstractHttpServerTest { SemanticAttributes.HTTP_SERVER_NAME, entry -> assertThat(entry).isInstanceOf(String.class)); } - if (httpAttributes.contains(SemanticAttributes.HTTP_ROUTE)) { - if (expectedRoute != null) { - assertThat(attrs).containsEntry(SemanticAttributes.HTTP_ROUTE, expectedRoute); - } + if (httpAttributes.contains(SemanticAttributes.HTTP_ROUTE) && expectedRoute != null) { + assertThat(attrs).containsEntry(SemanticAttributes.HTTP_ROUTE, expectedRoute); } if (endpoint == CAPTURE_HEADERS) {