/dd-java-agent/instrumentation/akka-http-10.0/src/test/groovy/AkkaHttpServerInstrumentationTest.groovy
https://github.com/DataDog/dd-trace-java · Groovy · 97 lines · 76 code · 11 blank · 10 comment · 14 complexity · f66a4bbdd2e9737c4ef86833476822f3 MD5 · raw file
- import datadog.trace.agent.test.asserts.TraceAssert
- import datadog.trace.agent.test.base.HttpServerTest
- import datadog.trace.api.DDSpanTypes
- import datadog.trace.api.DDTags
- import datadog.trace.bootstrap.instrumentation.api.Tags
- import datadog.trace.instrumentation.akkahttp.AkkaHttpServerDecorator
- import spock.lang.Retry
- import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
- import static datadog.trace.agent.test.base.HttpServerTest.ServerEndpoint.SUCCESS
- abstract class AkkaHttpServerInstrumentationTest extends HttpServerTest<Object> {
- @Override
- String component() {
- return AkkaHttpServerDecorator.DECORATE.component()
- }
- @Override
- String expectedOperationName() {
- return "akka-http.request"
- }
- @Override
- boolean testExceptionBody() {
- false
- }
- // FIXME: This doesn't work because we don't support bindAndHandle.
- // @Override
- // def startServer(int port) {
- // AkkaHttpTestWebServer.start(port)
- // }
- //
- // @Override
- // void stopServer(Object ignore) {
- // AkkaHttpTestWebServer.stop()
- // }
- void serverSpan(TraceAssert trace, BigInteger traceID = null, BigInteger parentID = null, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
- trace.span {
- serviceName expectedServiceName()
- operationName expectedOperationName()
- resourceName endpoint.status == 404 ? "404" : "$method ${endpoint.resolve(address).path}"
- spanType DDSpanTypes.HTTP_SERVER
- errored endpoint.errored
- if (parentID != null) {
- traceId traceID
- parentId parentID
- } else {
- parent()
- }
- tags {
- "$Tags.COMPONENT" component
- "$Tags.SPAN_KIND" Tags.SPAN_KIND_SERVER
- "$Tags.HTTP_URL" "${endpoint.resolve(address)}"
- "$Tags.HTTP_METHOD" method
- "$Tags.HTTP_STATUS" endpoint.status
- if (endpoint.errored) {
- "error.msg" { it == null || it == EXCEPTION.body }
- "error.type" { it == null || it == Exception.name }
- "error.stack" { it == null || it instanceof String }
- }
- if (endpoint.query) {
- "$DDTags.HTTP_QUERY" endpoint.query
- }
- defaultTags(true)
- }
- }
- }
- }
- @Retry
- class AkkaHttpServerInstrumentationTestSync extends AkkaHttpServerInstrumentationTest {
- @Override
- def startServer(int port) {
- AkkaHttpTestSyncWebServer.start(port)
- }
- @Override
- void stopServer(Object ignore) {
- AkkaHttpTestSyncWebServer.stop()
- }
- }
- @Retry
- class AkkaHttpServerInstrumentationTestAsync extends AkkaHttpServerInstrumentationTest {
- @Override
- def startServer(int port) {
- AkkaHttpTestAsyncWebServer.start(port)
- }
- @Override
- void stopServer(Object ignore) {
- AkkaHttpTestAsyncWebServer.stop()
- }
- }