84 lines
2.2 KiB
Groovy
84 lines
2.2 KiB
Groovy
/*
|
|
* Copyright The OpenTelemetry Authors
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
|
import org.hibernate.Criteria
|
|
import org.hibernate.Session
|
|
import org.hibernate.criterion.Order
|
|
import org.hibernate.criterion.Restrictions
|
|
|
|
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
|
import static io.opentelemetry.api.trace.SpanKind.INTERNAL
|
|
|
|
class CriteriaTest extends AbstractHibernateTest {
|
|
|
|
def "test criteria.#methodName"() {
|
|
setup:
|
|
runWithSpan("parent") {
|
|
Session session = sessionFactory.openSession()
|
|
session.beginTransaction()
|
|
Criteria criteria = session.createCriteria(Value)
|
|
.add(Restrictions.like("name", "Hello"))
|
|
.addOrder(Order.desc("name"))
|
|
interaction.call(criteria)
|
|
session.getTransaction().commit()
|
|
session.close()
|
|
}
|
|
|
|
expect:
|
|
def sessionId
|
|
assertTraces(1) {
|
|
trace(0, 4) {
|
|
span(0) {
|
|
name "parent"
|
|
kind INTERNAL
|
|
hasNoParent()
|
|
attributes {
|
|
}
|
|
}
|
|
span(1) {
|
|
name "Criteria.$methodName Value"
|
|
kind INTERNAL
|
|
childOf span(0)
|
|
attributes {
|
|
"hibernate.session_id" {
|
|
sessionId = it
|
|
it instanceof String
|
|
}
|
|
}
|
|
}
|
|
span(2) {
|
|
name "SELECT db1.Value"
|
|
kind CLIENT
|
|
childOf span(1)
|
|
attributes {
|
|
"${SemanticAttributes.DB_SYSTEM.key}" "h2"
|
|
"${SemanticAttributes.DB_NAME.key}" "db1"
|
|
"${SemanticAttributes.DB_USER.key}" "sa"
|
|
"${SemanticAttributes.DB_CONNECTION_STRING.key}" "h2:mem:"
|
|
"${SemanticAttributes.DB_STATEMENT.key}" ~/^select /
|
|
"${SemanticAttributes.DB_OPERATION.key}" "SELECT"
|
|
"${SemanticAttributes.DB_SQL_TABLE.key}" "Value"
|
|
}
|
|
}
|
|
span(3) {
|
|
name "Transaction.commit"
|
|
kind INTERNAL
|
|
childOf span(0)
|
|
attributes {
|
|
"hibernate.session_id" sessionId
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
where:
|
|
methodName | interaction
|
|
"list" | { c -> c.list() }
|
|
"uniqueResult" | { c -> c.uniqueResult() }
|
|
"scroll" | { c -> c.scroll() }
|
|
}
|
|
}
|