package org.infinispan.jmx;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.global.GlobalConfigurationBuilder;
import org.infinispan.manager.CacheContainer;
import org.infinispan.test.MultipleCacheManagersTest;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.test.fwk.TransportFlags;
/**
* @author Ryan Emerson
* @since 9.0
*/
abstract class AbstractClusterMBeanTest extends MultipleCacheManagersTest {
final String cachename;
final String jmxDomain;
final String jmxDomain2;
AbstractClusterMBeanTest(String clusterName) {
this.cachename = clusterName;
this.jmxDomain = clusterName;
this.jmxDomain2 = clusterName + "2";
}
@Override
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder defaultConfig = new ConfigurationBuilder();
GlobalConfigurationBuilder gcb1 = GlobalConfigurationBuilder.defaultClusteredBuilder();
gcb1.globalJmxStatistics().enable().allowDuplicateDomains(true).jmxDomain(jmxDomain)
.mBeanServerLookup(new PerThreadMBeanServerLookup());
CacheContainer cacheManager1 = TestCacheManagerFactory.createClusteredCacheManager(gcb1, defaultConfig,
new TransportFlags(), true);
cacheManager1.start();
GlobalConfigurationBuilder gcb2 = GlobalConfigurationBuilder.defaultClusteredBuilder();
gcb2.globalJmxStatistics().enable().allowDuplicateDomains(true).jmxDomain(jmxDomain)
.mBeanServerLookup(new PerThreadMBeanServerLookup());
CacheContainer cacheManager2 = TestCacheManagerFactory.createClusteredCacheManager(gcb2, defaultConfig,
new TransportFlags(), true);
cacheManager2.start();
registerCacheManager(cacheManager1, cacheManager2);
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.clustering().cacheMode(CacheMode.REPL_SYNC).jmxStatistics().enable();
defineConfigurationOnAllManagers(cachename, cb);
waitForClusterToForm(cachename);
}
void assertAttributeValue(MBeanServer mBeanServer, ObjectName oName, String attrName, long expectedValue)
throws Exception {
String receivedVal = mBeanServer.getAttribute(oName, attrName).toString();
assert Long.parseLong(receivedVal) == expectedValue : "expecting " + expectedValue + " for " + attrName
+ ", but received " + receivedVal;
}
void assertAttributeValueGreaterThanOrEqualTo(MBeanServer mBeanServer, ObjectName oName, String attrName,
long valueToCompare) throws Exception {
String receivedVal = mBeanServer.getAttribute(oName, attrName).toString();
assert Long.parseLong(receivedVal) >= valueToCompare : "expecting " + receivedVal + " for " + attrName
+ ", to be greater than " + valueToCompare;
}
}