package org.infinispan.jmx;
import static org.infinispan.test.TestingUtil.getCacheObjectName;
import static org.testng.AssertJUnit.assertEquals;
import java.util.HashMap;
import java.util.Map;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.MultipleCacheManagersTest;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.Test;
/**
* // TODO: Document this
*
* @author Galder ZamarreƱo
* @since 5.2
*/
@Test(groups = "functional", testName = "jmx.ClusteredCacheMgmtInterceptorMBeanTest")
public class ClusteredCacheMgmtInterceptorMBeanTest extends MultipleCacheManagersTest {
private static final String JMX_1 = ClusteredCacheMgmtInterceptorMBeanTest.class.getSimpleName() + "-1";
private static final String JMX_2 = ClusteredCacheMgmtInterceptorMBeanTest.class.getSimpleName() + "-2";
@Override
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder builder = getDefaultClusteredCacheConfig(
CacheMode.REPL_SYNC, false);
builder.jmxStatistics().enable();
EmbeddedCacheManager cm1 = TestCacheManagerFactory
.createClusteredCacheManagerEnforceJmxDomain(JMX_1, builder);
EmbeddedCacheManager cm2 = TestCacheManagerFactory
.createClusteredCacheManagerEnforceJmxDomain(JMX_2, builder);
registerCacheManager(cm1, cm2);
}
public void testCorrectStatsInCluster() throws Exception {
Cache<String, String> cache1 = cache(0);
Cache<String, String> cache2 = cache(1);
cache1.put("k", "v");
assertEquals("v", cache2.get("k"));
ObjectName stats1 = getCacheObjectName(JMX_1, "___defaultcache(repl_sync)", "Statistics");
ObjectName stats2 = getCacheObjectName(JMX_2, "___defaultcache(repl_sync)", "Statistics");
MBeanServer mBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
assertEquals((long) 1, mBeanServer.getAttribute(stats1, "Stores"));
assertEquals((long) 0, mBeanServer.getAttribute(stats2, "Stores"));
Map<String, String> values = new HashMap<String, String>();
values.put("k1", "v1");
values.put("k2", "v2");
values.put("k3", "v3");
cache2.putAll(values);
assertEquals((long) 1, mBeanServer.getAttribute(stats1, "Stores"));
assertEquals((long) 3, mBeanServer.getAttribute(stats2, "Stores"));
cache1.remove("k");
assertEquals((long) 1, mBeanServer.getAttribute(stats1, "RemoveHits"));
assertEquals((long) 0, mBeanServer.getAttribute(stats2, "RemoveHits"));
}
}