@Test public void testEnableStatistics() { Properties p = createProperties(); p.setProperty("hibernate.cache.infinispan.statistics", "true"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.lifespan", "60000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.max_idle", "30000"); p.setProperty("hibernate.cache.infinispan.entity.cfg", "myentity-cache"); p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "FIFO"); p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000"); p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "10000"); InfinispanRegionFactory factory = createRegionFactory(p); try { EmbeddedCacheManager manager = factory.getCacheManager(); assertTrue(manager.getCacheManagerConfiguration().globalJmxStatistics().enabled()); EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Address", p, MUTABLE_NON_VERSIONED); AdvancedCache cache = region.getCache(); assertTrue(factory.getTypeOverrides().get("entity").isExposeStatistics()); assertTrue(cache.getCacheConfiguration().jmxStatistics().enabled()); region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Person", p, MUTABLE_NON_VERSIONED); cache = region.getCache(); assertTrue(factory.getTypeOverrides().get("com.acme.Person").isExposeStatistics()); assertTrue(cache.getCacheConfiguration().jmxStatistics().enabled()); final String query = "org.hibernate.cache.internal.StandardQueryCache"; QueryResultsRegionImpl queryRegion = (QueryResultsRegionImpl) factory.buildQueryResultsRegion(query, p); cache = queryRegion.getCache(); assertTrue(factory.getTypeOverrides().get("query").isExposeStatistics()); assertTrue(cache.getCacheConfiguration().jmxStatistics().enabled()); final String timestamps = "org.hibernate.cache.spi.UpdateTimestampsCache"; ConfigurationBuilder builder = new ConfigurationBuilder(); builder.clustering().stateTransfer().fetchInMemoryState(true); manager.defineConfiguration("timestamps", builder.build()); TimestampsRegionImpl timestampsRegion = (TimestampsRegionImpl) factory.buildTimestampsRegion(timestamps, p); cache = timestampsRegion.getCache(); assertTrue(factory.getTypeOverrides().get("timestamps").isExposeStatistics()); assertTrue(cache.getCacheConfiguration().jmxStatistics().enabled()); CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion("com.acme.Person.addresses", p, MUTABLE_NON_VERSIONED); cache = collectionRegion.getCache(); assertTrue(factory.getTypeOverrides().get("collection").isExposeStatistics()); assertTrue(cache.getCacheConfiguration().jmxStatistics().enabled()); } finally { factory.stop(); } }
@Test public void testBuildEntityRegionPersonPlusEntityOverridesWithoutCfg() { final String person = "com.acme.Person"; Properties p = createProperties(); // Third option, no cache defined for entity and overrides for generic entity data type and // entity itself. p.setProperty("hibernate.cache.infinispan.com.acme.Person.eviction.strategy", "LRU"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.lifespan", "60000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.max_idle", "30000"); p.setProperty("hibernate.cache.infinispan.entity.cfg", "myentity-cache"); p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "FIFO"); p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000"); p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "10000"); InfinispanRegionFactory factory = createRegionFactory(p); try { factory.getCacheManager(); assertNotNull(factory.getTypeOverrides().get(person)); assertFalse(factory.getDefinedConfigurations().contains(person)); EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion(person, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(person)); assertTrue(factory.getDefinedConfigurations().contains(person)); AdvancedCache cache = region.getCache(); Configuration cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy()); assertEquals(3000, cacheCfg.expiration().wakeUpInterval()); assertEquals(10000, cacheCfg.eviction().maxEntries()); assertEquals(60000, cacheCfg.expiration().lifespan()); assertEquals(30000, cacheCfg.expiration().maxIdle()); } finally { factory.stop(); } }
@Test public void testBuildImmutableEntityRegion() { AdvancedCache cache; Properties p = new Properties(); InfinispanRegionFactory factory = createRegionFactory(p); try { factory.getCacheManager(); EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Address", p, IMMUTABLE_NON_VERSIONED); assertNull(factory.getTypeOverrides().get("com.acme.Address")); cache = region.getCache(); Configuration cacheCfg = cache.getCacheConfiguration(); assertEquals( "Immutable entity should get non-transactional cache", TransactionMode.NON_TRANSACTIONAL, cacheCfg.transaction().transactionMode()); } finally { factory.stop(); } }
public void release() throws Exception { if (entityRegionMap != null) { for (final EntityRegionImpl region : entityRegionMap.values()) { Caches.withinTx( region.getTransactionManager(), new Callable<Void>() { @Override public Void call() throws Exception { region.getCache().withFlags(Flag.CACHE_MODE_LOCAL).clear(); return null; } }); region.getCache().stop(); } entityRegionMap.clear(); } if (collectionRegionMap != null) { for (final CollectionRegionImpl collectionRegion : collectionRegionMap.values()) { Caches.withinTx( collectionRegion.getTransactionManager(), new Callable<Void>() { @Override public Void call() throws Exception { collectionRegion.getCache().withFlags(Flag.CACHE_MODE_LOCAL).clear(); return null; } }); collectionRegion.getCache().stop(); } collectionRegionMap.clear(); } if (regionFactory != null) { // Currently the RegionFactory is shutdown by its registration with the CacheTestSetup from // CacheTestUtil when built regionFactory.stop(); } if (serviceRegistry != null) { serviceRegistry.destroy(); } }
@Test public void testBuildEntityCollectionRegionOverridesOnly() { AdvancedCache cache; Properties p = createProperties(); p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "LIRS"); p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000"); p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "30000"); p.setProperty("hibernate.cache.infinispan.collection.eviction.strategy", "LRU"); p.setProperty("hibernate.cache.infinispan.collection.eviction.wake_up_interval", "3500"); p.setProperty("hibernate.cache.infinispan.collection.eviction.max_entries", "35000"); InfinispanRegionFactory factory = createRegionFactory(p); try { factory.getCacheManager(); EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion("com.acme.Address", p, MUTABLE_NON_VERSIONED); assertNull(factory.getTypeOverrides().get("com.acme.Address")); cache = region.getCache(); Configuration cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy()); assertEquals(3000, cacheCfg.expiration().wakeUpInterval()); assertEquals(30000, cacheCfg.eviction().maxEntries()); // Max idle value comes from base XML configuration assertEquals(100000, cacheCfg.expiration().maxIdle()); CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion("com.acme.Person.addresses", p, MUTABLE_NON_VERSIONED); assertNull(factory.getTypeOverrides().get("com.acme.Person.addresses")); cache = collectionRegion.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy()); assertEquals(3500, cacheCfg.expiration().wakeUpInterval()); assertEquals(35000, cacheCfg.eviction().maxEntries()); assertEquals(100000, cacheCfg.expiration().maxIdle()); } finally { factory.stop(); } }
@Test public void testBuildEntityCollectionRegionsPersonPlusEntityCollectionOverrides() { final String person = "com.acme.Person"; final String address = "com.acme.Address"; final String car = "com.acme.Car"; final String addresses = "com.acme.Person.addresses"; final String parts = "com.acme.Car.parts"; Properties p = createProperties(); // First option, cache defined for entity and overrides for generic entity data type and entity // itself. p.setProperty("hibernate.cache.infinispan.com.acme.Person.cfg", "person-cache"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.eviction.strategy", "LRU"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.eviction.wake_up_interval", "2000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.eviction.max_entries", "5000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.lifespan", "60000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.expiration.max_idle", "30000"); p.setProperty("hibernate.cache.infinispan.entity.cfg", "myentity-cache"); p.setProperty("hibernate.cache.infinispan.entity.eviction.strategy", "LIRS"); p.setProperty("hibernate.cache.infinispan.entity.eviction.wake_up_interval", "3000"); p.setProperty("hibernate.cache.infinispan.entity.eviction.max_entries", "20000"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.addresses.cfg", "addresses-cache"); p.setProperty("hibernate.cache.infinispan.com.acme.Person.addresses.eviction.strategy", "LIRS"); p.setProperty( "hibernate.cache.infinispan.com.acme.Person.addresses.eviction.wake_up_interval", "2500"); p.setProperty( "hibernate.cache.infinispan.com.acme.Person.addresses.eviction.max_entries", "5500"); p.setProperty( "hibernate.cache.infinispan.com.acme.Person.addresses.expiration.lifespan", "65000"); p.setProperty( "hibernate.cache.infinispan.com.acme.Person.addresses.expiration.max_idle", "35000"); p.setProperty("hibernate.cache.infinispan.collection.cfg", "mycollection-cache"); p.setProperty("hibernate.cache.infinispan.collection.eviction.strategy", "LRU"); p.setProperty("hibernate.cache.infinispan.collection.eviction.wake_up_interval", "3500"); p.setProperty("hibernate.cache.infinispan.collection.eviction.max_entries", "25000"); InfinispanRegionFactory factory = createRegionFactory(p); try { EmbeddedCacheManager manager = factory.getCacheManager(); assertFalse(manager.getCacheManagerConfiguration().globalJmxStatistics().enabled()); assertNotNull(factory.getTypeOverrides().get(person)); assertFalse(factory.getDefinedConfigurations().contains(person)); assertNotNull(factory.getTypeOverrides().get(addresses)); assertFalse(factory.getDefinedConfigurations().contains(addresses)); AdvancedCache cache; EntityRegionImpl region = (EntityRegionImpl) factory.buildEntityRegion(person, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(person)); assertTrue(factory.getDefinedConfigurations().contains(person)); assertNull(factory.getTypeOverrides().get(address)); cache = region.getCache(); Configuration cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy()); assertEquals(2000, cacheCfg.expiration().wakeUpInterval()); assertEquals(5000, cacheCfg.eviction().maxEntries()); assertEquals(60000, cacheCfg.expiration().lifespan()); assertEquals(30000, cacheCfg.expiration().maxIdle()); assertFalse(cacheCfg.jmxStatistics().enabled()); region = (EntityRegionImpl) factory.buildEntityRegion(address, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(person)); assertTrue(factory.getDefinedConfigurations().contains(person)); assertNull(factory.getTypeOverrides().get(address)); cache = region.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy()); assertEquals(3000, cacheCfg.expiration().wakeUpInterval()); assertEquals(20000, cacheCfg.eviction().maxEntries()); assertFalse(cacheCfg.jmxStatistics().enabled()); region = (EntityRegionImpl) factory.buildEntityRegion(car, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(person)); assertTrue(factory.getDefinedConfigurations().contains(person)); assertNull(factory.getTypeOverrides().get(address)); cache = region.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy()); assertEquals(3000, cacheCfg.expiration().wakeUpInterval()); assertEquals(20000, cacheCfg.eviction().maxEntries()); assertFalse(cacheCfg.jmxStatistics().enabled()); CollectionRegionImpl collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(addresses, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(addresses)); assertTrue(factory.getDefinedConfigurations().contains(person)); assertNull(factory.getTypeOverrides().get(parts)); cache = collectionRegion.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LIRS, cacheCfg.eviction().strategy()); assertEquals(2500, cacheCfg.expiration().wakeUpInterval()); assertEquals(5500, cacheCfg.eviction().maxEntries()); assertEquals(65000, cacheCfg.expiration().lifespan()); assertEquals(35000, cacheCfg.expiration().maxIdle()); assertFalse(cacheCfg.jmxStatistics().enabled()); collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(addresses)); assertTrue(factory.getDefinedConfigurations().contains(addresses)); assertNull(factory.getTypeOverrides().get(parts)); cache = collectionRegion.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy()); assertEquals(3500, cacheCfg.expiration().wakeUpInterval()); assertEquals(25000, cacheCfg.eviction().maxEntries()); assertFalse(cacheCfg.jmxStatistics().enabled()); collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts, p, MUTABLE_NON_VERSIONED); assertNotNull(factory.getTypeOverrides().get(addresses)); assertTrue(factory.getDefinedConfigurations().contains(addresses)); assertNull(factory.getTypeOverrides().get(parts)); cache = collectionRegion.getCache(); cacheCfg = cache.getCacheConfiguration(); assertEquals(EvictionStrategy.LRU, cacheCfg.eviction().strategy()); assertEquals(3500, cacheCfg.expiration().wakeUpInterval()); assertEquals(25000, cacheCfg.eviction().maxEntries()); assertFalse(cacheCfg.jmxStatistics().enabled()); } finally { factory.stop(); } }