Author: galder.zamarreno(a)jboss.com
Date: 2010-01-25 10:47:02 -0500 (Mon, 25 Jan 2010)
New Revision: 18617
Modified:
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
Log:
[HHH-4814] (Configure global/cache level JMX statistics from Hibernate configuration file)
Added hibernate.cache.infinispan.statistics that enables cache manager and individual
cache statistics.
Modified:
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java
===================================================================
---
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java 2010-01-25
07:56:21 UTC (rev 18616)
+++
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/InfinispanRegionFactory.java 2010-01-25
15:47:02 UTC (rev 18617)
@@ -55,13 +55,15 @@
private static final String STRATEGY_SUFFIX = ".eviction.strategy";
private static final String WAKE_UP_INTERVAL_SUFFIX =
".eviction.wake_up_interval";
-
+
private static final String MAX_ENTRIES_SUFFIX = ".eviction.max_entries";
-
+
private static final String LIFESPAN_SUFFIX = ".expiration.lifespan";
-
+
private static final String MAX_IDLE_SUFFIX = ".expiration.max_idle";
-
+
+// private static final String STATISTICS_SUFFIX = ".statistics";
+
/**
* Classpath or filesystem resource containing Infinispan configurations the factory
should use.
*
@@ -69,6 +71,8 @@
*/
public static final String INFINISPAN_CONFIG_RESOURCE_PROP =
"hibernate.cache.infinispan.cfg";
+ public static final String INFINISPAN_GLOBAL_STATISTICS_PROP =
"hibernate.cache.infinispan.statistics";
+
private static final String ENTITY_KEY = "entity";
/**
@@ -107,35 +111,35 @@
* @see #DEF_QUERY_RESOURCE
*/
public static final String QUERY_CACHE_RESOURCE_PROP = PREFIX + QUERY_KEY +
CONFIG_SUFFIX;
-
+
/**
* Default value for {@link #INFINISPAN_RESOURCE_PROP}. Specifies the
"infinispan-configs.xml" file in this package.
*/
public static final String DEF_INFINISPAN_CONFIG_RESOURCE =
"org/hibernate/cache/infinispan/builder/infinispan-configs.xml";
-
+
/**
* Default value for {@link #ENTITY_CACHE_RESOURCE_PROP}.
*/
public static final String DEF_ENTITY_RESOURCE = "entity";
-
+
/**
* Default value for {@link #TIMESTAMPS_CACHE_RESOURCE_PROP}.
*/
public static final String DEF_TIMESTAMPS_RESOURCE = "timestamps";
-
+
/**
* Default value for {@link #QUERY_CACHE_RESOURCE_PROP}.
*/
public static final String DEF_QUERY_RESOURCE = "local-query";
-
+
private CacheManager manager;
-
+
private final Map<String, TypeOverrides> typeOverrides = new HashMap<String,
TypeOverrides>();
-
+
private final Set<String> definedConfigurations = new HashSet<String>();
-
+
private org.infinispan.transaction.lookup.TransactionManagerLookup
transactionManagerlookup;
-
+
private TransactionManager transactionManager;
/**
@@ -206,12 +210,12 @@
return true;
}
- @Override
- public AccessType getDefaultAccessType() {
- return AccessType.TRANSACTIONAL;
- }
+ @Override
+ public AccessType getDefaultAccessType() {
+ return AccessType.TRANSACTIONAL;
+ }
- /**
+ /**
* {@inheritDoc}
*/
public long nextTimestamp() {
@@ -234,7 +238,6 @@
try {
transactionManagerlookup = new HibernateTransactionManagerLookup(settings,
properties);
transactionManager = transactionManagerlookup.getTransactionManager();
-
manager = createCacheManager(properties);
initGenericDataTypeOverrides();
Enumeration keys = properties.propertyNames();
@@ -278,7 +281,13 @@
protected CacheManager createCacheManager(Properties properties) throws CacheException
{
try {
String configLoc = PropertiesHelper.getString(INFINISPAN_CONFIG_RESOURCE_PROP,
properties, DEF_INFINISPAN_CONFIG_RESOURCE);
- return new DefaultCacheManager(configLoc);
+ CacheManager manager = new DefaultCacheManager(configLoc, false);
+ String globalStats =
PropertiesHelper.extractPropertyValue(INFINISPAN_GLOBAL_STATISTICS_PROP, properties);
+ if (globalStats != null) {
+
manager.getGlobalConfiguration().setExposeGlobalJmxStatistics(Boolean.parseBoolean(globalStats));
+ }
+ manager.start();
+ return manager;
} catch (IOException e) {
throw new CacheException("Unable to create default cache manager",
e);
}
@@ -299,12 +308,7 @@
typeOverrides.put(QUERY_KEY, queryOverrides);
return typeOverrides;
}
-
-// private boolean isGenericDataTypeProperty(String property) {
-// return property.startsWith(PREFIX + ENTITY_KEY) || property.startsWith(PREFIX +
COLLECTION_KEY)
-// || property.startsWith(PREFIX + QUERY_KEY) || property.startsWith(PREFIX +
TIMESTAMP_KEY);
-// }
-
+
private void dissectProperty(int prefixLoc, String key, Properties properties) {
TypeOverrides cfgOverride = null;
int suffixLoc = -1;
@@ -327,6 +331,10 @@
cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc);
cfgOverride.setExpirationMaxIdle(Long.parseLong(PropertiesHelper.extractPropertyValue(key,
properties)));
}
+// else if ((suffixLoc = key.indexOf(STATISTICS_SUFFIX)) != -1) {
+// cfgOverride = getOrCreateConfig(prefixLoc, key, suffixLoc);
+//
cfgOverride.setExposeStatistics(Boolean.parseBoolean(PropertiesHelper.extractPropertyValue(key,
properties)));
+// }
}
private TypeOverrides getOrCreateConfig(int prefixLoc, String key, int suffixLoc) {
@@ -338,11 +346,11 @@
}
return cfgOverride;
}
-
+
private void defineGenericDataTypeCacheConfigurations(Settings settings, Properties
properties) throws CacheException {
String[] defaultGenericDataTypes = new String[]{ENTITY_KEY, COLLECTION_KEY,
TIMESTAMPS_KEY, QUERY_KEY};
for (String type : defaultGenericDataTypes) {
- TypeOverrides override = typeOverrides.get(type);
+ TypeOverrides override = overrideStatisticsIfPresent(typeOverrides.get(type),
properties);
String cacheName = override.getCacheName();
Configuration newCacheCfg = override.createInfinispanConfiguration();
// Apply overrides
@@ -354,7 +362,7 @@
override.validateInfinispanConfiguration(cacheConfig);
}
}
-
+
private Cache getCache(String regionName, String typeKey, Properties properties) {
TypeOverrides regionOverride = typeOverrides.get(regionName);
if (!definedConfigurations.contains(regionName)) {
@@ -362,6 +370,7 @@
Configuration regionCacheCfg = null;
if (regionOverride != null) {
if (log.isDebugEnabled()) log.debug("Entity cache region specific
configuration exists: " + regionOverride);
+ regionOverride = overrideStatisticsIfPresent(regionOverride, properties);
regionCacheCfg = regionOverride.createInfinispanConfiguration();
String cacheName = regionOverride.getCacheName();
if (cacheName != null) // Region specific override with a given cache name
@@ -381,7 +390,7 @@
}
return manager.getCache(regionName);
}
-
+
private Configuration configureTransactionManager(Configuration regionOverrides,
String templateCacheName, Properties properties) {
// Get existing configuration to verify whether a tm was configured or not.
Configuration templateConfig = manager.defineConfiguration(templateCacheName, new
Configuration());
@@ -395,4 +404,12 @@
}
return regionOverrides;
}
+
+ private TypeOverrides overrideStatisticsIfPresent(TypeOverrides override, Properties
properties) {
+ String globalStats =
PropertiesHelper.extractPropertyValue(INFINISPAN_GLOBAL_STATISTICS_PROP, properties);
+ if (globalStats != null) {
+ override.setExposeStatistics(Boolean.parseBoolean(globalStats));
+ }
+ return override;
+ }
}
\ No newline at end of file
Modified:
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java
===================================================================
---
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java 2010-01-25
07:56:21 UTC (rev 18616)
+++
core/trunk/cache-infinispan/src/main/java/org/hibernate/cache/infinispan/TypeOverrides.java 2010-01-25
15:47:02 UTC (rev 18617)
@@ -21,7 +21,9 @@
*/
package org.hibernate.cache.infinispan;
+import java.util.HashSet;
import java.util.Locale;
+import java.util.Set;
import org.hibernate.cache.CacheException;
import org.infinispan.config.Configuration;
@@ -36,19 +38,23 @@
* @since 3.5
*/
public class TypeOverrides {
-
+
+ private final Set<String> overridden = new HashSet<String>();
+
private String cacheName;
-
+
private EvictionStrategy evictionStrategy;
-
- private long evictionWakeUpInterval = Long.MIN_VALUE;
-
- private int evictionMaxEntries = Integer.MIN_VALUE;
-
- private long expirationLifespan = Long.MIN_VALUE;
-
- private long expirationMaxIdle = Long.MIN_VALUE;
+ private long evictionWakeUpInterval;
+
+ private int evictionMaxEntries;
+
+ private long expirationLifespan;
+
+ private long expirationMaxIdle;
+
+ private boolean isExposeStatistics;
+
public String getCacheName() {
return cacheName;
}
@@ -62,6 +68,7 @@
}
public void setEvictionStrategy(String evictionStrategy) {
+ markAsOverriden("evictionStrategy");
this.evictionStrategy = EvictionStrategy.valueOf(uc(evictionStrategy));
}
@@ -70,6 +77,7 @@
}
public void setEvictionWakeUpInterval(long evictionWakeUpInterval) {
+ markAsOverriden("evictionWakeUpInterval");
this.evictionWakeUpInterval = evictionWakeUpInterval;
}
@@ -78,6 +86,7 @@
}
public void setEvictionMaxEntries(int evictionMaxEntries) {
+ markAsOverriden("evictionMaxEntries");
this.evictionMaxEntries = evictionMaxEntries;
}
@@ -86,6 +95,7 @@
}
public void setExpirationLifespan(long expirationLifespan) {
+ markAsOverriden("expirationLifespan");
this.expirationLifespan = expirationLifespan;
}
@@ -94,32 +104,34 @@
}
public void setExpirationMaxIdle(long expirationMaxIdle) {
+ markAsOverriden("expirationMaxIdle");
this.expirationMaxIdle = expirationMaxIdle;
}
-
-// public boolean isConvertedToInfinispanConfiguration() {
-// return convertedToInfinispanConfiguration;
-// }
-
+
+ public boolean isExposeStatistics() {
+ return isExposeStatistics;
+ }
+
+ public void setExposeStatistics(boolean isExposeStatistics) {
+ markAsOverriden("isExposeStatistics");
+ this.isExposeStatistics = isExposeStatistics;
+ }
+
public Configuration createInfinispanConfiguration() {
Configuration cacheCfg = new Configuration();
- // If eviction strategy is different from null, an override has been defined
- if (evictionStrategy != null) cacheCfg.setEvictionStrategy(evictionStrategy);
- // If eviction wake up interval is different from min value, an override has been
defined
- // Checking for -1 might not be enough because user might have defined -1 in the
config.
- // Same applies to other configuration options.
- if (evictionWakeUpInterval != Long.MIN_VALUE)
cacheCfg.setEvictionWakeUpInterval(evictionWakeUpInterval);
- if (evictionMaxEntries != Integer.MIN_VALUE)
cacheCfg.setEvictionMaxEntries(evictionMaxEntries);
- if (expirationLifespan != Long.MIN_VALUE)
cacheCfg.setExpirationLifespan(expirationLifespan);
- if (expirationMaxIdle != Long.MIN_VALUE)
cacheCfg.setExpirationMaxIdle(expirationMaxIdle);
-// convertedToInfinispanConfiguration = true;
+ if (overridden.contains("evictionStrategy"))
cacheCfg.setEvictionStrategy(evictionStrategy);
+ if (overridden.contains("evictionWakeUpInterval"))
cacheCfg.setEvictionWakeUpInterval(evictionWakeUpInterval);
+ if (overridden.contains("evictionMaxEntries"))
cacheCfg.setEvictionMaxEntries(evictionMaxEntries);
+ if (overridden.contains("expirationLifespan"))
cacheCfg.setExpirationLifespan(expirationLifespan);
+ if (overridden.contains("expirationMaxIdle"))
cacheCfg.setExpirationMaxIdle(expirationMaxIdle);
+ if (overridden.contains("isExposeStatistics"))
cacheCfg.setExposeJmxStatistics(isExposeStatistics);
return cacheCfg;
}
-
+
public void validateInfinispanConfiguration(Configuration configuration) throws
CacheException {
// no-op
}
-
+
@Override
public String toString() {
return new StringBuilder().append(getClass().getSimpleName()).append('{')
@@ -131,8 +143,12 @@
.append(", maxIdle=").append(expirationMaxIdle)
.append('}').toString();
}
-
+
private String uc(String s) {
return s == null ? null : s.toUpperCase(Locale.ENGLISH);
}
+
+ private void markAsOverriden(String fieldName) {
+ overridden.add(fieldName);
+ }
}
Modified:
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java
===================================================================
---
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java 2010-01-25
07:56:21 UTC (rev 18616)
+++
core/trunk/cache-infinispan/src/test/java/org/hibernate/test/cache/infinispan/InfinispanRegionFactoryTestCase.java 2010-01-25
15:47:02 UTC (rev 18617)
@@ -121,6 +121,7 @@
CacheManager manager = factory.getCacheManager();
manager.getGlobalConfiguration().setTransportClass(null);
try {
+ assertFalse(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
assertNotNull(factory.getTypeOverrides().get(person));
assertFalse(factory.getDefinedConfigurations().contains(person));
assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -138,6 +139,7 @@
assertEquals(5000, cacheCfg.getEvictionMaxEntries());
assertEquals(60000, cacheCfg.getExpirationLifespan());
assertEquals(30000, cacheCfg.getExpirationMaxIdle());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
region = (EntityRegionImpl) factory.buildEntityRegion(address, p, null);
assertNotNull(factory.getTypeOverrides().get(person));
@@ -148,6 +150,7 @@
assertEquals(EvictionStrategy.FIFO, cacheCfg.getEvictionStrategy());
assertEquals(3000, cacheCfg.getEvictionWakeUpInterval());
assertEquals(20000, cacheCfg.getEvictionMaxEntries());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
region = (EntityRegionImpl) factory.buildEntityRegion(car, p, null);
assertNotNull(factory.getTypeOverrides().get(person));
@@ -158,6 +161,7 @@
assertEquals(EvictionStrategy.FIFO, cacheCfg.getEvictionStrategy());
assertEquals(3000, cacheCfg.getEvictionWakeUpInterval());
assertEquals(20000, cacheCfg.getEvictionMaxEntries());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
CollectionRegionImpl collectionRegion = (CollectionRegionImpl)
factory.buildCollectionRegion(addresses, p, null);
assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -170,6 +174,7 @@
assertEquals(5500, cacheCfg.getEvictionMaxEntries());
assertEquals(65000, cacheCfg.getExpirationLifespan());
assertEquals(35000, cacheCfg.getExpirationMaxIdle());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts,
p, null);
assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -180,6 +185,7 @@
assertEquals(EvictionStrategy.LRU, cacheCfg.getEvictionStrategy());
assertEquals(3500, cacheCfg.getEvictionWakeUpInterval());
assertEquals(25000, cacheCfg.getEvictionMaxEntries());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
collectionRegion = (CollectionRegionImpl) factory.buildCollectionRegion(parts,
p, null);
assertNotNull(factory.getTypeOverrides().get(addresses));
@@ -190,6 +196,7 @@
assertEquals(EvictionStrategy.LRU, cacheCfg.getEvictionStrategy());
assertEquals(3500, cacheCfg.getEvictionWakeUpInterval());
assertEquals(25000, cacheCfg.getEvictionMaxEntries());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
} finally {
factory.stop();
}
@@ -282,7 +289,7 @@
} catch(CacheException ce) {
}
}
-
+
public void testBuildDefaultTimestampsRegion() {
final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
Properties p = new Properties();
@@ -302,6 +309,7 @@
assertEquals(EvictionStrategy.NONE, cacheCfg.getEvictionStrategy());
assertEquals(CacheMode.REPL_ASYNC, cacheCfg.getCacheMode());
assertTrue(cacheCfg.isUseLazyDeserialization());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
} finally {
factory.stop();
}
@@ -329,11 +337,12 @@
assertEquals(EvictionStrategy.NONE, cacheCfg.getEvictionStrategy());
assertEquals(CacheMode.REPL_SYNC, cacheCfg.getCacheMode());
assertFalse(cacheCfg.isUseLazyDeserialization());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
} finally {
factory.stop();
}
}
-
+
public void testBuildTimestamRegionWithCacheNameOverride() {
final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
Properties p = new Properties();
@@ -370,7 +379,7 @@
factory.stop();
}
}
-
+
public void testBuildTimestamRegionWithNoneEvictionOverride() {
final String timestamps = "org.hibernate.cache.UpdateTimestampsCache";
Properties p = new Properties();
@@ -389,7 +398,7 @@
factory.stop();
}
}
-
+
public void testBuildQueryRegion() {
final String query = "org.hibernate.cache.StandardQueryCache";
Properties p = new Properties();
@@ -403,9 +412,107 @@
CacheAdapter cache = region.getCacheAdapter();
Configuration cacheCfg = cache.getConfiguration();
assertEquals(CacheMode.LOCAL, cacheCfg.getCacheMode());
+ assertFalse(cacheCfg.isExposeJmxStatistics());
} finally {
factory.stop();
}
}
+ public void testEnableStatistics() {
+ Properties p = new Properties();
+ 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 = new InfinispanRegionFactory();
+ factory.start(null, p);
+ CacheManager manager = factory.getCacheManager();
+ manager.getGlobalConfiguration().setTransportClass(null);
+ try {
+ assertTrue(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
+ EntityRegionImpl region = (EntityRegionImpl)
factory.buildEntityRegion("com.acme.Address", p, null);
+ CacheAdapter cache = region.getCacheAdapter();
+
assertTrue(factory.getTypeOverrides().get("entity").isExposeStatistics());
+ assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+ region = (EntityRegionImpl)
factory.buildEntityRegion("com.acme.Person", p, null);
+ cache = region.getCacheAdapter();
+
assertTrue(factory.getTypeOverrides().get("com.acme.Person").isExposeStatistics());
+ assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+ final String query = "org.hibernate.cache.StandardQueryCache";
+ QueryResultsRegionImpl queryRegion = (QueryResultsRegionImpl)
factory.buildQueryResultsRegion(query, p);
+ cache = queryRegion.getCacheAdapter();
+
assertTrue(factory.getTypeOverrides().get("query").isExposeStatistics());
+ assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+ final String timestamps =
"org.hibernate.cache.UpdateTimestampsCache";
+ Configuration config = new Configuration();
+ config.setFetchInMemoryState(false);
+ manager.defineConfiguration("timestamps", config);
+ TimestampsRegionImpl timestampsRegion = (TimestampsRegionImpl)
factory.buildTimestampsRegion(timestamps, p);
+ cache = timestampsRegion.getCacheAdapter();
+
assertTrue(factory.getTypeOverrides().get("timestamps").isExposeStatistics());
+ assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+
+ CollectionRegionImpl collectionRegion = (CollectionRegionImpl)
factory.buildCollectionRegion("com.acme.Person.addresses", p, null);
+ cache = collectionRegion.getCacheAdapter();
+
assertTrue(factory.getTypeOverrides().get("collection").isExposeStatistics());
+ assertTrue(cache.getConfiguration().isExposeJmxStatistics());
+ } finally {
+ factory.stop();
+ }
+ }
+
+ public void testDisableStatistics() {
+ Properties p = new Properties();
+ p.setProperty("hibernate.cache.infinispan.statistics",
"false");
+
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 = new InfinispanRegionFactory();
+ factory.start(null, p);
+ CacheManager manager = factory.getCacheManager();
+ manager.getGlobalConfiguration().setTransportClass(null);
+ try {
+ assertFalse(manager.getGlobalConfiguration().isExposeGlobalJmxStatistics());
+ EntityRegionImpl region = (EntityRegionImpl)
factory.buildEntityRegion("com.acme.Address", p, null);
+ CacheAdapter cache = region.getCacheAdapter();
+
assertFalse(factory.getTypeOverrides().get("entity").isExposeStatistics());
+ assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+ region = (EntityRegionImpl)
factory.buildEntityRegion("com.acme.Person", p, null);
+ cache = region.getCacheAdapter();
+
assertFalse(factory.getTypeOverrides().get("com.acme.Person").isExposeStatistics());
+ assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+ final String query = "org.hibernate.cache.StandardQueryCache";
+ QueryResultsRegionImpl queryRegion = (QueryResultsRegionImpl)
factory.buildQueryResultsRegion(query, p);
+ cache = queryRegion.getCacheAdapter();
+
assertFalse(factory.getTypeOverrides().get("query").isExposeStatistics());
+ assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+ final String timestamps =
"org.hibernate.cache.UpdateTimestampsCache";
+ Configuration config = new Configuration();
+ config.setFetchInMemoryState(false);
+ manager.defineConfiguration("timestamps", config);
+ TimestampsRegionImpl timestampsRegion = (TimestampsRegionImpl)
factory.buildTimestampsRegion(timestamps, p);
+ cache = timestampsRegion.getCacheAdapter();
+
assertFalse(factory.getTypeOverrides().get("timestamps").isExposeStatistics());
+ assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+
+ CollectionRegionImpl collectionRegion = (CollectionRegionImpl)
factory.buildCollectionRegion("com.acme.Person.addresses", p, null);
+ cache = collectionRegion.getCacheAdapter();
+
assertFalse(factory.getTypeOverrides().get("collection").isExposeStatistics());
+ assertFalse(cache.getConfiguration().isExposeJmxStatistics());
+ } finally {
+ factory.stop();
+ }
+ }
}