Extract HttpServerTest INDEXED_CHILD span attribute collection logic (#3095)
* Extrawct HttpServerTest INDEXED_CHILD span attribute collection logic * Adjust whitespace * Fix context issue with JAX-RS * Rerun tests
This commit is contained in:
parent
acedbff78d
commit
df078f95a9
|
@ -14,7 +14,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
import static java.util.concurrent.TimeUnit.SECONDS
|
import static java.util.concurrent.TimeUnit.SECONDS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import java.util.concurrent.CompletableFuture
|
import java.util.concurrent.CompletableFuture
|
||||||
import java.util.concurrent.CompletionStage
|
import java.util.concurrent.CompletionStage
|
||||||
|
@ -88,10 +87,12 @@ class JaxRsTestResource {
|
||||||
|
|
||||||
@Path("/child")
|
@Path("/child")
|
||||||
@GET
|
@GET
|
||||||
void indexed_child(@Suspended AsyncResponse response, @QueryParam("id") long id) {
|
void indexed_child(@Context UriInfo uriInfo, @Suspended AsyncResponse response) {
|
||||||
|
def parameters = uriInfo.queryParameters
|
||||||
|
|
||||||
CompletableFuture.runAsync({
|
CompletableFuture.runAsync({
|
||||||
HttpServerTest.controller(INDEXED_CHILD) {
|
HttpServerTest.controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", id)
|
INDEXED_CHILD.collectSpanAttributes { parameters.getFirst(it) }
|
||||||
response.resume("")
|
response.resume("")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -16,7 +16,6 @@ import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE
|
||||||
import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.LOCATION
|
import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.LOCATION
|
||||||
import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1
|
import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import org.jboss.netty.bootstrap.ServerBootstrap
|
import org.jboss.netty.bootstrap.ServerBootstrap
|
||||||
|
@ -75,8 +74,7 @@ class Netty38ServerTest extends HttpServerTest<ServerBootstrap> implements Agent
|
||||||
response.setContent(responseContent)
|
response.setContent(responseContent)
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri)
|
endpoint.collectSpanAttributes { new QueryStringDecoder(uri).getParameters().get(it).find() }
|
||||||
Span.current().setAttribute("test.request.id", queryStringDecoder.getParameters().get("id").find() as long)
|
|
||||||
response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
|
|
|
@ -36,7 +36,6 @@ import io.netty.handler.codec.http.QueryStringDecoder
|
||||||
import io.netty.handler.logging.LogLevel
|
import io.netty.handler.logging.LogLevel
|
||||||
import io.netty.handler.logging.LoggingHandler
|
import io.netty.handler.logging.LoggingHandler
|
||||||
import io.netty.util.CharsetUtil
|
import io.netty.util.CharsetUtil
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
|
|
||||||
|
@ -73,8 +72,7 @@ class Netty40ServerTest extends HttpServerTest<EventLoopGroup> implements AgentT
|
||||||
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status), content)
|
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status), content)
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri)
|
endpoint.collectSpanAttributes { new QueryStringDecoder(uri).parameters().get(it).find() }
|
||||||
Span.current().setAttribute("test.request.id", queryStringDecoder.parameters().get("id").find() as long)
|
|
||||||
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
|
|
|
@ -35,7 +35,6 @@ import io.netty.handler.codec.http.QueryStringDecoder
|
||||||
import io.netty.handler.logging.LogLevel
|
import io.netty.handler.logging.LogLevel
|
||||||
import io.netty.handler.logging.LoggingHandler
|
import io.netty.handler.logging.LoggingHandler
|
||||||
import io.netty.util.CharsetUtil
|
import io.netty.util.CharsetUtil
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
|
|
||||||
|
@ -72,8 +71,7 @@ class Netty41ServerTest extends HttpServerTest<EventLoopGroup> implements AgentT
|
||||||
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status), content)
|
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status), content)
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri)
|
endpoint.collectSpanAttributes { new QueryStringDecoder(uri).parameters().get(it).find() }
|
||||||
Span.current().setAttribute("test.request.id", queryStringDecoder.parameters().get("id").find() as long)
|
|
||||||
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(endpoint.status))
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
|
|
|
@ -13,7 +13,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
import static play.mvc.Http.Context.Implicit.request
|
import static play.mvc.Http.Context.Implicit.request
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import java.util.concurrent.CompletableFuture
|
import java.util.concurrent.CompletableFuture
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
import play.libs.concurrent.HttpExecution
|
import play.libs.concurrent.HttpExecution
|
||||||
|
@ -36,7 +35,7 @@ class PlayAsyncServerTest extends PlayServerTest {
|
||||||
.GET(INDEXED_CHILD.getPath()).routeTo({
|
.GET(INDEXED_CHILD.getPath()).routeTo({
|
||||||
CompletableFuture.supplyAsync({
|
CompletableFuture.supplyAsync({
|
||||||
controller(INDEXED_CHILD) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", request().getQueryString("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { request().getQueryString(it) }
|
||||||
Results.status(INDEXED_CHILD.getStatus())
|
Results.status(INDEXED_CHILD.getStatus())
|
||||||
}
|
}
|
||||||
}, HttpExecution.defaultContext())
|
}, HttpExecution.defaultContext())
|
||||||
|
|
|
@ -14,7 +14,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
import static play.mvc.Http.Context.Implicit.request
|
import static play.mvc.Http.Context.Implicit.request
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.api.trace.StatusCode
|
import io.opentelemetry.api.trace.StatusCode
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
||||||
|
@ -37,7 +36,7 @@ class PlayServerTest extends HttpServerTest<Server> implements AgentTestTrait {
|
||||||
} as Supplier)
|
} as Supplier)
|
||||||
.GET(INDEXED_CHILD.getPath()).routeTo({
|
.GET(INDEXED_CHILD.getPath()).routeTo({
|
||||||
controller(INDEXED_CHILD) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", request().getQueryString("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { request().getQueryString(it) }
|
||||||
Results.status(INDEXED_CHILD.getStatus())
|
Results.status(INDEXED_CHILD.getStatus())
|
||||||
}
|
}
|
||||||
} as Supplier)
|
} as Supplier)
|
||||||
|
|
|
@ -13,7 +13,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import ratpack.exec.Promise
|
import ratpack.exec.Promise
|
||||||
import ratpack.groovy.test.embed.GroovyEmbeddedApp
|
import ratpack.groovy.test.embed.GroovyEmbeddedApp
|
||||||
import ratpack.test.embed.EmbeddedApp
|
import ratpack.test.embed.EmbeddedApp
|
||||||
|
@ -48,7 +47,7 @@ class RatpackAsyncHttpServerTest extends RatpackHttpServerTest {
|
||||||
INDEXED_CHILD
|
INDEXED_CHILD
|
||||||
} then {
|
} then {
|
||||||
controller(INDEXED_CHILD) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", request.queryParams.get("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { request.queryParams.get(it) }
|
||||||
context.response.status(INDEXED_CHILD.status).send()
|
context.response.status(INDEXED_CHILD.status).send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import ratpack.exec.Promise
|
import ratpack.exec.Promise
|
||||||
import ratpack.groovy.test.embed.GroovyEmbeddedApp
|
import ratpack.groovy.test.embed.GroovyEmbeddedApp
|
||||||
import ratpack.test.embed.EmbeddedApp
|
import ratpack.test.embed.EmbeddedApp
|
||||||
|
@ -48,7 +47,7 @@ class RatpackForkedHttpServerTest extends RatpackHttpServerTest {
|
||||||
INDEXED_CHILD
|
INDEXED_CHILD
|
||||||
}.fork().then {
|
}.fork().then {
|
||||||
controller(INDEXED_CHILD) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", request.queryParams.get("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { request.queryParams.get(it) }
|
||||||
context.response.status(INDEXED_CHILD.status).send()
|
context.response.status(INDEXED_CHILD.status).send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.api.trace.StatusCode
|
import io.opentelemetry.api.trace.StatusCode
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
||||||
|
@ -48,7 +47,7 @@ class RatpackHttpServerTest extends HttpServerTest<EmbeddedApp> implements Agent
|
||||||
prefix(INDEXED_CHILD.rawPath()) {
|
prefix(INDEXED_CHILD.rawPath()) {
|
||||||
all {
|
all {
|
||||||
controller(INDEXED_CHILD) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", request.queryParams.get("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { request.queryParams.get(it) }
|
||||||
context.response.status(INDEXED_CHILD.status).send()
|
context.response.status(INDEXED_CHILD.status).send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import groovy.servlet.AbstractHttpServlet
|
import groovy.servlet.AbstractHttpServlet
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import java.util.concurrent.Phaser
|
import java.util.concurrent.Phaser
|
||||||
import javax.servlet.RequestDispatcher
|
import javax.servlet.RequestDispatcher
|
||||||
|
@ -40,7 +39,7 @@ class TestServlet3 {
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
|
@ -78,7 +77,7 @@ class TestServlet3 {
|
||||||
context.complete()
|
context.complete()
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
context.complete()
|
context.complete()
|
||||||
break
|
break
|
||||||
|
@ -128,7 +127,7 @@ class TestServlet3 {
|
||||||
resp.writer.print(endpoint.body)
|
resp.writer.print(endpoint.body)
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
|
|
|
@ -10,7 +10,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import jakarta.servlet.RequestDispatcher
|
import jakarta.servlet.RequestDispatcher
|
||||||
import jakarta.servlet.ServletException
|
import jakarta.servlet.ServletException
|
||||||
|
@ -40,7 +39,7 @@ class TestServlet5 {
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
|
@ -78,7 +77,7 @@ class TestServlet5 {
|
||||||
context.complete()
|
context.complete()
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
context.complete()
|
context.complete()
|
||||||
break
|
break
|
||||||
|
@ -128,7 +127,7 @@ class TestServlet5 {
|
||||||
resp.writer.print(endpoint.body)
|
resp.writer.print(endpoint.body)
|
||||||
break
|
break
|
||||||
case INDEXED_CHILD:
|
case INDEXED_CHILD:
|
||||||
Span.current().setAttribute("test.request.id", req.getParameter("id") as long)
|
endpoint.collectSpanAttributes { req.getParameter(it) }
|
||||||
resp.status = endpoint.status
|
resp.status = endpoint.status
|
||||||
break
|
break
|
||||||
case QUERY_PARAM:
|
case QUERY_PARAM:
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
package server.base;
|
package server.base;
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span;
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint;
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
@ -96,9 +95,7 @@ public abstract class ServerTestController {
|
||||||
return wrapControllerMethod(
|
return wrapControllerMethod(
|
||||||
endpoint,
|
endpoint,
|
||||||
() -> {
|
() -> {
|
||||||
Span.current()
|
endpoint.collectSpanAttributes(it -> request.getQueryParams().getFirst(it));
|
||||||
.setAttribute(
|
|
||||||
"test.request.id", Long.parseLong(request.getQueryParams().getFirst("id")));
|
|
||||||
setStatus(response, endpoint);
|
setStatus(response, endpoint);
|
||||||
return "";
|
return "";
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,7 +13,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import io.vertx.circuitbreaker.CircuitBreakerOptions
|
import io.vertx.circuitbreaker.CircuitBreakerOptions
|
||||||
import io.vertx.core.Future
|
import io.vertx.core.Future
|
||||||
|
@ -64,7 +63,7 @@ class VertxRxCircuitBreakerHttpServerTest extends VertxRxHttpServerTest {
|
||||||
}
|
}
|
||||||
HttpServerTest.ServerEndpoint endpoint = it.result()
|
HttpServerTest.ServerEndpoint endpoint = it.result()
|
||||||
controller(endpoint) {
|
controller(endpoint) {
|
||||||
Span.current().setAttribute("test.request.id", ctx.request().params().get("id") as long)
|
endpoint.collectSpanAttributes { ctx.request().params().get(it) }
|
||||||
ctx.response().setStatusCode(endpoint.status).end()
|
ctx.response().setStatusCode(endpoint.status).end()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -14,7 +14,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span
|
|
||||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
||||||
import io.vertx.core.DeploymentOptions
|
import io.vertx.core.DeploymentOptions
|
||||||
|
@ -95,8 +94,8 @@ class VertxRxHttpServerTest extends HttpServerTest<Vertx> implements AgentTestTr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
router.route(INDEXED_CHILD.path).handler { ctx ->
|
router.route(INDEXED_CHILD.path).handler { ctx ->
|
||||||
controller(QUERY_PARAM) {
|
controller(INDEXED_CHILD) {
|
||||||
Span.current().setAttribute("test.request.id", ctx.request().params().get("id") as long)
|
INDEXED_CHILD.collectSpanAttributes { ctx.request().params().get(it) }
|
||||||
ctx.response().setStatusCode(INDEXED_CHILD.status).end()
|
ctx.response().setStatusCode(INDEXED_CHILD.status).end()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEn
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT;
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT;
|
||||||
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS;
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS;
|
||||||
|
|
||||||
import io.opentelemetry.api.trace.Span;
|
|
||||||
import io.opentelemetry.instrumentation.test.base.HttpServerTest;
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest;
|
||||||
import io.vertx.core.AbstractVerticle;
|
import io.vertx.core.AbstractVerticle;
|
||||||
import io.vertx.core.Future;
|
import io.vertx.core.Future;
|
||||||
|
@ -53,9 +52,7 @@ public class VertxWebServer extends AbstractVerticle {
|
||||||
HttpServerTest.controller(
|
HttpServerTest.controller(
|
||||||
INDEXED_CHILD,
|
INDEXED_CHILD,
|
||||||
() -> {
|
() -> {
|
||||||
Span.current()
|
INDEXED_CHILD.collectSpanAttributes(it -> ctx.request().getParam(it));
|
||||||
.setAttribute(
|
|
||||||
"test.request.id", Long.parseLong(ctx.request().getParam("id")));
|
|
||||||
ctx.response().setStatusCode(INDEXED_CHILD.getStatus()).end();
|
ctx.response().setStatusCode(INDEXED_CHILD.getStatus()).end();
|
||||||
return null;
|
return null;
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -138,6 +138,9 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
||||||
AUTH_ERROR("basicsecured/endpoint", 401, null),
|
AUTH_ERROR("basicsecured/endpoint", 401, null),
|
||||||
INDEXED_CHILD("child", 200, null),
|
INDEXED_CHILD("child", 200, null),
|
||||||
|
|
||||||
|
public static final String ID_ATTRIBUTE_NAME = "test.request.id"
|
||||||
|
public static final String ID_PARAMETER_NAME = "id"
|
||||||
|
|
||||||
private final URI uriObj
|
private final URI uriObj
|
||||||
private final String path
|
private final String path
|
||||||
final String query
|
final String query
|
||||||
|
@ -177,11 +180,31 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
||||||
return new URI(uri.scheme, null, uri.host, uri.port, uri.path, uri.query, null)
|
return new URI(uri.scheme, null, uri.host, uri.port, uri.path, uri.query, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates custom test attributes for the {@link HttpServerTest#controller} span (which must
|
||||||
|
* be the current span when this is called) based on URL parameters. Required for
|
||||||
|
* {@link #INDEXED_CHILD}.
|
||||||
|
*/
|
||||||
|
void collectSpanAttributes(UrlParameterProvider parameterProvider) {
|
||||||
|
if (this == INDEXED_CHILD) {
|
||||||
|
String value = parameterProvider.getParameter(ID_PARAMETER_NAME)
|
||||||
|
|
||||||
|
if (value != null) {
|
||||||
|
Span.current().setAttribute(ID_ATTRIBUTE_NAME, value as long)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static final Map<String, ServerEndpoint> PATH_MAP = values().collectEntries { [it.path, it] }
|
private static final Map<String, ServerEndpoint> PATH_MAP = values().collectEntries { [it.path, it] }
|
||||||
|
|
||||||
static ServerEndpoint forPath(String path) {
|
static ServerEndpoint forPath(String path) {
|
||||||
return PATH_MAP.get(path)
|
return PATH_MAP.get(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Static keyword required for Scala interop
|
||||||
|
static interface UrlParameterProvider {
|
||||||
|
String getParameter(String name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Request.Builder request(ServerEndpoint uri, String method, RequestBody body) {
|
Request.Builder request(ServerEndpoint uri, String method, RequestBody body) {
|
||||||
|
@ -416,11 +439,11 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
||||||
def job = {
|
def job = {
|
||||||
latch.await()
|
latch.await()
|
||||||
def url = HttpUrl.get(endpoint.resolvePath(address)).newBuilder()
|
def url = HttpUrl.get(endpoint.resolvePath(address)).newBuilder()
|
||||||
.query("id=$index")
|
.query("${ServerEndpoint.ID_PARAMETER_NAME}=$index")
|
||||||
.build()
|
.build()
|
||||||
Request.Builder builder = request(url, "GET", null)
|
Request.Builder builder = request(url, "GET", null)
|
||||||
runUnderTrace("client " + index) {
|
runUnderTrace("client " + index) {
|
||||||
Span.current().setAttribute("test.request.id", index)
|
Span.current().setAttribute(ServerEndpoint.ID_ATTRIBUTE_NAME, index)
|
||||||
propagator.inject(Context.current(), builder, setter)
|
propagator.inject(Context.current(), builder, setter)
|
||||||
client.newCall(builder.build()).execute()
|
client.newCall(builder.build()).execute()
|
||||||
}
|
}
|
||||||
|
@ -439,7 +462,7 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
||||||
def requestId = Integer.parseInt(rootSpan.name.substring("client ".length()))
|
def requestId = Integer.parseInt(rootSpan.name.substring("client ".length()))
|
||||||
|
|
||||||
basicSpan(it, 0, "client " + requestId, null, null) {
|
basicSpan(it, 0, "client " + requestId, null, null) {
|
||||||
it."test.request.id" requestId
|
"${ServerEndpoint.ID_ATTRIBUTE_NAME}" requestId
|
||||||
}
|
}
|
||||||
indexedServerSpan(it, span(0), requestId)
|
indexedServerSpan(it, span(0), requestId)
|
||||||
|
|
||||||
|
@ -648,7 +671,7 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
||||||
name "controller"
|
name "controller"
|
||||||
childOf((SpanData) parent)
|
childOf((SpanData) parent)
|
||||||
attributes {
|
attributes {
|
||||||
it."test.request.id" requestId
|
"${ServerEndpoint.ID_ATTRIBUTE_NAME}" requestId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue