HHH-9802 : Allow running hibernate-infispan unit tests using Infinispan 7.2.1.Final as a run-time dependency

This commit is contained in:
Gail Badner 2015-05-18 15:27:52 -07:00
parent 62c6cd9aba
commit e37039cefb
2 changed files with 52 additions and 11 deletions

View File

@ -15,7 +15,7 @@ if ( useInfinispan7ForTesting() ) {
private boolean useInfinispan7ForTesting() {
if ( project.hasProperty( 'useInfinispan7ForTesting' ) ) {
println 'useInfinispan7ForTesting = ' + useInfinispan7ForTesting
return useInfinispan7ForTesting.equals( 'true' );
return useInfinispan7ForTesting.equals( 'true' );
}
else {
return false;
@ -57,6 +57,10 @@ test {
// Use Infinispan's test JGroups stack that uses TEST_PING
systemProperties['hibernate.cache.infinispan.jgroups_cfg'] = '2lc-test-tcp.xml'
// systemProperties['log4j.configuration'] = 'file:/log4j/log4j-infinispan.xml'
if ( useInfinispan7ForTesting() ) {
systemProperties['hibernate.cache.infinispan.cfg'] = 'src/test/resources/infinispan-7-configs.xml';
}
enabled = true
}

View File

@ -21,6 +21,8 @@
*/
package org.hibernate.test.cache.infinispan;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
import javax.transaction.TransactionManager;
@ -31,10 +33,12 @@ import org.infinispan.AdvancedCache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.EvictionConfiguration;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.eviction.EvictionStrategy;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;
import org.jboss.logging.Logger;
import org.junit.Test;
import org.hibernate.cache.CacheException;
@ -63,6 +67,7 @@ import static org.junit.Assert.fail;
* @since 3.5
*/
public class InfinispanRegionFactoryTestCase {
private static final Logger log = Logger.getLogger( InfinispanRegionFactoryTestCase.class );
@Test
public void testConfigurationProcessing() {
@ -158,7 +163,7 @@ public class InfinispanRegionFactoryTestCase {
Configuration cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy());
assertEquals(2000, cacheCfg.expiration().wakeUpInterval());
assertEquals(5000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 5000, cacheCfg.eviction() );
assertEquals(60000, cacheCfg.expiration().lifespan());
assertEquals(30000, cacheCfg.expiration().maxIdle());
assertFalse(cacheCfg.jmxStatistics().enabled());
@ -171,7 +176,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy());
assertEquals(3000, cacheCfg.expiration().wakeUpInterval());
assertEquals(20000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 20000, cacheCfg.eviction() );
assertFalse(cacheCfg.jmxStatistics().enabled());
region = (EntityRegionImpl) factory.buildEntityRegion(car, p, null);
@ -182,7 +187,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy());
assertEquals(3000, cacheCfg.expiration().wakeUpInterval());
assertEquals(20000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 20000, cacheCfg.eviction() );
assertFalse(cacheCfg.jmxStatistics().enabled());
CollectionRegionImpl collectionRegion = (CollectionRegionImpl)
@ -194,7 +199,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy());
assertEquals(2500, cacheCfg.expiration().wakeUpInterval());
assertEquals(5500, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 5500, cacheCfg.eviction() );
assertEquals(65000, cacheCfg.expiration().lifespan());
assertEquals(35000, cacheCfg.expiration().maxIdle());
assertFalse(cacheCfg.jmxStatistics().enabled());
@ -207,7 +212,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy());
assertEquals(3500, cacheCfg.expiration().wakeUpInterval());
assertEquals(25000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 25000, cacheCfg.eviction() );
assertFalse(cacheCfg.jmxStatistics().enabled());
collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts, p, null);
@ -218,7 +223,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy());
assertEquals(3500, cacheCfg.expiration().wakeUpInterval());
assertEquals(25000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries(25000, cacheCfg.eviction());
assertFalse(cacheCfg.jmxStatistics().enabled());
} finally {
factory.stop();
@ -244,7 +249,7 @@ public class InfinispanRegionFactoryTestCase {
Configuration cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy());
assertEquals(3000, cacheCfg.expiration().wakeUpInterval());
assertEquals(30000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries(30000, cacheCfg.eviction());
// Max idle value comes from base XML configuration
assertEquals(100000, cacheCfg.expiration().maxIdle());
@ -255,7 +260,7 @@ public class InfinispanRegionFactoryTestCase {
cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy());
assertEquals(3500, cacheCfg.expiration().wakeUpInterval());
assertEquals(35000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 35000, cacheCfg.eviction() );
assertEquals(100000, cacheCfg.expiration().maxIdle());
} finally {
factory.stop();
@ -285,7 +290,7 @@ public class InfinispanRegionFactoryTestCase {
Configuration cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy());
assertEquals(3000, cacheCfg.expiration().wakeUpInterval());
assertEquals(10000, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 10000, cacheCfg.eviction() );
assertEquals(60000, cacheCfg.expiration().lifespan());
assertEquals(30000, cacheCfg.expiration().maxIdle());
} finally {
@ -442,7 +447,7 @@ public class InfinispanRegionFactoryTestCase {
Configuration cacheCfg = cache.getCacheConfiguration();
assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy());
assertEquals(2222, cacheCfg.expiration().wakeUpInterval());
assertEquals(11111, cacheCfg.eviction().maxEntries());
assertEqualsEvictionConfigurationMaxEntries( 11111, cacheCfg.eviction() );
} finally {
factory.stop();
}
@ -589,4 +594,36 @@ public class InfinispanRegionFactoryTestCase {
}
return properties;
}
private static void assertEqualsEvictionConfigurationMaxEntries(int maxEntriesExpected, EvictionConfiguration evictionConfiguration) {
// In Infinispan 6.0.0.Final, EvictionConfiguration.maxEntries() returns int.
// In Infinispan 7.2.1.Final, EvictionConfiguration.maxEntries() returns long.
// This method is intended to deal with this difference in return types to ensure that
// EvictionConfiguration.maxEntries() returns the correct value.
try {
final Method method = EvictionConfiguration.class.getMethod( "maxEntries" );
log.info( EvictionConfiguration.class.getName() + "." + method.getName() + " returns " + method.getReturnType() );
if ( int.class.isAssignableFrom( method.getReturnType() ) ) {
assertEquals( maxEntriesExpected, method.invoke( evictionConfiguration ) );
}
else if ( long.class.isAssignableFrom( method.getReturnType() ) ) {
assertEquals( (long) maxEntriesExpected, method.invoke( evictionConfiguration ) );
}
else {
fail(
"Unexpected return type from " +
EvictionConfiguration.class.getName() + "." + method.getName() + ": " +
method.getReturnType() );
}
}
catch (NoSuchMethodException ex) {
fail( ex.getMessage() );
}
catch (IllegalAccessException ex) {
fail( ex.getMessage() );
}
catch ( InvocationTargetException ex) {
fail( ex.getMessage() );
}
}
}