From f36e3c9667aa8a3acc190ebe3c5ed7c33147efce Mon Sep 17 00:00:00 2001 From: Shashank Patidar Date: Sat, 25 Feb 2023 01:25:04 +0530 Subject: [PATCH 1/5] add blocking for req body in netty 4.0 --- .../hypertrace/netty/v4_0/AttributeKeys.java | 4 ++ .../HttpServerBlockingRequestHandler.java | 10 +++++ ...tractNetty40ServerInstrumentationTest.java | 37 +++++++++++++++++++ .../testing/AbstractInstrumenterTest.java | 27 ++++++++++++++ .../agent/testing/mockfilter/MockFilter.java | 12 +++++- 5 files changed, 89 insertions(+), 1 deletion(-) diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java index 6f9750edd..6e913158a 100644 --- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java +++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java @@ -33,4 +33,8 @@ public class AttributeKeys { public static final AttributeKey> REQUEST_HEADERS = io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.attributeKey( AttributeKeys.class.getName() + ".request-headers"); + + public static final AttributeKey REQUEST = + io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.attributeKey( + "io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.http-server-request"); } diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java index ce5987de7..11ef94be9 100644 --- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java +++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java @@ -21,12 +21,14 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.codec.http.DefaultFullHttpResponse; +import io.netty.handler.codec.http.HttpContent; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.util.Attribute; import io.netty.util.ReferenceCountUtil; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; +import io.opentelemetry.javaagent.instrumentation.netty.common.HttpRequestAndChannel; import io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_0.AttributeKeys; import java.util.Map; import org.hypertrace.agent.filter.FilterRegistry; @@ -55,6 +57,14 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { return; } } + if (msg instanceof HttpContent) { + if (FilterRegistry.getFilter().evaluateRequestBody(span, null, null)) { + Attribute requestAttr = channel.attr(AttributeKeys.REQUEST); + HttpRequest req = ((HttpRequestAndChannel)(requestAttr.get())).request(); + forbidden(ctx, req); + return; + } + } ctx.fireChannelRead(msg); } diff --git a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java index 6d3911fb1..c10a2aa3d 100644 --- a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java +++ b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java @@ -25,10 +25,13 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; + +import okhttp3.MediaType; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okio.Buffer; +import okio.BufferedSink; import org.hypertrace.agent.core.instrumentation.HypertraceSemanticAttributes; import org.hypertrace.agent.testing.AbstractInstrumenterTest; import org.junit.jupiter.api.AfterEach; @@ -171,5 +174,39 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio spanData .getAttributes() .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); + + RequestBody requestBody = blockedRequestBody(true, 3000, 75); + Request request2 = + new Request.Builder() + .url(String.format("http://localhost:%d/post", port)) + .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) + .post(requestBody) + .build(); + + try (Response response = httpClient.newCall(request2).execute()) { + Assertions.assertEquals(403, response.code()); + Assertions.assertTrue(response.body().string().isEmpty()); + } + + List> traces2 = TEST_WRITER.getTraces(); + TEST_WRITER.waitForTraces(2); + Assertions.assertEquals(2, traces2.size()); + List trace2 = traces2.get(1); + Assertions.assertEquals(1, trace2.size()); + SpanData spanData2 = trace2.get(0); + + Assertions.assertEquals( + REQUEST_HEADER_VALUE, + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); + Assertions.assertNull( + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); + Assertions.assertNull( + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); } } diff --git a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java index 360a6e643..b11002878 100644 --- a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java +++ b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java @@ -155,4 +155,31 @@ public void writeTo(BufferedSink sink) throws IOException { } }; } + + public static RequestBody blockedRequestBody( + final boolean chunked, final long size, final int writeSize) { + final byte[] buffer = new byte[writeSize]; + Arrays.fill(buffer, (byte) 'x'); + + return new RequestBody() { + @Override + public MediaType contentType() { + return MediaType.get("application/json; charset=utf-8"); + } + + @Override + public long contentLength() throws IOException { + return chunked ? -1L : size; + } + + @Override + public void writeTo(BufferedSink sink) throws IOException { + sink.write("{\"block=true\":\"".getBytes()); + for (int count = 0; count < size; count += writeSize) { + sink.write(buffer, 0, (int) Math.min(size - count, writeSize)); + } + sink.write("\"}".getBytes()); + } + }; + } } diff --git a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java index fb975afc6..4b8e1f763 100644 --- a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java +++ b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java @@ -16,8 +16,11 @@ package org.hypertrace.agent.testing.mockfilter; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Span; import java.util.Map; + +import io.opentelemetry.sdk.trace.ReadableSpan; import org.hypertrace.agent.filter.api.Filter; /** Mock filter, blocks execution if an attribute with "mockblock" key is present. */ @@ -37,6 +40,13 @@ public boolean evaluateRequestHeaders(Span span, Map headers) { @Override public boolean evaluateRequestBody(Span span, String body, Map headers) { - return body.contains("block=true"); + if (body != null && body.contains("block=true")) { + return true; + } + if (span instanceof ReadableSpan) { + String spanReqBody = ((ReadableSpan)span).getAttribute(AttributeKey.stringKey("http.request.body")); + return spanReqBody != null && spanReqBody.contains("block=true"); + } + return false; } } From 80d82f1e7ef14ba3326738fccc1bfc918066ae8f Mon Sep 17 00:00:00 2001 From: Shashank Patidar Date: Sat, 25 Feb 2023 01:43:57 +0530 Subject: [PATCH 2/5] add blocking for req body in netty 4.1 --- .../hypertrace/netty/v4_1/AttributeKeys.java | 3 ++ .../HttpServerBlockingRequestHandler.java | 11 ++++++ ...tractNetty41ServerInstrumentationTest.java | 34 +++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java index 2bc814247..af56bff4e 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java @@ -31,4 +31,7 @@ public class AttributeKeys { public static final AttributeKey> REQUEST_HEADERS = AttributeKey.valueOf(AttributeKeys.class, "request-headers"); + + public static final AttributeKey REQUEST = + AttributeKey.valueOf("io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyServerSingletons#http-server-request"); } diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java index bf60b1934..55e965af6 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java @@ -21,6 +21,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.codec.http.DefaultFullHttpResponse; +import io.netty.handler.codec.http.HttpContent; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.util.Attribute; @@ -29,6 +30,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_1.AttributeKeys; import java.util.Map; + +import io.opentelemetry.javaagent.instrumentation.netty.common.HttpRequestAndChannel; import org.hypertrace.agent.filter.FilterRegistry; public class HttpServerBlockingRequestHandler extends ChannelInboundHandlerAdapter { @@ -55,6 +58,14 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { return; } } + if (msg instanceof HttpContent) { + if (FilterRegistry.getFilter().evaluateRequestBody(span, null, null)) { + Attribute requestAttr = channel.attr(AttributeKeys.REQUEST); + HttpRequest req = ((HttpRequestAndChannel)(requestAttr.get())).request(); + forbidden(ctx, req); + return; + } + } ctx.fireChannelRead(msg); } diff --git a/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java b/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java index 4179cd176..278a767b3 100644 --- a/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java +++ b/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java @@ -171,5 +171,39 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio spanData .getAttributes() .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); + + RequestBody requestBody = blockedRequestBody(true, 3000, 75); + Request request2 = + new Request.Builder() + .url(String.format("http://localhost:%d/post", port)) + .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) + .post(requestBody) + .build(); + + try (Response response = httpClient.newCall(request2).execute()) { + Assertions.assertEquals(403, response.code()); + Assertions.assertTrue(response.body().string().isEmpty()); + } + + List> traces2 = TEST_WRITER.getTraces(); + TEST_WRITER.waitForTraces(2); + Assertions.assertEquals(2, traces2.size()); + List trace2 = traces2.get(1); + Assertions.assertEquals(1, trace2.size()); + SpanData spanData2 = trace2.get(0); + + Assertions.assertEquals( + REQUEST_HEADER_VALUE, + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); + Assertions.assertNull( + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); + Assertions.assertNull( + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); } } From 46d8070b19a74faaa0a323bfed8129d05c311a13 Mon Sep 17 00:00:00 2001 From: Shashank Patidar Date: Sat, 25 Feb 2023 01:48:00 +0530 Subject: [PATCH 3/5] nit: indent --- .../instrumentation/hypertrace/netty/v4_1/AttributeKeys.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java index af56bff4e..2123e964d 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java @@ -33,5 +33,6 @@ public class AttributeKeys { AttributeKey.valueOf(AttributeKeys.class, "request-headers"); public static final AttributeKey REQUEST = - AttributeKey.valueOf("io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyServerSingletons#http-server-request"); + AttributeKey.valueOf( + "io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyServerSingletons#http-server-request"); } From 22293ac48b1eb9096e1550d8751c8aa655f7fc2d Mon Sep 17 00:00:00 2001 From: Shashank Patidar Date: Sat, 25 Feb 2023 01:59:20 +0530 Subject: [PATCH 4/5] nit: remove unused imports --- .../v4_0/server/AbstractNetty40ServerInstrumentationTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java index c10a2aa3d..ffed439f6 100644 --- a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java +++ b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java @@ -26,12 +26,10 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; -import okhttp3.MediaType; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okio.Buffer; -import okio.BufferedSink; import org.hypertrace.agent.core.instrumentation.HypertraceSemanticAttributes; import org.hypertrace.agent.testing.AbstractInstrumenterTest; import org.junit.jupiter.api.AfterEach; From b6e949e3968456cafaa60d925e63f96cc1957aae Mon Sep 17 00:00:00 2001 From: Shashank Patidar Date: Sat, 25 Feb 2023 02:02:24 +0530 Subject: [PATCH 5/5] spotless apply --- .../hypertrace/netty/v4_0/AttributeKeys.java | 4 +-- .../HttpServerBlockingRequestHandler.java | 4 +-- ...tractNetty40ServerInstrumentationTest.java | 31 +++++++++---------- .../hypertrace/netty/v4_1/AttributeKeys.java | 4 +-- .../HttpServerBlockingRequestHandler.java | 5 ++- ...tractNetty41ServerInstrumentationTest.java | 30 +++++++++--------- .../testing/AbstractInstrumenterTest.java | 2 +- .../agent/testing/mockfilter/MockFilter.java | 6 ++-- 8 files changed, 42 insertions(+), 44 deletions(-) diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java index 6e913158a..fc7685ebb 100644 --- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java +++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/AttributeKeys.java @@ -35,6 +35,6 @@ public class AttributeKeys { AttributeKeys.class.getName() + ".request-headers"); public static final AttributeKey REQUEST = - io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.attributeKey( - "io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.http-server-request"); + io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.attributeKey( + "io.opentelemetry.javaagent.instrumentation.netty.v4_0.AttributeKeys.http-server-request"); } diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java index 11ef94be9..294ef0a9c 100644 --- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java +++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/HttpServerBlockingRequestHandler.java @@ -28,8 +28,8 @@ import io.netty.util.ReferenceCountUtil; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; -import io.opentelemetry.javaagent.instrumentation.netty.common.HttpRequestAndChannel; import io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_0.AttributeKeys; +import io.opentelemetry.javaagent.instrumentation.netty.common.HttpRequestAndChannel; import java.util.Map; import org.hypertrace.agent.filter.FilterRegistry; @@ -60,7 +60,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { if (msg instanceof HttpContent) { if (FilterRegistry.getFilter().evaluateRequestBody(span, null, null)) { Attribute requestAttr = channel.attr(AttributeKeys.REQUEST); - HttpRequest req = ((HttpRequestAndChannel)(requestAttr.get())).request(); + HttpRequest req = ((HttpRequestAndChannel) (requestAttr.get())).request(); forbidden(ctx, req); return; } diff --git a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java index ffed439f6..f6283dbc4 100644 --- a/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java +++ b/instrumentation/netty/netty-4.0/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_0/server/AbstractNetty40ServerInstrumentationTest.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; - import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; @@ -175,11 +174,11 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio RequestBody requestBody = blockedRequestBody(true, 3000, 75); Request request2 = - new Request.Builder() - .url(String.format("http://localhost:%d/post", port)) - .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) - .post(requestBody) - .build(); + new Request.Builder() + .url(String.format("http://localhost:%d/post", port)) + .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) + .post(requestBody) + .build(); try (Response response = httpClient.newCall(request2).execute()) { Assertions.assertEquals(403, response.code()); @@ -194,17 +193,17 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio SpanData spanData2 = trace2.get(0); Assertions.assertEquals( - REQUEST_HEADER_VALUE, - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); + REQUEST_HEADER_VALUE, + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); Assertions.assertNull( - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); Assertions.assertNull( - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); } } diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java index 2123e964d..1d4af58f4 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/AttributeKeys.java @@ -33,6 +33,6 @@ public class AttributeKeys { AttributeKey.valueOf(AttributeKeys.class, "request-headers"); public static final AttributeKey REQUEST = - AttributeKey.valueOf( - "io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyServerSingletons#http-server-request"); + AttributeKey.valueOf( + "io.opentelemetry.javaagent.instrumentation.netty.v4_1.server.NettyServerSingletons#http-server-request"); } diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java index 55e965af6..559eb71bc 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/HttpServerBlockingRequestHandler.java @@ -29,9 +29,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_1.AttributeKeys; -import java.util.Map; - import io.opentelemetry.javaagent.instrumentation.netty.common.HttpRequestAndChannel; +import java.util.Map; import org.hypertrace.agent.filter.FilterRegistry; public class HttpServerBlockingRequestHandler extends ChannelInboundHandlerAdapter { @@ -61,7 +60,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { if (msg instanceof HttpContent) { if (FilterRegistry.getFilter().evaluateRequestBody(span, null, null)) { Attribute requestAttr = channel.attr(AttributeKeys.REQUEST); - HttpRequest req = ((HttpRequestAndChannel)(requestAttr.get())).request(); + HttpRequest req = ((HttpRequestAndChannel) (requestAttr.get())).request(); forbidden(ctx, req); return; } diff --git a/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java b/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java index 278a767b3..da205c063 100644 --- a/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java +++ b/instrumentation/netty/netty-4.1/src/test/java/io/opentelemetry/javaagent/instrumentation/hypertrace/netty/v4_1/server/AbstractNetty41ServerInstrumentationTest.java @@ -174,11 +174,11 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio RequestBody requestBody = blockedRequestBody(true, 3000, 75); Request request2 = - new Request.Builder() - .url(String.format("http://localhost:%d/post", port)) - .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) - .post(requestBody) - .build(); + new Request.Builder() + .url(String.format("http://localhost:%d/post", port)) + .header(REQUEST_HEADER_NAME, REQUEST_HEADER_VALUE) + .post(requestBody) + .build(); try (Response response = httpClient.newCall(request2).execute()) { Assertions.assertEquals(403, response.code()); @@ -193,17 +193,17 @@ public void blocking() throws IOException, TimeoutException, InterruptedExceptio SpanData spanData2 = trace2.get(0); Assertions.assertEquals( - REQUEST_HEADER_VALUE, - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); + REQUEST_HEADER_VALUE, + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpRequestHeader(REQUEST_HEADER_NAME))); Assertions.assertNull( - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_HEADER_NAME))); Assertions.assertNull( - spanData2 - .getAttributes() - .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); + spanData2 + .getAttributes() + .get(HypertraceSemanticAttributes.httpResponseHeader(RESPONSE_BODY))); } } diff --git a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java index b11002878..997b52f5c 100644 --- a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java +++ b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java @@ -157,7 +157,7 @@ public void writeTo(BufferedSink sink) throws IOException { } public static RequestBody blockedRequestBody( - final boolean chunked, final long size, final int writeSize) { + final boolean chunked, final long size, final int writeSize) { final byte[] buffer = new byte[writeSize]; Arrays.fill(buffer, (byte) 'x'); diff --git a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java index 4b8e1f763..6ede7c7f2 100644 --- a/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java +++ b/testing-common/src/testFixtures/java/org/hypertrace/agent/testing/mockfilter/MockFilter.java @@ -18,9 +18,8 @@ import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Span; -import java.util.Map; - import io.opentelemetry.sdk.trace.ReadableSpan; +import java.util.Map; import org.hypertrace.agent.filter.api.Filter; /** Mock filter, blocks execution if an attribute with "mockblock" key is present. */ @@ -44,7 +43,8 @@ public boolean evaluateRequestBody(Span span, String body, Map h return true; } if (span instanceof ReadableSpan) { - String spanReqBody = ((ReadableSpan)span).getAttribute(AttributeKey.stringKey("http.request.body")); + String spanReqBody = + ((ReadableSpan) span).getAttribute(AttributeKey.stringKey("http.request.body")); return spanReqBody != null && spanReqBody.contains("block=true"); } return false;