Run tests with hibernate 5 and 6 (#2182)

This commit is contained in:
Lauri Tulmin 2021-02-05 00:25:29 +02:00 committed by GitHub
parent 27d5786d65
commit 121a9bffb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 16 deletions

View File

@ -1,4 +1,5 @@
apply from: "$rootDir/gradle/instrumentation.gradle"
apply plugin: 'org.unbroken-dome.test-sets'
muzzle {
pass {
@ -9,8 +10,23 @@ muzzle {
}
}
testSets {
version5Test {
dirName = 'test'
}
version6Test {
dirName = 'test'
}
latestDepTest {
dirName = 'test'
}
}
test.dependsOn version5Test, version6Test
dependencies {
library group: 'org.hibernate', name: 'hibernate-core', version: '4.3.0.Final'
implementation group: 'org.hibernate', name: 'hibernate-core', version: '4.3.0.Final'
implementation project(':instrumentation:hibernate:hibernate-common:javaagent')
@ -19,15 +35,25 @@ dependencies {
testInstrumentation project(':instrumentation:hibernate:hibernate-3.3:javaagent')
testInstrumentation project(':instrumentation:hibernate:hibernate-4.0:javaagent')
testLibrary group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.3.0.Final'
testImplementation group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.3.0.Final'
testImplementation group: 'org.hsqldb', name: 'hsqldb', version: '2.0.0'
//First version to work with Java 14
testLibrary group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.8.0.RELEASE'
testImplementation group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.8.0.RELEASE'
// TODO(anuraaga): Investigate why these tests don't pass on 5 or 6
// https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/1042
latestDepTestLibrary group: 'org.hibernate', name: 'hibernate-core', version: '4.+'
latestDepTestLibrary group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.+'
version5TestImplementation group: 'org.hibernate', name: 'hibernate-core', version: '5.0.0.Final'
version5TestImplementation group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.0.0.Final'
version5TestImplementation group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.3.0.RELEASE'
latestDepTestLibrary group: 'org.springframework.data', name: 'spring-data-jpa', version: '(,2.4.0)'
version6TestImplementation group: 'org.hibernate', name: 'hibernate-core', version: '6.0.0.Alpha6'
version6TestImplementation group: 'org.hibernate', name: 'hibernate-entitymanager', version: '6.0.0.Alpha6'
version6TestImplementation group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.3.0.RELEASE'
testImplementation group: 'javax.activation', name: 'javax.activation-api', version: '1.2.0'
testImplementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
testImplementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.3'
// hibernate 6 is alpha so use 5 as latest version
latestDepTestImplementation group: 'org.hibernate', name: 'hibernate-core', version: '5.+'
latestDepTestImplementation group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.+'
latestDepTestImplementation group: 'org.springframework.data', name: 'spring-data-jpa', version: '(2.4.0,)'
}

View File

@ -17,6 +17,7 @@ import org.hibernate.SessionFactory
import org.hibernate.cfg.Configuration
import org.hibernate.exception.SQLGrammarException
import org.hibernate.procedure.ProcedureCall
import org.junit.Assume
import spock.lang.Shared
class ProcedureCallTest extends AgentInstrumentationSpecification {
@ -55,6 +56,16 @@ class ProcedureCallTest extends AgentInstrumentationSpecification {
}
}
def callProcedure(ProcedureCall call) {
try {
call.getOutputs()
} catch (Exception exception) {
// ignore failures on hibernate 6 where this functionality has not been implemented yet
Assume.assumeFalse("org.hibernate.NotYetImplementedFor6Exception" == exception.getClass().getName())
throw exception
}
}
def "test ProcedureCall"() {
setup:
@ -62,7 +73,7 @@ class ProcedureCallTest extends AgentInstrumentationSpecification {
session.beginTransaction()
ProcedureCall call = session.createStoredProcedureCall("TEST_PROC")
call.getOutputs()
callProcedure(call)
session.getTransaction().commit()
session.close()
@ -114,10 +125,11 @@ class ProcedureCallTest extends AgentInstrumentationSpecification {
session.beginTransaction()
ProcedureCall call = session.createStoredProcedureCall("TEST_PROC")
call.registerParameter("nonexistent", Long, ParameterMode.IN)
call.getParameterRegistration("nonexistent").bindValue(420L)
def parameterRegistration = call.registerParameter("nonexistent", Long, ParameterMode.IN)
Assume.assumeTrue(parameterRegistration.metaClass.getMetaMethod("bindValue", Object) != null)
parameterRegistration.bindValue(420L)
try {
call.getOutputs()
callProcedure(call)
} catch (Exception e) {
// We expected this.
}

View File

@ -41,7 +41,7 @@ class SpringJpaTest extends AgentInstrumentationSpecification {
"${SemanticAttributes.DB_SYSTEM.key}" "hsqldb"
"${SemanticAttributes.DB_NAME.key}" "test"
"${SemanticAttributes.DB_USER.key}" "sa"
"${SemanticAttributes.DB_STATEMENT.key}" "select customer0_.id as id1_0_, customer0_.firstName as firstNam2_0_, customer0_.lastName as lastName3_0_ from Customer customer0_"
"${SemanticAttributes.DB_STATEMENT.key}" ~/select ([^\.]+)\.id([^\,]*), ([^\.]+)\.firstName([^\,]*), ([^\.]+)\.lastName(.*)from Customer(.*)/
"${SemanticAttributes.DB_CONNECTION_STRING.key}" "hsqldb:mem:"
}
}
@ -104,7 +104,7 @@ class SpringJpaTest extends AgentInstrumentationSpecification {
"${SemanticAttributes.DB_SYSTEM.key}" "hsqldb"
"${SemanticAttributes.DB_NAME.key}" "test"
"${SemanticAttributes.DB_USER.key}" "sa"
"${SemanticAttributes.DB_STATEMENT.key}" "select customer0_.id as id1_0_0_, customer0_.firstName as firstNam2_0_0_, customer0_.lastName as lastName3_0_0_ from Customer customer0_ where customer0_.id=?"
"${SemanticAttributes.DB_STATEMENT.key}" ~/select ([^\.]+)\.id([^\,]*), ([^\.]+)\.firstName([^\,]*), ([^\.]+)\.lastName (.*)from Customer (.*)where ([^\.]+)\.id( ?)=( ?)\?/
"${SemanticAttributes.DB_CONNECTION_STRING.key}" "hsqldb:mem:"
}
}
@ -140,7 +140,7 @@ class SpringJpaTest extends AgentInstrumentationSpecification {
"${SemanticAttributes.DB_SYSTEM.key}" "hsqldb"
"${SemanticAttributes.DB_NAME.key}" "test"
"${SemanticAttributes.DB_USER.key}" "sa"
"${SemanticAttributes.DB_STATEMENT.key}" "select customer0_.id as id1_0_, customer0_.firstName as firstNam2_0_, customer0_.lastName as lastName3_0_ from Customer customer0_ where customer0_.lastName=?"
"${SemanticAttributes.DB_STATEMENT.key}" ~/select ([^\.]+)\.id([^\,]*), ([^\.]+)\.firstName([^\,]*), ([^\.]+)\.lastName (.*)from Customer (.*)(where ([^\.]+)\.lastName( ?)=( ?)\?|)/
"${SemanticAttributes.DB_CONNECTION_STRING.key}" "hsqldb:mem:"
}
}
@ -161,7 +161,7 @@ class SpringJpaTest extends AgentInstrumentationSpecification {
"${SemanticAttributes.DB_SYSTEM.key}" "hsqldb"
"${SemanticAttributes.DB_NAME.key}" "test"
"${SemanticAttributes.DB_USER.key}" "sa"
"${SemanticAttributes.DB_STATEMENT.key}" "select customer0_.id as id1_0_0_, customer0_.firstName as firstNam2_0_0_, customer0_.lastName as lastName3_0_0_ from Customer customer0_ where customer0_.id=?"
"${SemanticAttributes.DB_STATEMENT.key}" ~/select ([^\.]+)\.id([^\,]*), ([^\.]+)\.firstName([^\,]*), ([^\.]+)\.lastName (.*)from Customer (.*)where ([^\.]+)\.id( ?)=( ?)\?/
"${SemanticAttributes.DB_CONNECTION_STRING.key}" "hsqldb:mem:"
}
}