From c63a9335298e35ff90ef9594bd8447760040dcb9 Mon Sep 17 00:00:00 2001 From: "shalk(xiao kun)" Date: Tue, 3 Dec 2024 14:07:17 +0800 Subject: [PATCH 1/2] convert vertx-web-3.0 test case from groovy to java --- .../server/VertxLatestHttpServerTest.java} | 13 ++- .../server/VertxHttpServerTest.java} | 7 +- .../server/AbstractVertxHttpServerTest.groovy | 83 ----------------- .../server/AbstractVertxHttpServerTest.java | 88 +++++++++++++++++++ 4 files changed, 100 insertions(+), 91 deletions(-) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/{groovy/server/VertxLatestHttpServerTest.groovy => java/server/VertxLatestHttpServerTest.java} (51%) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/{groovy/server/VertxHttpServerTest.groovy => java/server/VertxHttpServerTest.java} (72%) delete mode 100644 instrumentation/vertx/vertx-web-3.0/testing/src/main/groovy/server/AbstractVertxHttpServerTest.groovy create mode 100644 instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/groovy/server/VertxLatestHttpServerTest.groovy b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java similarity index 51% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/groovy/server/VertxLatestHttpServerTest.groovy rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java index db274a9d8bed..2693c14725b0 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/groovy/server/VertxLatestHttpServerTest.groovy +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java @@ -3,15 +3,20 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server +package server; - -import io.vertx.core.AbstractVerticle +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Vertx; class VertxLatestHttpServerTest extends AbstractVertxHttpServerTest { @Override protected Class verticle() { - return VertxLatestWebServer + return VertxLatestWebServer.class; + } + + @Override + protected void stopServer(Vertx server) throws Exception { + server.close(); } } diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/groovy/server/VertxHttpServerTest.groovy b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java similarity index 72% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/groovy/server/VertxHttpServerTest.groovy rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java index 722f7b468691..8da399021e64 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/groovy/server/VertxHttpServerTest.groovy +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java @@ -3,14 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server +package server; -import io.vertx.core.AbstractVerticle +import io.vertx.core.AbstractVerticle; class VertxHttpServerTest extends AbstractVertxHttpServerTest { - @Override protected Class verticle() { - return VertxWebServer + return VertxWebServer.class; } } diff --git a/instrumentation/vertx/vertx-web-3.0/testing/src/main/groovy/server/AbstractVertxHttpServerTest.groovy b/instrumentation/vertx/vertx-web-3.0/testing/src/main/groovy/server/AbstractVertxHttpServerTest.groovy deleted file mode 100644 index 3aaab72fe8a4..000000000000 --- a/instrumentation/vertx/vertx-web-3.0/testing/src/main/groovy/server/AbstractVertxHttpServerTest.groovy +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package server - -import io.opentelemetry.instrumentation.api.internal.HttpConstants -import io.opentelemetry.instrumentation.test.AgentTestTrait -import io.opentelemetry.instrumentation.test.base.HttpServerTest -import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint -import io.vertx.core.AbstractVerticle -import io.vertx.core.DeploymentOptions -import io.vertx.core.Vertx -import io.vertx.core.VertxOptions -import io.vertx.core.json.JsonObject - -import java.util.concurrent.CompletableFuture -import java.util.concurrent.TimeUnit - -import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION - -abstract class AbstractVertxHttpServerTest extends HttpServerTest implements AgentTestTrait { - @Override - Vertx startServer(int port) { - Vertx server = Vertx.vertx(new VertxOptions() - // Useful for debugging: - // .setBlockedThreadCheckInterval(Integer.MAX_VALUE) - ) - CompletableFuture future = new CompletableFuture<>() - server.deployVerticle(verticle().getName(), - new DeploymentOptions() - .setConfig(new JsonObject().put(AbstractVertxWebServer.CONFIG_HTTP_SERVER_PORT, port)) - .setInstances(3)) { res -> - if (!res.succeeded()) { - throw new IllegalStateException("Cannot deploy server Verticle", res.cause()) - } - future.complete(null) - } - - future.get(30, TimeUnit.SECONDS) - return server - } - - protected abstract Class verticle() - - @Override - void stopServer(Vertx server) { - server.close() - } - - @Override - boolean testPathParam() { - return true - } - - @Override - boolean verifyServerSpanEndTime() { - // server spans are ended inside of the controller spans - return false - } - - @Override - String getContextPath() { - "/vertx-app" - } - - @Override - Throwable expectedException() { - new IllegalStateException(EXCEPTION.body) - } - - @Override - String expectedHttpRoute(ServerEndpoint endpoint, String method) { - if (method == HttpConstants._OTHER) { - return getContextPath() + endpoint.path - } - if (endpoint == ServerEndpoint.NOT_FOUND) { - return getContextPath() - } - return super.expectedHttpRoute(endpoint, method) - } -} diff --git a/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java new file mode 100644 index 000000000000..4a1a95173ff4 --- /dev/null +++ b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java @@ -0,0 +1,88 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package server; + +import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION; + +import io.opentelemetry.instrumentation.api.internal.HttpConstants; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest; +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; +import io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.DeploymentOptions; +import io.vertx.core.Vertx; +import io.vertx.core.VertxOptions; +import io.vertx.core.json.JsonObject; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.junit.jupiter.api.extension.RegisterExtension; + +abstract class AbstractVertxHttpServerTest extends AbstractHttpServerTest { + + @RegisterExtension + static final InstrumentationExtension testing = HttpServerInstrumentationExtension.forAgent(); + + @Override + protected void configure(HttpServerTestOptions options) { + options.setTestPathParam(true); + // server spans are ended inside of the controller spans + options.setVerifyServerSpanEndTime(false); + options.setContextPath("/vertx-app"); + options.setExpectedException(new IllegalStateException(EXCEPTION.getBody())); + super.configure(options); + } + + @Override + public String expectedHttpRoute(ServerEndpoint endpoint, String method) { + if (Objects.equals(method, HttpConstants._OTHER)) { + return getContextPath() + endpoint.getPath(); + } + if (Objects.equals(endpoint, ServerEndpoint.NOT_FOUND)) { + return getContextPath(); + } + return super.expectedHttpRoute(endpoint, method); + } + + @Override + protected Vertx setupServer() + throws ExecutionException, InterruptedException, TimeoutException, NoSuchMethodException { + Vertx server = + Vertx.vertx( + new VertxOptions() + // Useful for debugging: + // .setBlockedThreadCheckInterval(Integer.MAX_VALUE) + ); + CompletableFuture future = new CompletableFuture<>(); + + server.deployVerticle( + verticle().getName(), + new DeploymentOptions() + .setConfig( + new JsonObject().put(AbstractVertxWebServer.CONFIG_HTTP_SERVER_PORT, (Object) port)) + .setInstances(3), + res -> { + if (!res.succeeded()) { + throw new IllegalStateException("Cannot deploy server Verticle", res.cause()); + } + future.complete(null); + }); + + future.get(30, TimeUnit.SECONDS); + return server; + } + + @Override + protected void stopServer(Vertx server) throws Exception { + server.close(); + } + + protected abstract Class verticle(); +} From 6dea1167781fb51c1839720ff11a7d77ad9b87af Mon Sep 17 00:00:00 2001 From: "shalk(xiao kun)" Date: Wed, 4 Dec 2024 21:17:13 +0800 Subject: [PATCH 2/2] refine ut --- .../vertx}/VertxLatestHttpServerTest.java | 2 +- .../vertx}/VertxLatestWebServer.java | 2 +- .../vertx}/VertxHttpServerTest.java | 2 +- .../vertx}/VertxWebServer.java | 2 +- .../vertx}/AbstractVertxHttpServerTest.java | 28 ++++++++----------- .../vertx}/AbstractVertxWebServer.java | 2 +- 6 files changed, 17 insertions(+), 21 deletions(-) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/VertxLatestHttpServerTest.java (88%) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/VertxLatestWebServer.java (93%) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/VertxHttpServerTest.java (83%) rename instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/VertxWebServer.java (93%) rename instrumentation/vertx/vertx-web-3.0/testing/src/main/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/AbstractVertxHttpServerTest.java (82%) rename instrumentation/vertx/vertx-web-3.0/testing/src/main/java/{server => io/opentelemetry/javaagent/instrumentation/vertx}/AbstractVertxWebServer.java (98%) diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestHttpServerTest.java similarity index 88% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestHttpServerTest.java index 2693c14725b0..f13cff89107c 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestHttpServerTest.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestHttpServerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; +package io.opentelemetry.javaagent.instrumentation.vertx; import io.vertx.core.AbstractVerticle; import io.vertx.core.Vertx; diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestWebServer.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestWebServer.java similarity index 93% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestWebServer.java rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestWebServer.java index af850c913aeb..fa268df6cea7 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/server/VertxLatestWebServer.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/latestDepTest/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxLatestWebServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; +package io.opentelemetry.javaagent.instrumentation.vertx; import io.vertx.core.Promise; import io.vertx.core.http.HttpServerResponse; diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxHttpServerTest.java similarity index 83% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxHttpServerTest.java index 8da399021e64..1281d3e1c546 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxHttpServerTest.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxHttpServerTest.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; +package io.opentelemetry.javaagent.instrumentation.vertx; import io.vertx.core.AbstractVerticle; diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxWebServer.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebServer.java similarity index 93% rename from instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxWebServer.java rename to instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebServer.java index aad9975810b2..860af9122088 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/server/VertxWebServer.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/version3Test/java/io/opentelemetry/javaagent/instrumentation/vertx/VertxWebServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; +package io.opentelemetry.javaagent.instrumentation.vertx; import io.vertx.core.Future; import io.vertx.core.http.HttpServerResponse; diff --git a/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxHttpServerTest.java similarity index 82% rename from instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java rename to instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxHttpServerTest.java index 4a1a95173ff4..72a20a538950 100644 --- a/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxHttpServerTest.java +++ b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxHttpServerTest.java @@ -3,9 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; - -import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION; +package io.opentelemetry.javaagent.instrumentation.vertx; import io.opentelemetry.instrumentation.api.internal.HttpConstants; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -32,23 +30,21 @@ abstract class AbstractVertxHttpServerTest extends AbstractHttpServerTest @Override protected void configure(HttpServerTestOptions options) { + super.configure(options); options.setTestPathParam(true); // server spans are ended inside of the controller spans options.setVerifyServerSpanEndTime(false); options.setContextPath("/vertx-app"); - options.setExpectedException(new IllegalStateException(EXCEPTION.getBody())); - super.configure(options); - } - - @Override - public String expectedHttpRoute(ServerEndpoint endpoint, String method) { - if (Objects.equals(method, HttpConstants._OTHER)) { - return getContextPath() + endpoint.getPath(); - } - if (Objects.equals(endpoint, ServerEndpoint.NOT_FOUND)) { - return getContextPath(); - } - return super.expectedHttpRoute(endpoint, method); + options.setExpectedHttpRoute( + (endpoint, method) -> { + if (Objects.equals(method, HttpConstants._OTHER)) { + return getContextPath() + endpoint.getPath(); + } + if (Objects.equals(endpoint, ServerEndpoint.NOT_FOUND)) { + return getContextPath(); + } + return super.expectedHttpRoute(endpoint, method); + }); } @Override diff --git a/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxWebServer.java b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxWebServer.java similarity index 98% rename from instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxWebServer.java rename to instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxWebServer.java index d312dff8f274..8546e12e2966 100644 --- a/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/server/AbstractVertxWebServer.java +++ b/instrumentation/vertx/vertx-web-3.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/AbstractVertxWebServer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package server; +package io.opentelemetry.javaagent.instrumentation.vertx; import static io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest.controller; import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.CAPTURE_HEADERS;