|
|
|
@ -1,31 +1,35 @@
|
|
|
|
|
package org.redisson.hibernate;
|
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
|
|
import org.hibernate.Session;
|
|
|
|
|
import org.hibernate.cfg.Configuration;
|
|
|
|
|
import org.hibernate.cfg.Environment;
|
|
|
|
|
import org.hibernate.query.Query;
|
|
|
|
|
import org.hibernate.stat.Statistics;
|
|
|
|
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
|
|
|
|
import org.junit.Assert;
|
|
|
|
|
import org.junit.Before;
|
|
|
|
|
import org.junit.ClassRule;
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
import org.hibernate.testing.orm.junit.BaseSessionFactoryFunctionalTest;
|
|
|
|
|
import org.junit.jupiter.api.Assertions;
|
|
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
import org.testcontainers.containers.FixedHostPortGenericContainer;
|
|
|
|
|
import org.testcontainers.containers.GenericContainer;
|
|
|
|
|
import org.testcontainers.junit.jupiter.Container;
|
|
|
|
|
import org.testcontainers.junit.jupiter.Testcontainers;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @author Nikita Koksharov
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
@Testcontainers
|
|
|
|
|
public class TransactionalTest extends BaseSessionFactoryFunctionalTest {
|
|
|
|
|
|
|
|
|
|
@Container
|
|
|
|
|
public static final GenericContainer H2 = new FixedHostPortGenericContainer("oscarfonts/h2:latest")
|
|
|
|
|
.withFixedExposedPort(1521, 1521);
|
|
|
|
|
|
|
|
|
|
@ClassRule
|
|
|
|
|
public static GenericContainer REDIS = new FixedHostPortGenericContainer("redis:latest")
|
|
|
|
|
@Container
|
|
|
|
|
public static final GenericContainer REDIS = new FixedHostPortGenericContainer("redis:latest")
|
|
|
|
|
.withFixedExposedPort(6379, 6379);
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -33,22 +37,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
return new Class[] { ItemTransactional.class};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void configure(Configuration cfg) {
|
|
|
|
|
super.configure(cfg);
|
|
|
|
|
// cfg.setProperty(Environment.DRIVER, org.h2.Driver.class.getName());
|
|
|
|
|
// cfg.setProperty(Environment.URL, "jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;");
|
|
|
|
|
// cfg.setProperty(Environment.USER, "sa");
|
|
|
|
|
// cfg.setProperty(Environment.PASS, "");
|
|
|
|
|
cfg.setProperty(Environment.CACHE_REGION_PREFIX, "");
|
|
|
|
|
cfg.setProperty(Environment.GENERATE_STATISTICS, "true");
|
|
|
|
|
|
|
|
|
|
cfg.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "true");
|
|
|
|
|
cfg.setProperty(Environment.USE_QUERY_CACHE, "true");
|
|
|
|
|
cfg.setProperty(Environment.CACHE_REGION_FACTORY, RedissonRegionFactory.class.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Before
|
|
|
|
|
@BeforeEach
|
|
|
|
|
public void before() {
|
|
|
|
|
sessionFactory().getCache().evictAllRegions();
|
|
|
|
|
sessionFactory().getStatistics().clear();
|
|
|
|
@ -58,7 +47,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
public void testQuery() {
|
|
|
|
|
Statistics stats = sessionFactory().getStatistics();
|
|
|
|
|
|
|
|
|
|
Session s = openSession();
|
|
|
|
|
Session s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
ItemTransactional item = new ItemTransactional("data");
|
|
|
|
|
item.getEntries().addAll(Arrays.asList("a", "b", "c"));
|
|
|
|
@ -66,7 +55,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.flush();
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
Query query = s.getNamedQuery("testQuery");
|
|
|
|
|
query.setCacheable(true);
|
|
|
|
@ -76,9 +65,9 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("myTestQuery").getPutCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("myTestQuery").getPutCount());
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
Query query2 = s.getNamedQuery("testQuery");
|
|
|
|
|
query2.setCacheable(true);
|
|
|
|
@ -89,7 +78,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("myTestQuery").getHitCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("myTestQuery").getHitCount());
|
|
|
|
|
|
|
|
|
|
stats.logSummary();
|
|
|
|
|
|
|
|
|
@ -100,7 +89,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
Long id = null;
|
|
|
|
|
|
|
|
|
|
Statistics stats = sessionFactory().getStatistics();
|
|
|
|
|
Session s = openSession();
|
|
|
|
|
Session s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
ItemTransactional item = new ItemTransactional("data");
|
|
|
|
|
item.getEntries().addAll(Arrays.asList("a", "b", "c"));
|
|
|
|
@ -108,16 +97,16 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.flush();
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
item = (ItemTransactional) s.get(ItemTransactional.class, id);
|
|
|
|
|
assertThat(item.getEntries()).containsExactly("a", "b", "c");
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item_entries").getPutCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item_entries").getPutCount());
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
item = (ItemTransactional) s.get(ItemTransactional.class, id);
|
|
|
|
|
assertThat(item.getEntries()).containsExactly("a", "b", "c");
|
|
|
|
@ -125,13 +114,13 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item_entries").getHitCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item_entries").getHitCount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testNaturalId() {
|
|
|
|
|
Statistics stats = sessionFactory().getStatistics();
|
|
|
|
|
Session s = openSession();
|
|
|
|
|
Session s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
ItemTransactional item = new ItemTransactional("data");
|
|
|
|
|
item.setNid("123");
|
|
|
|
@ -139,10 +128,10 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.flush();
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item").getPutCount());
|
|
|
|
|
Assert.assertEquals(1, stats.getNaturalIdStatistics(ItemTransactional.class.getName()).getCachePutCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item").getPutCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getNaturalIdStatistics(ItemTransactional.class.getName()).getCachePutCount());
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
item = (ItemTransactional) s.bySimpleNaturalId(ItemTransactional.class).load("123");
|
|
|
|
|
assertThat(item).isNotNull();
|
|
|
|
@ -150,8 +139,8 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item").getHitCount());
|
|
|
|
|
Assert.assertEquals(1, stats.getNaturalIdStatistics(ItemTransactional.class.getName()).getCacheHitCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item").getHitCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getNaturalIdStatistics(ItemTransactional.class.getName()).getCacheHitCount());
|
|
|
|
|
|
|
|
|
|
sessionFactory().getStatistics().logSummary();
|
|
|
|
|
}
|
|
|
|
@ -160,16 +149,16 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
public void testUpdateWithRefreshThenRollback() {
|
|
|
|
|
Statistics stats = sessionFactory().getStatistics();
|
|
|
|
|
Long id = null;
|
|
|
|
|
Session s = openSession();
|
|
|
|
|
Session s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
ItemTransactional item = new ItemTransactional( "data" );
|
|
|
|
|
id = (Long) s.save( item );
|
|
|
|
|
s.flush();
|
|
|
|
|
s.getTransaction().commit();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item").getPutCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item").getPutCount());
|
|
|
|
|
|
|
|
|
|
s = openSession();
|
|
|
|
|
s = sessionFactory().openSession();
|
|
|
|
|
s.beginTransaction();
|
|
|
|
|
item = (ItemTransactional) s.get(ItemTransactional.class, id);
|
|
|
|
|
item.setName("newdata");
|
|
|
|
@ -180,7 +169,7 @@ public class TransactionalTest extends BaseCoreFunctionalTestCase {
|
|
|
|
|
s.clear();
|
|
|
|
|
s.close();
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(1, stats.getDomainDataRegionStatistics("item").getHitCount());
|
|
|
|
|
Assertions.assertEquals(1, stats.getDomainDataRegionStatistics("item").getHitCount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|