package org.infinispan.jmx; import static org.infinispan.test.TestingUtil.getCacheObjectName; import static org.testng.AssertJUnit.assertEquals; import javax.management.Attribute; import javax.management.MBeanServer; import javax.management.ObjectName; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.container.DefaultDataContainer; import org.infinispan.eviction.EvictionType; import org.infinispan.manager.DefaultCacheManager; import org.infinispan.manager.EmbeddedCacheManager; import org.infinispan.test.SingleCacheManagerTest; import org.infinispan.test.fwk.TestCacheManagerFactory; import org.testng.annotations.Test; /** * @author Tristan Tarrant * @since 8.1 */ @Test(groups = "functional", testName = "jmx.CacheConfigurationMBeanTest") public class CacheConfigurationMBeanTest extends SingleCacheManagerTest { public static final String JMX_DOMAIN = CacheConfigurationMBeanTest.class.getSimpleName(); private MBeanServer server; @Override protected EmbeddedCacheManager createCacheManager() throws Exception { GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder(); gcb.globalJmxStatistics().jmxDomain(JMX_DOMAIN).mBeanServerLookup(new PerThreadMBeanServerLookup()).enable(); ConfigurationBuilder dcc = TestCacheManagerFactory.getDefaultCacheConfiguration(true); dcc.transaction().autoCommit(false); dcc.eviction().type(EvictionType.COUNT).size(1000); dcc.jmxStatistics().enable(); server = PerThreadMBeanServerLookup.getThreadMBeanServer(); return new DefaultCacheManager(gcb.build(), dcc.build()); } public void testEvictionSize() throws Exception { ObjectName defaultOn = getCacheObjectName(JMX_DOMAIN, "___defaultcache(local)", "Configuration"); assertEquals(1000l, (long) server.getAttribute(defaultOn, "evictionSize")); assertEquals(1000, cache().getCacheConfiguration().eviction().size()); DefaultDataContainer<Object, Object> dataContainer = (DefaultDataContainer<Object, Object>) cache() .getAdvancedCache().getDataContainer(); assertEquals(1000, dataContainer.capacity()); server.setAttribute(defaultOn, new Attribute("evictionSize", Long.valueOf(2000))); assertEquals(2000, cache().getCacheConfiguration().eviction().size()); assertEquals(2000, dataContainer.capacity()); } }