81 lines
2.1 KiB
Groovy
81 lines
2.1 KiB
Groovy
import datadog.trace.agent.test.AgentTestRunner
|
|
import datadog.trace.api.DDSpanTypes
|
|
import datadog.trace.api.DDTags
|
|
import io.opentracing.tag.Tags
|
|
|
|
class SlickTest extends AgentTestRunner {
|
|
|
|
// Can't be @Shared, otherwise the work queue is initialized before the instrumentation is applied
|
|
def database = new SlickUtils()
|
|
|
|
def "Basic statement generates spans"() {
|
|
setup:
|
|
def future = database.startQuery(SlickUtils.TestQuery())
|
|
def result = database.getResults(future)
|
|
|
|
expect:
|
|
result == SlickUtils.TestValue()
|
|
|
|
assertTraces(1) {
|
|
trace(0, 2) {
|
|
span(0) {
|
|
operationName "SlickUtils.startQuery"
|
|
serviceName "unnamed-java-app"
|
|
resourceName "SlickUtils.startQuery"
|
|
parent()
|
|
errored false
|
|
tags {
|
|
"$Tags.COMPONENT.key" "trace"
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(1) {
|
|
operationName "${SlickUtils.Driver()}.query"
|
|
serviceName SlickUtils.Driver()
|
|
resourceName SlickUtils.TestQuery()
|
|
childOf span(0)
|
|
errored false
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-jdbc-prepared_statement"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.SQL
|
|
|
|
"$Tags.DB_TYPE.key" SlickUtils.Driver()
|
|
"$Tags.DB_USER.key" SlickUtils.Username()
|
|
|
|
"db.instance" SlickUtils.Url()
|
|
"span.origin.type" "org.h2.jdbc.JdbcPreparedStatement"
|
|
|
|
defaultTags()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def "Concurrent requests do not throw exception"() {
|
|
setup:
|
|
def sleepFuture = database.startQuery(SlickUtils.SleepQuery())
|
|
|
|
def future = database.startQuery(SlickUtils.TestQuery())
|
|
def result = database.getResults(future)
|
|
|
|
database.getResults(sleepFuture)
|
|
|
|
expect:
|
|
result == SlickUtils.TestValue()
|
|
|
|
// Expect two traces because two queries have been run
|
|
assertTraces(2) {
|
|
trace(0, 2, {
|
|
span(0) {}
|
|
span(1) {}
|
|
})
|
|
trace(1, 2, {
|
|
span(0) {}
|
|
span(1) {}
|
|
})
|
|
}
|
|
}
|
|
}
|