HHH-7187 - Fix tests against MySQL

This commit is contained in:
Lukasz Antoniak 2012-03-24 15:40:36 +01:00
parent 5a2b019e66
commit 6aed8651a6
5 changed files with 28 additions and 9 deletions

View File

@ -27,6 +27,7 @@ import java.io.IOException;
import java.util.Properties; import java.util.Properties;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import org.hibernate.dialect.Dialect;
import org.junit.Before; import org.junit.Before;
import org.hibernate.cfg.Environment; import org.hibernate.cfg.Environment;
@ -45,6 +46,8 @@ import org.hibernate.testing.BeforeClassOnce;
* @author Adam Warski (adam at warski dot org) * @author Adam Warski (adam at warski dot org)
*/ */
public abstract class AbstractEntityTest extends AbstractEnversTest { public abstract class AbstractEntityTest extends AbstractEnversTest {
public static final Dialect DIALECT = Dialect.getDialect();
private EntityManagerFactoryImpl emf; private EntityManagerFactoryImpl emf;
private EntityManager entityManager; private EntityManager entityManager;
private AuditReader auditReader; private AuditReader auditReader;
@ -56,6 +59,10 @@ public abstract class AbstractEntityTest extends AbstractEnversTest {
public void addConfigurationProperties(Properties configuration) { } public void addConfigurationProperties(Properties configuration) { }
protected static Dialect getDialect() {
return DIALECT;
}
private void closeEntityManager() { private void closeEntityManager() {
if (entityManager != null) { if (entityManager != null) {
entityManager.close(); entityManager.close();

View File

@ -3,6 +3,7 @@ package org.hibernate.envers.test.integration.readwriteexpression;
import java.util.List; import java.util.List;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.hibernate.ejb.Ejb3Configuration; import org.hibernate.ejb.Ejb3Configuration;
@ -11,8 +12,8 @@ import org.hibernate.envers.test.Priority;
public class ReadWriteExpressionChange extends AbstractEntityTest { public class ReadWriteExpressionChange extends AbstractEntityTest {
private static final double HEIGHT_INCHES = 73; private static final Double HEIGHT_INCHES = 73.0d;
private static final double HEIGHT_CENTIMETERS = HEIGHT_INCHES * 2.54d; private static final Double HEIGHT_CENTIMETERS = HEIGHT_INCHES * 2.54d;
private Integer id; private Integer id;
@ -36,18 +37,18 @@ public class ReadWriteExpressionChange extends AbstractEntityTest {
public void shouldRespectWriteExpression() { public void shouldRespectWriteExpression() {
EntityManager em = getEntityManager(); EntityManager em = getEntityManager();
List resultList = em.createNativeQuery("select size_in_cm from t_staff_AUD where id ="+id).getResultList(); List resultList = em.createNativeQuery("select size_in_cm from t_staff_AUD where id ="+id).getResultList();
assert 1 == resultList.size(); Assert.assertEquals(1, resultList.size());
Double sizeInCm = (Double) resultList.get(0); Double sizeInCm = (Double) resultList.get(0);
assert sizeInCm.equals(HEIGHT_CENTIMETERS); Assert.assertEquals(HEIGHT_CENTIMETERS, sizeInCm.doubleValue(), 0.00000001);
} }
@Test @Test
public void shouldRespectReadExpression() { public void shouldRespectReadExpression() {
List<Number> revisions = getAuditReader().getRevisions(Staff.class, id); List<Number> revisions = getAuditReader().getRevisions(Staff.class, id);
assert 1 == revisions.size(); Assert.assertEquals(1, revisions.size());
Number number = revisions.get(0); Number number = revisions.get(0);
Staff staffRev = getAuditReader().find(Staff.class, id, number); Staff staffRev = getAuditReader().find(Staff.class, id, number);
assert HEIGHT_INCHES == staffRev.getSizeInInches(); Assert.assertEquals(HEIGHT_INCHES, staffRev.getSizeInInches(), 0.00000001);
} }
} }

View File

@ -56,7 +56,8 @@ public class CustomDate extends AbstractEntityTest {
public void initData() throws InterruptedException { public void initData() throws InterruptedException {
timestamp1 = System.currentTimeMillis(); timestamp1 = System.currentTimeMillis();
Thread.sleep(100); Thread.sleep(1100); // CustomDateRevEntity.dateTimestamp field maps to date type which on some RDBMSs gets
// truncated to seconds (for example MySQL 5.1).
// Revision 1 // Revision 1
EntityManager em = getEntityManager(); EntityManager em = getEntityManager();
@ -68,7 +69,8 @@ public class CustomDate extends AbstractEntityTest {
timestamp2 = System.currentTimeMillis(); timestamp2 = System.currentTimeMillis();
Thread.sleep(100); Thread.sleep(1100); // CustomDateRevEntity.dateTimestamp field maps to date type which on some RDBMSs gets
// truncated to seconds (for example MySQL 5.1).
// Revision 2 // Revision 2
em.getTransaction().begin(); em.getTransaction().begin();

View File

@ -4,6 +4,8 @@ import java.util.Arrays;
import java.util.Properties; import java.util.Properties;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import org.hibernate.dialect.H2Dialect;
import org.hibernate.testing.RequiresDialect;
import org.junit.Test; import org.junit.Test;
import org.hibernate.cfg.Environment; import org.hibernate.cfg.Environment;
@ -18,6 +20,7 @@ import org.hibernate.mapping.Table;
* exist in a different database schema. * exist in a different database schema.
* @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com) * @author Lukasz Antoniak (lukasz dot antoniak at gmail dot com)
*/ */
@RequiresDialect({H2Dialect.class})
public class DifferentDBSchemaTest extends AbstractEntityTest { public class DifferentDBSchemaTest extends AbstractEntityTest {
private static final String SCHEMA_NAME = "ENVERS_AUDIT"; private static final String SCHEMA_NAME = "ENVERS_AUDIT";
private Integer steId = null; private Integer steId = null;

View File

@ -32,6 +32,7 @@ import java.util.Set;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
import org.hibernate.dialect.MySQL5Dialect;
import org.junit.Test; import org.junit.Test;
import org.hibernate.Session; import org.hibernate.Session;
@ -425,10 +426,15 @@ public class ValidityAuditStrategyRevEndTsTest extends AbstractEntityTest {
if (revendTimestamp == null) { if (revendTimestamp == null) {
assert revEnd == null; assert revEnd == null;
} else {
if (getDialect() instanceof MySQL5Dialect) {
// MySQL5 DATETIME column type does not contain milliseconds.
assert revendTimestamp.getTime() == (revEnd.getTimestamp() - (revEnd.getTimestamp() % 1000));
} else { } else {
assert revendTimestamp.getTime() == revEnd.getTimestamp(); assert revendTimestamp.getTime() == revEnd.getTimestamp();
} }
} }
} }
}
} }