225 lines
6.8 KiB
Groovy
225 lines
6.8 KiB
Groovy
import datadog.trace.api.DDSpanTypes
|
|
import datadog.trace.api.DDTags
|
|
import io.opentracing.tag.Tags
|
|
import org.hibernate.Query
|
|
import org.hibernate.Session
|
|
|
|
class QueryTest extends AbstractHibernateTest {
|
|
|
|
def "test hibernate query.#queryMethodName single call"() {
|
|
setup:
|
|
|
|
// With Transaction
|
|
Session session = sessionFactory.openSession()
|
|
session.beginTransaction()
|
|
queryInteraction(session)
|
|
session.getTransaction().commit()
|
|
session.close()
|
|
|
|
// Without Transaction
|
|
if (!requiresTransaction) {
|
|
session = sessionFactory.openSession()
|
|
queryInteraction(session)
|
|
session.close()
|
|
}
|
|
|
|
expect:
|
|
assertTraces(requiresTransaction ? 1 : 2) {
|
|
// With Transaction
|
|
trace(0, 4) {
|
|
span(0) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.session"
|
|
operationName "hibernate.session"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
parent()
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(1) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.transaction.commit"
|
|
operationName "hibernate.transaction.commit"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(2) {
|
|
serviceName "hibernate"
|
|
resourceName "$resource"
|
|
operationName "hibernate.$queryMethodName"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(3) {
|
|
serviceName "h2"
|
|
childOf span(2)
|
|
}
|
|
}
|
|
if (!requiresTransaction) {
|
|
// Without Transaction
|
|
trace(1, 3) {
|
|
span(0) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.session"
|
|
operationName "hibernate.session"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
parent()
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(1) {
|
|
serviceName "hibernate"
|
|
resourceName "$resource"
|
|
operationName "hibernate.$queryMethodName"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(2) {
|
|
serviceName "h2"
|
|
childOf span(1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
where:
|
|
queryMethodName | resource | requiresTransaction | queryInteraction
|
|
"query.list" | "Value" | false | { sess ->
|
|
Query q = sess.createQuery("from Value")
|
|
q.list()
|
|
}
|
|
"query.executeUpdate" | "update Value set name = 'alyx'" | true | { sess ->
|
|
Query q = sess.createQuery("update Value set name = 'alyx'")
|
|
q.executeUpdate()
|
|
}
|
|
"query.uniqueResult" | "Value" | false | { sess ->
|
|
Query q = sess.createQuery("from Value where id = 1")
|
|
q.uniqueResult()
|
|
}
|
|
"iterate" | "from Value" | false | { sess ->
|
|
Query q = sess.createQuery("from Value")
|
|
q.iterate()
|
|
}
|
|
"query.scroll" | "from Value" | false | { sess ->
|
|
Query q = sess.createQuery("from Value")
|
|
q.scroll()
|
|
}
|
|
}
|
|
|
|
def "test hibernate query.iterate"() {
|
|
setup:
|
|
|
|
Session session = sessionFactory.openSession()
|
|
session.beginTransaction()
|
|
Query q = session.createQuery("from Value")
|
|
Iterator it = q.iterate()
|
|
while (it.hasNext()) {
|
|
it.next()
|
|
}
|
|
session.getTransaction().commit()
|
|
session.close()
|
|
|
|
expect:
|
|
assertTraces(1) {
|
|
trace(0, 6) {
|
|
span(0) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.session"
|
|
operationName "hibernate.session"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
parent()
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(1) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.transaction.commit"
|
|
operationName "hibernate.transaction.commit"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(2) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.iterator.next"
|
|
operationName "hibernate.iterator.next"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(3) {
|
|
serviceName "hibernate"
|
|
resourceName "hibernate.iterator.next"
|
|
operationName "hibernate.iterator.next"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(4) {
|
|
serviceName "hibernate"
|
|
resourceName "from Value"
|
|
operationName "hibernate.iterate"
|
|
spanType DDSpanTypes.HIBERNATE
|
|
childOf span(0)
|
|
tags {
|
|
"$Tags.COMPONENT.key" "java-hibernate"
|
|
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_CLIENT
|
|
"$DDTags.SPAN_TYPE" DDSpanTypes.HIBERNATE
|
|
defaultTags()
|
|
}
|
|
}
|
|
span(5) {
|
|
serviceName "h2"
|
|
childOf span(4)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|