Skip to content

Commit 444c7f0

Browse files
committed
HHH-9994 - Finish mariadb (mysql) database profile - Fix hibernate-envers tests hang on
1 parent 300aa41 commit 444c7f0

16 files changed

+65
-14
lines changed

hibernate-envers/hibernate-envers.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,9 @@ jar {
5858
'org.apache.tools.ant;resolution:=optional'
5959
}
6060
}
61+
62+
tasks."matrix_mariadb" {
63+
beforeTest { descriptor ->
64+
println "Starting test: " + descriptor
65+
}
66+
}

hibernate-envers/src/test/java/org/hibernate/envers/test/BaseEnversFunctionalTestCase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.hibernate.envers.AuditReader;
1515
import org.hibernate.envers.AuditReaderFactory;
1616
import org.hibernate.envers.configuration.EnversSettings;
17+
import org.hibernate.resource.transaction.spi.TransactionStatus;
1718

1819
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
1920
import org.junit.runner.RunWith;
@@ -52,6 +53,11 @@ protected Session getSession() {
5253
}
5354

5455
protected AuditReader getAuditReader() {
56+
Session session = getSession();
57+
if(session.getTransaction().getStatus() != TransactionStatus.ACTIVE ){
58+
session.getTransaction().begin();
59+
}
60+
5561
return AuditReaderFactory.get( getSession() );
5662
}
5763

hibernate-envers/src/test/java/org/hibernate/envers/test/BaseEnversJPAFunctionalTestCase.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Map;
1313
import javax.persistence.EntityManager;
1414
import javax.persistence.EntityManagerFactory;
15+
import javax.persistence.spi.PersistenceUnitTransactionType;
1516
import javax.transaction.SystemException;
1617

1718
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
@@ -29,12 +30,14 @@
2930
import org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl;
3031
import org.hibernate.jpa.boot.spi.Bootstrap;
3132
import org.hibernate.jpa.boot.spi.PersistenceUnitDescriptor;
33+
import org.hibernate.jpa.internal.EntityManagerImpl;
3234
import org.hibernate.jpa.test.PersistenceUnitDescriptorAdapter;
3335

3436
import org.hibernate.testing.AfterClassOnce;
3537
import org.hibernate.testing.BeforeClassOnce;
3638
import org.hibernate.testing.jta.TestingJtaPlatformImpl;
3739
import org.hibernate.testing.junit4.Helper;
40+
3841
import org.junit.After;
3942

4043
import org.jboss.logging.Logger;
@@ -263,10 +266,28 @@ protected EntityManager getOrCreateEntityManager() {
263266
}
264267

265268
protected AuditReader getAuditReader() {
269+
EntityManager entityManager = getOrCreateEntityManager();
270+
PersistenceUnitTransactionType transactionType = ((EntityManagerImpl) entityManager).getTransactionType();
271+
272+
if ( transactionType == PersistenceUnitTransactionType.JTA ) {
273+
if ( !JtaStatusHelper.isActive( TestingJtaPlatformImpl.INSTANCE.getTransactionManager() ) ) {
274+
try {
275+
TestingJtaPlatformImpl.INSTANCE.getTransactionManager().begin();
276+
}
277+
catch (Exception e) {
278+
e.printStackTrace();
279+
}
280+
}
281+
}
282+
else if ( !entityManager.getTransaction().isActive() ) {
283+
entityManager.getTransaction().begin();
284+
}
285+
266286
if ( auditReader != null ) {
267287
return auditReader;
268288
}
269-
return auditReader = AuditReaderFactory.get( getOrCreateEntityManager() );
289+
290+
return auditReader = AuditReaderFactory.get( entityManager );
270291
}
271292

