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/server/VertxLatestWebServer.java index db82adec66..af850c913a 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/server/VertxLatestWebServer.java @@ -25,7 +25,9 @@ public class VertxLatestWebServer extends AbstractVertxWebServer { public void start(Promise startPromise) { int port = config().getInteger(CONFIG_HTTP_SERVER_PORT); Router router = buildRouter(); + Router mainRouter = Router.router(vertx); + mainRouter.route("/vertx-app/*").subRouter(router); - vertx.createHttpServer().requestHandler(router).listen(port, it -> startPromise.complete()); + vertx.createHttpServer().requestHandler(mainRouter).listen(port, it -> startPromise.complete()); } } diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java index a7c7592475..0caddc3dae 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java @@ -5,8 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.vertx; +import static io.opentelemetry.context.ContextKey.named; + import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; +import io.opentelemetry.context.ContextKey; +import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource; @@ -20,6 +24,8 @@ import java.util.concurrent.ExecutionException; /** This is used to wrap Vert.x Handlers to provide nice user-friendly SERVER span names */ public final class RoutingContextHandlerWrapper implements Handler { + private static final ContextKey ROUTE_KEY = named("opentelemetry-vertx-route"); + private final Handler handler; public RoutingContextHandlerWrapper(Handler handler) { @@ -29,13 +35,13 @@ public final class RoutingContextHandlerWrapper implements Handler startFuture) { int port = config().getInteger(CONFIG_HTTP_SERVER_PORT); Router router = buildRouter(); + Router mainRouter = Router.router(vertx); + mainRouter.mountSubRouter("/vertx-app", router); vertx .createHttpServer() - .requestHandler(router::accept) + .requestHandler(mainRouter::accept) .listen(port, it -> startFuture.complete()); } } 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 index 2233ed424b..9926eb768d 100644 --- 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 @@ -58,11 +58,19 @@ abstract class AbstractVertxHttpServerTest extends HttpServerTest impleme return false } + @Override + String getContextPath() { + "/vertx-app" + } + @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) } }