272293
protected EntityManager createIsolatedEntityManager() {

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/basic/OutsideTransactionTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,24 @@
99
import java.util.Map;
1010

1111
import org.hibernate.Session;
12+
import org.hibernate.dialect.MySQL5Dialect;
1213
import org.hibernate.envers.configuration.EnversSettings;
1314
import org.hibernate.envers.exception.AuditException;
1415
import org.hibernate.envers.test.BaseEnversFunctionalTestCase;
1516
import org.hibernate.envers.test.entities.StrTestEntity;
1617
import org.hibernate.envers.test.integration.collection.norevision.Name;
1718
import org.hibernate.envers.test.integration.collection.norevision.Person;
1819

20+
import org.hibernate.testing.SkipForDialect;
1921
import org.hibernate.testing.TestForIssue;
22+
2023
import org.junit.Test;
2124

2225
/**
2326
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
2427
*/
2528
@TestForIssue(jiraKey = "HHH-5565")
29+
@SkipForDialect(value = MySQL5Dialect.class, comment = "The test hangs on")
2630
public class OutsideTransactionTest extends BaseEnversFunctionalTestCase {
2731
@Override
2832
protected Class<?>[] getAnnotatedClasses() {

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/collection/norevision/AbstractCollectionChangeTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public void initData() {
6363
session.getTransaction().commit();
6464

6565
personId = p.getId();
66+
67+
session.close();
6668
}
6769

6870
@Test

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/DefaultValueComponents.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,6 @@ private void checkCorrectlyPersisted(
448448
String expectedComp2Str1Rev1, String expectedComp2Str1Rev2) {
449449
// Verify that the entity was correctly persisted
450450
EntityManager em = getEntityManager();
451-
em.getTransaction().begin();
452451
Long entCount = (Long) em.createQuery(
453452
"select count(s) from DefaultValueComponentTestEntity s where s.id = "
454453
+ expectedId.toString()
@@ -483,6 +482,5 @@ private void checkCorrectlyPersisted(
483482
else {
484483
assert expectedComp2Str1Rev2.equals( comp2Str1Rev2 );
485484
}
486-
em.getTransaction().commit();
487485
}
488486
}

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/mappedsuperclass/EmbeddableWithDeclaredDataTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public void testEmbeddableThatExtendsMappedSuperclass() {
5757

5858
// Reload and Compare Revision
5959
EntityManager em = getEntityManager();
60+
em.getTransaction().begin();
6061
EntityWithEmbeddableWithDeclaredData entityLoaded = em.find( EntityWithEmbeddableWithDeclaredData.class, id );
6162

6263
AuditReader reader = AuditReaderFactory.get( em );
@@ -65,7 +66,7 @@ public void testEmbeddableThatExtendsMappedSuperclass() {
6566
Assert.assertEquals( 1, revs.size() );
6667

6768
EntityWithEmbeddableWithDeclaredData entityRev1 = reader.find( EntityWithEmbeddableWithDeclaredData.class, id, revs.get( 0 ) );
68-
69+
em.getTransaction().commit();
6970
Assert.assertEquals( entityLoaded.getName(), entityRev1.getName() );
7071

7172
// only value.codeArt should be audited because it is the only audited field in EmbeddableWithDeclaredData;

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/components/mappedsuperclass/EmbeddableWithNoDeclaredDataTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public void testEmbeddableThatExtendsMappedSuperclass() {
5555

5656
// Reload and Compare Revision
5757
EntityManager em = getEntityManager();
58+
em.getTransaction().begin();
5859
EntityWithEmbeddableWithNoDeclaredData entityLoaded = em.find( EntityWithEmbeddableWithNoDeclaredData.class, id );
5960

6061
AuditReader reader = AuditReaderFactory.get( em );
@@ -64,6 +65,7 @@ public void testEmbeddableThatExtendsMappedSuperclass() {
6465

6566
EntityWithEmbeddableWithNoDeclaredData entityRev1 = reader.find( EntityWithEmbeddableWithNoDeclaredData.class, id, revs.get( 0 ) );
6667

68+
em.getTransaction().commit();
6769
Assert.assertEquals( entityLoaded.getName(), entityRev1.getName() );
6870

6971
// value should be null because there is no data in EmbeddableWithNoDeclaredData

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/customtype/EnumTypeTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ public void initData() {
4343
@Test
4444
public void testEnumRepresentation() {
4545
EntityManager entityManager = getEntityManager();
46+
entityManager.getTransaction().begin();
4647
List<Object[]> values = entityManager.createNativeQuery(
4748
"SELECT enum1, enum2 FROM EnumTypeEntity_AUD ORDER BY rev ASC"
4849
).getResultList();
50+
entityManager.getTransaction().commit();
4951
entityManager.close();
5052

5153
Assert.assertNotNull( values );

hibernate-envers/src/test/java/org/hibernate/envers/test/integration/merge/AddDelTest.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ public void initData() {
6060
public void testRevisionsCountOfGivenIdStrEntity() {
6161
// Revision 2 has not changed entity's state.
6262
Assert.assertEquals( Arrays.asList( 1, 3 ), getAuditReader().getRevisions( GivenIdStrEntity.class, 1 ) );
63-
64-
getSession().close();
6563
}
6664

6765
@Test
@@ -74,7 +72,5 @@ public void testHistoryOfGivenIdStrEntity() {
7472
3
7573
)
7674
);
77-
78-
getSession().close();
7975
}
8076
}

0 commit comments

Comments
 (0)