[infinispan-commits] Infinispan SVN: r2664 - in trunk: core/src/main/java/org/infinispan/config and 9 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Wed Nov 3 12:56:11 EDT 2010
Author: galder.zamarreno at jboss.com
Date: 2010-11-03 12:56:10 -0400 (Wed, 03 Nov 2010)
New Revision: 2664
Removed:
trunk/jopr-plugin/src/main/java/org/infinispan/jopr/ConnectionHelper.java
Modified:
trunk/core/src/main/java/org/infinispan/CacheDelegate.java
trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
trunk/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java
trunk/core/src/main/java/org/infinispan/jmx/CacheJmxRegistration.java
trunk/core/src/main/java/org/infinispan/jmx/CacheManagerJmxRegistration.java
trunk/core/src/main/java/org/infinispan/jmx/ComponentsJmxRegistration.java
trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
trunk/core/src/test/java/org/infinispan/jmx/ActivationAndPassivationInterceptorMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/CacheLoaderAndCacheStoreInterceptorMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/CacheMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/CacheManagerMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/CacheMgmtInterceptorMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java
trunk/core/src/test/java/org/infinispan/jmx/JmxStatsFunctionalTest.java
trunk/core/src/test/java/org/infinispan/jmx/MvccLockManagerMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
trunk/core/src/test/java/org/infinispan/jmx/TxInterceptorMBeanTest.java
trunk/core/src/test/java/org/infinispan/test/TestingUtil.java
trunk/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java
trunk/jopr-plugin/pom.xml
trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheComponent.java
trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheDiscovery.java
trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java
trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java
trunk/parent/pom.xml
trunk/tools/src/main/java/org/infinispan/tools/jopr/RhqPluginXmlGenerator.java
Log:
ISPN-675 - Make Infinispan JOPR plugin friendly with AS environments - Merged from 4.2.x rev 2662 and 2663
ISPN-754 - Build object names that follow best practices, are clearer and avoid confusion - Merged from 4.2.x rev 2662 and 2663
Modified: trunk/core/src/main/java/org/infinispan/CacheDelegate.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/CacheDelegate.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -399,7 +399,8 @@
@ManagedAttribute(description = "Returns the cache name")
@Metric(displayName = "Cache name", dataType = DataType.TRAIT, displayType = DisplayType.SUMMARY)
public String getCacheName() {
- return getName().equals(CacheContainer.DEFAULT_CACHE_NAME) ? "Default Cache" : getName();
+ String name = getName().equals(CacheContainer.DEFAULT_CACHE_NAME) ? "Default Cache" : getName();
+ return name + "(" + getConfiguration().getCacheModeString().toLowerCase() + ")";
}
public String getVersion() {
Modified: trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/config/GlobalConfiguration.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -36,6 +36,7 @@
* @author Manik Surtani
* @author Vladimir Blagojevic
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
* @since 4.0
*
* @see <a href="../../../config.html#ce_infinispan_global">Configuration reference</a>
@@ -148,6 +149,22 @@
globalJmxStatistics.setAllowDuplicateDomains(allowDuplicateDomains);
}
+ public String getCacheManagerName() {
+ return globalJmxStatistics.cacheManagerName;
+ }
+
+ /**
+ * If JMX statistics are enabled, this property represents the name of this cache manager.
+ * It offers the possibility for clients to provide a user-defined name to the cache manager
+ * which later can be used to identify the cache manager within a JMX based management tool
+ * amongst other cache managers that might be running under the same JVM.
+ *
+ * @param cacheManagerName
+ */
+ public void setCacheManagerName(String cacheManagerName) {
+ globalJmxStatistics.setCacheManagerName(cacheManagerName);
+ }
+
public boolean isStrictPeerToPeer() {
return transport.strictPeerToPeer;
}
@@ -885,7 +902,7 @@
protected Boolean enabled = false;
@ConfigurationDocRef(bean=GlobalConfiguration.class,targetElement="setJmxDomain")
- protected String jmxDomain = "infinispan";
+ protected String jmxDomain = "org.infinispan";
@ConfigurationDocRef(bean=GlobalConfiguration.class,targetElement="setMBeanServerLookup")
protected String mBeanServerLookup = PlatformMBeanServerLookup.class.getName();
@@ -893,6 +910,9 @@
@ConfigurationDocRef(bean=GlobalConfiguration.class,targetElement="setAllowDuplicateDomains")
protected Boolean allowDuplicateDomains = false;
+ @ConfigurationDocRef(bean=GlobalConfiguration.class,targetElement="setCacheManagerName")
+ protected String cacheManagerName = "DefaultCacheManager";
+
@XmlAttribute
public void setEnabled(Boolean enabled) {
testImmutability("enabled");
@@ -920,6 +940,13 @@
testImmutability("allowDuplicateDomains");
this.allowDuplicateDomains = allowDuplicateDomains;
}
+
+ @XmlAttribute
+ public void setCacheManagerName(String cacheManagerName) {
+ testImmutability("cacheManagerName");
+ this.cacheManagerName = cacheManagerName;
+ }
+
}
/**
Modified: trunk/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/jmx/AbstractJmxRegistration.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -25,7 +25,10 @@
import java.util.Set;
import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import org.infinispan.CacheException;
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.factories.AbstractComponentRegistry;
import org.infinispan.util.Util;
@@ -62,21 +65,23 @@
return lookup.getMBeanServer();
}
- protected String getJmxDomain(String jmxDomain, MBeanServer mBeanServer) {
- String[] registeredDomains = mBeanServer.getDomains();
+ protected String getJmxDomain(String jmxDomain, MBeanServer mBeanServer, String groupName) {
int index = 2;
String finalName = jmxDomain;
boolean done = false;
while (!done) {
done = true;
- for (String domain : registeredDomains) {
- if (domain.equals(finalName)) {
+ try {
+ ObjectName targetName = new ObjectName(finalName + ':' + groupName + ",*");
+ if (mBeanServer.queryNames(targetName, null).size() > 0) {
finalName = jmxDomain + index++;
done = false;
- break;
}
+ } catch (MalformedObjectNameException e) {
+ throw new CacheException("Unable to check for duplicate names", e);
}
}
+
return finalName;
}
}
Modified: trunk/core/src/main/java/org/infinispan/jmx/CacheJmxRegistration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/jmx/CacheJmxRegistration.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/jmx/CacheJmxRegistration.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -23,7 +23,6 @@
import org.infinispan.AdvancedCache;
import org.infinispan.Cache;
-import org.infinispan.CacheDelegate;
import org.infinispan.CacheException;
import org.infinispan.config.Configuration;
import org.infinispan.config.GlobalConfiguration;
@@ -58,6 +57,7 @@
@SurvivesRestarts
public class CacheJmxRegistration extends AbstractJmxRegistration {
private static final Log log = LogFactory.getLog(CacheJmxRegistration.class);
+ public static final String CACHE_JMX_GROUP = "type=Cache";
private AdvancedCache cache;
private Set<Component> nonCacheComponents;
@@ -107,7 +107,7 @@
}
public void unregisterCacheMBean() {
- String pattern = jmxDomain + ":" + ComponentsJmxRegistration.JMX_RESOURCE_KEY + "=" + CacheDelegate.OBJECT_NAME + ",*";
+ String pattern = jmxDomain + ":" + CACHE_JMX_GROUP + ",*";
try {
Set<ObjectName> names = mBeanServer.queryNames(new ObjectName(pattern), null);
for (ObjectName name : names) {
@@ -128,16 +128,22 @@
@Override
protected ComponentsJmxRegistration buildRegistrar(Set<AbstractComponentRegistry.Component> components) {
- ComponentsJmxRegistration registrar = new ComponentsJmxRegistration(mBeanServer, components, getGroupName());
- updateDomain(registrar, cache.getComponentRegistry().getGlobalComponentRegistry(), mBeanServer);
+ // Quote group name, to handle invalid ObjectName characters
+ String groupName = CACHE_JMX_GROUP
+ + "," + ComponentsJmxRegistration.NAME_KEY + "="
+ + ObjectName.quote(cache.getName() + "(" + cache.getConfiguration().getCacheModeString().toLowerCase() + ")")
+ + ",manager=" + ObjectName.quote(cache.getConfiguration().getGlobalConfiguration().getCacheManagerName());
+ ComponentsJmxRegistration registrar = new ComponentsJmxRegistration(mBeanServer, components, groupName);
+ updateDomain(registrar, cache.getComponentRegistry().getGlobalComponentRegistry(), mBeanServer, groupName);
return registrar;
}
- protected void updateDomain(ComponentsJmxRegistration registrar, GlobalComponentRegistry componentRegistry, MBeanServer mBeanServer) {
+ protected void updateDomain(ComponentsJmxRegistration registrar, GlobalComponentRegistry componentRegistry,
+ MBeanServer mBeanServer, String groupName) {
GlobalConfiguration gc = componentRegistry.getComponent(GlobalConfiguration.class);
CacheManagerJmxRegistration managerJmxReg = componentRegistry.getComponent(CacheManagerJmxRegistration.class);
if (!gc.isExposeGlobalJmxStatistics() && jmxDomain == null) {
- String tmpJmxDomain = getJmxDomain(gc.getJmxDomain(), mBeanServer);
+ String tmpJmxDomain = getJmxDomain(gc.getJmxDomain(), mBeanServer, groupName);
synchronized (managerJmxReg) {
if (managerJmxReg.jmxDomain == null) {
if (!tmpJmxDomain.equals(gc.getJmxDomain()) && !gc.isAllowDuplicateDomains()) {
@@ -174,8 +180,4 @@
return componentsExceptCache;
}
- private String getGroupName() {
- return cache.getName() + "(" + cache.getConfiguration().getCacheModeString().toLowerCase() + ")";
- }
-
}
Modified: trunk/core/src/main/java/org/infinispan/jmx/CacheManagerJmxRegistration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/jmx/CacheManagerJmxRegistration.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/jmx/CacheManagerJmxRegistration.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -9,6 +9,7 @@
import org.infinispan.util.logging.LogFactory;
import javax.management.MBeanServer;
+import javax.management.ObjectName;
import java.util.Set;
@@ -22,7 +23,7 @@
@SurvivesRestarts
public class CacheManagerJmxRegistration extends AbstractJmxRegistration {
private static final Log log = LogFactory.getLog(CacheManagerJmxRegistration.class);
- public static final String GLOBAL_JMX_GROUP = "[global]";
+ public static final String CACHE_MANAGER_JMX_GROUP = "type=CacheManager";
private GlobalComponentRegistry globalReg;
@Inject
@@ -55,14 +56,18 @@
@Override
protected ComponentsJmxRegistration buildRegistrar(Set<AbstractComponentRegistry.Component> components) {
- ComponentsJmxRegistration registrar = new ComponentsJmxRegistration(mBeanServer, components, GLOBAL_JMX_GROUP);
- updateDomain(registrar, globalReg, mBeanServer);
+ // Quote group name, to handle invalid ObjectName characters
+ String groupName = CACHE_MANAGER_JMX_GROUP
+ + "," + ComponentsJmxRegistration.NAME_KEY
+ + "=" + ObjectName.quote(globalConfig.getCacheManagerName());
+ ComponentsJmxRegistration registrar = new ComponentsJmxRegistration(mBeanServer, components, groupName);
+ updateDomain(registrar, mBeanServer, groupName);
return registrar;
}
- protected void updateDomain(ComponentsJmxRegistration registrar, GlobalComponentRegistry componentRegistry, MBeanServer mBeanServer) {
+ protected void updateDomain(ComponentsJmxRegistration registrar, MBeanServer mBeanServer, String groupName) {
if (jmxDomain == null) {
- jmxDomain = getJmxDomain(globalConfig.getJmxDomain(), mBeanServer);
+ jmxDomain = getJmxDomain(globalConfig.getJmxDomain(), mBeanServer, groupName);
String configJmxDomain = globalConfig.getJmxDomain();
if (!jmxDomain.equals(configJmxDomain) && !globalConfig.isAllowDuplicateDomains()) {
String message = "There's already an cache manager instance registered under '" + configJmxDomain +
Modified: trunk/core/src/main/java/org/infinispan/jmx/ComponentsJmxRegistration.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/jmx/ComponentsJmxRegistration.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/jmx/ComponentsJmxRegistration.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -21,9 +21,11 @@
*/
package org.infinispan.jmx;
+import org.infinispan.CacheDelegate;
import org.infinispan.CacheException;
import org.infinispan.factories.AbstractComponentRegistry;
import org.infinispan.factories.ComponentRegistry;
+import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
@@ -38,6 +40,7 @@
* Registers a set of components on an MBean server.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
* @since 4.0
*/
public class ComponentsJmxRegistration {
@@ -51,15 +54,15 @@
private Set<AbstractComponentRegistry.Component> components;
- public static final String CACHE_NAME_KEY = "cache-name";
- public static final String JMX_RESOURCE_KEY = "jmx-resource";
+ public static String COMPONENT_KEY = "component";
+ public static String NAME_KEY = "name";
/**
* C-tor.
*
* @param mBeanServer the server where mbeans are being registered
* @param components components
- * @param groupName group name
+ * @param groupName name of jmx group name
* @see java.lang.management.ManagementFactory#getPlatformMBeanServer()
* @see <a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/mxbeans.html#mbean_server">platform
* MBeanServer</a>
@@ -67,8 +70,7 @@
public ComponentsJmxRegistration(MBeanServer mBeanServer, Set<AbstractComponentRegistry.Component> components, String groupName) {
this.mBeanServer = mBeanServer;
this.components = components;
- // Quote group name, to handle invalid ObjectName characters
- this.groupName = ObjectName.quote(groupName);
+ this.groupName = groupName;
}
public void setJmxDomain(String jmxDomain) {
@@ -83,8 +85,7 @@
List<ResourceDMBean> resourceDMBeans = getResourceDMBeansFromComponents();
boolean trace = log.isTraceEnabled();
for (ResourceDMBean resource : resourceDMBeans) {
- String resourceName = resource.getObjectName();
- ObjectName objectName = new ObjectName(getObjectName(resourceName));
+ ObjectName objectName = getObjectName(resource);
if (!mBeanServer.isRegistered(objectName)) {
try {
mBeanServer.registerMBean(resource, objectName);
@@ -113,8 +114,7 @@
List<ResourceDMBean> resourceDMBeans = getResourceDMBeansFromComponents();
boolean trace = log.isTraceEnabled();
for (ResourceDMBean resource : resourceDMBeans) {
- String resourceName = resource.getObjectName();
- ObjectName objectName = new ObjectName(getObjectName(resourceName));
+ ObjectName objectName = getObjectName(resource);
if (mBeanServer.isRegistered(objectName)) {
mBeanServer.unregisterMBean(objectName);
if (trace) log.trace("Unregistered " + objectName);
@@ -137,11 +137,15 @@
return resourceDMBeans;
}
- public String getObjectName(String resourceName) {
- return getObjectName(jmxDomain, groupName, resourceName);
+ private ObjectName getObjectName(ResourceDMBean resource) throws Exception {
+ return getObjectName(resource.getObjectName());
}
+ protected ObjectName getObjectName(String resourceName) throws Exception {
+ return new ObjectName(getObjectName(jmxDomain, groupName, resourceName));
+ }
+
public static String getObjectName(String jmxDomain, String groupName, String resourceName) {
- return jmxDomain + ":" + CACHE_NAME_KEY + "=" + groupName + "," + JMX_RESOURCE_KEY + "=" + resourceName;
+ return jmxDomain + ":" + groupName + "," + COMPONENT_KEY + "=" + resourceName;
}
}
Modified: trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/main/java/org/infinispan/manager/DefaultCacheManager.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -623,23 +623,7 @@
@ManagedAttribute(description = "The name of this cache manager")
@Metric(displayName = "Cache manager name", displayType = DisplayType.SUMMARY, dataType = DataType.TRAIT)
public String getName() {
- StringBuilder sb = new StringBuilder();
- sb.append(globalConfiguration.getJmxDomain()).append('@');
- String jmxPort = System.getProperty("com.sun.management.jmxremote.port");
- if (jmxPort != null) {
- try {
- // At least until jdk6, Sun bind the jmx agent to
- // 0.0.0.0:jmxPort, so using local host name is safe.
- sb.append(InetAddress.getLocalHost().getHostName()).append(':').append(jmxPort);
- } catch (UnknownHostException e) {
- if (log.isTraceEnabled())
- log.trace("Unable to resolve host", e);
- sb.append(getLogicalAddressString());
- }
- } else {
- sb.append(getLogicalAddressString());
- }
- return sb.toString();
+ return globalConfiguration.getCacheManagerName();
}
@ManagedOperation(description = "Starts the default cache associated with this cache manager")
Modified: trunk/core/src/test/java/org/infinispan/jmx/ActivationAndPassivationInterceptorMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/ActivationAndPassivationInterceptorMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/ActivationAndPassivationInterceptorMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -10,6 +10,7 @@
import org.infinispan.loaders.dummy.DummyInMemoryCacheStore;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.SingleCacheManagerTest;
+import static org.infinispan.test.TestingUtil.*;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.AfterMethod;
@@ -18,13 +19,17 @@
import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
+import static org.infinispan.test.TestingUtil.getCacheObjectName;
+
/**
* Tester class for ActivationInterceptor and PassivationInterceptor.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "jmx.ActivationAndPassivationInterceptorMBeanTest")
public class ActivationAndPassivationInterceptorMBeanTest extends SingleCacheManagerTest {
@@ -33,7 +38,7 @@
ObjectName activationInterceptorObjName;
ObjectName passivationInterceptorObjName;
CacheStore cacheStore;
- private static final String JMX_DOMAIN = ActivationAndPassivationInterceptorMBeanTest.class.getName();
+ private static final String JMX_DOMAIN = ActivationAndPassivationInterceptorMBeanTest.class.getSimpleName();
protected EmbeddedCacheManager createCacheManager() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getNonClusteredDefault();
@@ -51,8 +56,8 @@
cacheManager.defineConfiguration("test", configuration);
cache = cacheManager.getCache("test");
- activationInterceptorObjName = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=Activation");
- passivationInterceptorObjName = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=Passivation");
+ activationInterceptorObjName = getCacheObjectName(JMX_DOMAIN, "test(local)", "Activation");
+ passivationInterceptorObjName = getCacheObjectName(JMX_DOMAIN, "test(local)", "Passivation");
threadMBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
cacheStore = TestingUtil.extractComponent(cache, CacheLoaderManager.class).getCacheStore();
@@ -71,73 +76,73 @@
threadMBeanServer.setAttribute(activationInterceptorObjName, new Attribute("StatisticsEnabled", Boolean.TRUE));
}
- public void testActivationOnGet() throws Exception {
+ public void testActivationOnGet(Method m) throws Exception {
assertActivationCount(0);
- assert cache.get("key") == null;
+ assert cache.get(k(m)) == null;
assertActivationCount(0);
- cacheStore.store(InternalEntryFactory.create("key", "value"));
- assert cacheStore.containsKey("key");
- assert cache.get("key").equals("value");
+ cacheStore.store(InternalEntryFactory.create(k(m), v(m)));
+ assert cacheStore.containsKey(k(m));
+ assert cache.get(k(m)).equals(v(m));
assertActivationCount(1);
- assert !cacheStore.containsKey("key");
+ assert !cacheStore.containsKey(k(m));
}
- public void testActivationOnPut() throws Exception {
+ public void testActivationOnPut(Method m) throws Exception {
assertActivationCount(0);
- assert cache.get("key") == null;
+ assert cache.get(k(m)) == null;
assertActivationCount(0);
- cacheStore.store(InternalEntryFactory.create("key", "value"));
- assert cacheStore.containsKey("key");
- cache.put("key", "value2");
- assert cache.get("key").equals("value2");
+ cacheStore.store(InternalEntryFactory.create(k(m), v(m)));
+ assert cacheStore.containsKey(k(m));
+ cache.put(k(m), v(m, "2"));
+ assert cache.get(k(m)).equals(v(m, "2"));
assertActivationCount(1);
- assert !cacheStore.containsKey("key") : "this should only be persisted on evict";
+ assert !cacheStore.containsKey(k(m)) : "this should only be persisted on evict";
}
- public void testActivationOnRemove() throws Exception {
+ public void testActivationOnRemove(Method m) throws Exception {
assertActivationCount(0);
- assert cache.get("key") == null;
+ assert cache.get(k(m)) == null;
assertActivationCount(0);
- cacheStore.store(InternalEntryFactory.create("key", "value"));
- assert cacheStore.containsKey("key");
- assert cache.remove("key").equals("value");
+ cacheStore.store(InternalEntryFactory.create(k(m), v(m)));
+ assert cacheStore.containsKey(k(m));
+ assert cache.remove(k(m)).equals(v(m));
assertActivationCount(1);
- assert !cacheStore.containsKey("key");
+ assert !cacheStore.containsKey(k(m));
}
- public void testActivationOnReplace() throws Exception {
+ public void testActivationOnReplace(Method m) throws Exception {
assertActivationCount(0);
- assert cache.get("key") == null;
+ assert cache.get(k(m)) == null;
assertActivationCount(0);
- cacheStore.store(InternalEntryFactory.create("key", "value"));
- assert cacheStore.containsKey("key");
- assert cache.replace("key", "value2").equals("value");
+ cacheStore.store(InternalEntryFactory.create(k(m), v(m)));
+ assert cacheStore.containsKey(k(m));
+ assert cache.replace(k(m), v(m, "2")).equals(v(m));
assertActivationCount(1);
- assert !cacheStore.containsKey("key");
+ assert !cacheStore.containsKey(k(m));
}
- public void testActivationOnPutMap() throws Exception {
+ public void testActivationOnPutMap(Method m) throws Exception {
assertActivationCount(0);
- assert cache.get("key") == null;
+ assert cache.get(k(m)) == null;
assertActivationCount(0);
- cacheStore.store(InternalEntryFactory.create("key", "value"));
- assert cacheStore.containsKey("key");
+ cacheStore.store(InternalEntryFactory.create(k(m), v(m)));
+ assert cacheStore.containsKey(k(m));
Map toAdd = new HashMap();
- toAdd.put("key", "value2");
+ toAdd.put(k(m), v(m, "2"));
cache.putAll(toAdd);
assertActivationCount(1);
- assert cache.get("key").equals("value2");
- assert !cacheStore.containsKey("key");
+ assert cache.get(k(m)).equals(v(m, "2"));
+ assert !cacheStore.containsKey(k(m));
}
- public void testPassivationOnEvict() throws Exception {
+ public void testPassivationOnEvict(Method m) throws Exception {
assertPassivationCount(0);
- cache.put("key", "val");
- cache.put("key2", "val2");
- cache.evict("key");
+ cache.put(k(m), v(m));
+ cache.put(k(m, "2"), v(m, "2"));
+ cache.evict(k(m));
assertPassivationCount(1);
- cache.evict("key2");
+ cache.evict(k(m, "2"));
assertPassivationCount(2);
cache.evict("not_existing_key");
assertPassivationCount(2);
@@ -150,4 +155,5 @@
private void assertPassivationCount(int activationCount) throws Exception {
assert Integer.valueOf(threadMBeanServer.getAttribute(passivationInterceptorObjName, "Passivations").toString()).equals(activationCount);
}
+
}
Modified: trunk/core/src/test/java/org/infinispan/jmx/CacheLoaderAndCacheStoreInterceptorMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/CacheLoaderAndCacheStoreInterceptorMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/CacheLoaderAndCacheStoreInterceptorMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -17,10 +17,13 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import static org.infinispan.test.TestingUtil.*;
+
/**
* Tests the jmx functionality from CacheLoaderInterceptor and CacheStoreInterceptor.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "jmx.CacheLoaderAndCacheStoreInterceptorMBeanTest")
public class CacheLoaderAndCacheStoreInterceptorMBeanTest extends SingleCacheManagerTest {
@@ -48,8 +51,8 @@
cacheManager.defineConfiguration("test", configuration);
cache = cacheManager.getCache("test");
- loaderInterceptorObjName = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=CacheLoader");
- storeInterceptorObjName = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=CacheStore");
+ loaderInterceptorObjName = getCacheObjectName(JMX_DOMAIN, "test(local)", "CacheLoader");
+ storeInterceptorObjName = getCacheObjectName(JMX_DOMAIN, "test(local)", "CacheStore");
threadMBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
cacheStore = TestingUtil.extractComponent(cache, CacheLoaderManager.class).getCacheStore();
Modified: trunk/core/src/test/java/org/infinispan/jmx/CacheMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/CacheMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/CacheMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -33,6 +33,7 @@
import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.SingleCacheManagerTest;
+import static org.infinispan.test.TestingUtil.*;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
@@ -52,8 +53,8 @@
}
public void testStartStopManagedOperations() throws Exception {
- ObjectName defaultOn = new ObjectName(JMX_DOMAIN + ":cache-name=\"" + CacheContainer.DEFAULT_CACHE_NAME + "(local)\",jmx-resource=Cache");
- ObjectName managerON = new ObjectName(JMX_DOMAIN + ":cache-name=\"[global]\",jmx-resource=CacheManager");
+ ObjectName defaultOn = getCacheObjectName(JMX_DOMAIN);
+ ObjectName managerON = getCacheManagerObjectName(JMX_DOMAIN);
server.invoke(managerON, "startCache", new Object[]{}, new String[]{});
assert ComponentStatus.RUNNING.toString().equals(server.getAttribute(defaultOn, "CacheStatus"));
assert server.getAttribute(managerON, "CreatedCacheCount").equals("1");
@@ -81,10 +82,10 @@
}
public void testManagerStopRemovesCacheMBean(Method m) throws Exception {
- final String otherJmxDomain = JMX_DOMAIN + '.' + m.getName();
- ObjectName defaultOn = new ObjectName(otherJmxDomain + ":cache-name=\"" + CacheContainer.DEFAULT_CACHE_NAME + "(local)\",jmx-resource=Cache");
- ObjectName galderOn = new ObjectName(otherJmxDomain + ":cache-name=\"galder(local)\",jmx-resource=Cache");
- ObjectName managerON = new ObjectName(otherJmxDomain + ":cache-name=\"[global]\",jmx-resource=CacheManager");
+ final String otherJmxDomain = getMethodSpecificJmxDomain(m, JMX_DOMAIN);
+ ObjectName defaultOn = getCacheObjectName(otherJmxDomain);
+ ObjectName galderOn = getCacheObjectName(otherJmxDomain, "galder(local)");
+ ObjectName managerON = getCacheManagerObjectName(otherJmxDomain);
CacheContainer otherContainer = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(otherJmxDomain);
server.invoke(managerON, "startCache", new Object[]{}, new String[]{});
server.invoke(managerON, "startCache", new Object[]{"galder"}, new String[]{String.class.getName()});
Modified: trunk/core/src/test/java/org/infinispan/jmx/CacheManagerMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/CacheManagerMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/CacheManagerMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -6,6 +6,7 @@
import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.SingleCacheManagerTest;
+import static org.infinispan.test.TestingUtil.*;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.Test;
@@ -19,6 +20,7 @@
* Tests whether the attributes defined by DefaultCacheManager work correct.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
* @since 4.0
*/
@Test(groups = "functional", testName = "jmx.CacheManagerMBeanTest")
@@ -31,7 +33,7 @@
protected EmbeddedCacheManager createCacheManager() throws Exception {
cacheManager = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(JMX_DOMAIN, true, false);
- name = new ObjectName(JMX_DOMAIN + ":cache-name=\"[global]\",jmx-resource=CacheManager");
+ name = getCacheManagerObjectName(JMX_DOMAIN);
server = PerThreadMBeanServerLookup.getThreadMBeanServer();
server.invoke(name, "startCache", new Object[]{}, new String[]{});
return cacheManager;
@@ -77,10 +79,10 @@
}
- public void testJmxRegistrationAtStartupAndStop(Method method) throws Exception {
- final String otherJmxDomain = JMX_DOMAIN + '.' + method.getName();
+ public void testJmxRegistrationAtStartupAndStop(Method m) throws Exception {
+ final String otherJmxDomain = getMethodSpecificJmxDomain(m, JMX_DOMAIN);
CacheContainer otherContainer = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(otherJmxDomain, true, false);
- ObjectName otherName = new ObjectName(otherJmxDomain + ":cache-name=\"[global]\",jmx-resource=CacheManager");
+ ObjectName otherName = getCacheManagerObjectName(otherJmxDomain);
try {
assert server.getAttribute(otherName, "CreatedCacheCount").equals("0");
} finally {
@@ -93,4 +95,16 @@
} catch (InstanceNotFoundException e) {
}
}
+
+ public void testCustomCacheManagerName(Method m) throws Exception {
+ final String otherJmxDomain = getMethodSpecificJmxDomain(m, JMX_DOMAIN);
+ CacheContainer otherContainer = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(otherJmxDomain, "Hibernate2LC", true, false);
+ ObjectName otherName = getCacheManagerObjectName(otherJmxDomain, "Hibernate2LC");
+ try {
+ assert server.getAttribute(otherName, "CreatedCacheCount").equals("0");
+ } finally {
+ otherContainer.stop();
+ }
+ }
+
}
Modified: trunk/core/src/test/java/org/infinispan/jmx/CacheMgmtInterceptorMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/CacheMgmtInterceptorMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/CacheMgmtInterceptorMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -5,6 +5,7 @@
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.SingleCacheManagerTest;
+import static org.infinispan.test.TestingUtil.*;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@@ -18,13 +19,14 @@
* Test functionality in {@link org.infinispan.interceptors.CacheMgmtInterceptor}.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "jmx.CacheMgmtInterceptorMBeanTest")
public class CacheMgmtInterceptorMBeanTest extends SingleCacheManagerTest {
private ObjectName mgmtInterceptor;
private MBeanServer threadMBeanServer;
AdvancedCache advanced;
- private static final String JMX_DOMAIN = CacheMgmtInterceptorMBeanTest.class.getName();
+ private static final String JMX_DOMAIN = CacheMgmtInterceptorMBeanTest.class.getSimpleName();
protected EmbeddedCacheManager createCacheManager() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getNonClusteredDefault();
@@ -38,7 +40,7 @@
cacheManager.defineConfiguration("test", configuration);
cache = cacheManager.getCache("test");
advanced = cache.getAdvancedCache();
- mgmtInterceptor = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=Statistics");
+ mgmtInterceptor = getCacheObjectName(JMX_DOMAIN, "test(local)", "Statistics");
threadMBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
return cacheManager;
Modified: trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/ComponentsJmxRegistrationTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -5,7 +5,6 @@
import org.infinispan.config.Configuration;
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.factories.AbstractComponentRegistry;
-import org.infinispan.manager.CacheContainer;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
@@ -25,12 +24,12 @@
* Tester class for {@link ComponentsJmxRegistration}.
*
* @author Mircea.Markus at jboss.com
- * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ * @author Galder Zamarreño
* @since 4.0
*/
@Test(groups = "functional", testName = "jmx.ComponentsJmxRegistrationTest")
public class ComponentsJmxRegistrationTest extends AbstractInfinispanTest {
-
+ public static final String JMX_DOMAIN = ComponentsJmxRegistrationTest.class.getSimpleName();
private MBeanServer mBeanServer;
private List<EmbeddedCacheManager> cacheContainers = new ArrayList<EmbeddedCacheManager>();
@@ -58,7 +57,7 @@
ComponentsJmxRegistration regComponents = buildRegistrator(first);
regComponents.registerMBeans();
- String name = regComponents.getObjectName("Statistics");
+ String name = regComponents.getObjectName("Statistics").toString();
ObjectName name1 = new ObjectName(name);
assert mBeanServer.isRegistered(name1);
regComponents.unregisterMBeans();
@@ -69,7 +68,10 @@
private ComponentsJmxRegistration buildRegistrator(Cache cache) {
AdvancedCache ac = (AdvancedCache) cache;
Set<AbstractComponentRegistry.Component> components = ac.getComponentRegistry().getRegisteredComponents();
- return new ComponentsJmxRegistration(mBeanServer, components, cache.getName());
+ String groupName = "name=" + ObjectName.quote(cache.getName());
+ ComponentsJmxRegistration registrator = new ComponentsJmxRegistration(mBeanServer, components, groupName);
+ registrator.setJmxDomain(JMX_DOMAIN);
+ return registrator;
}
public void testRegisterReplicatedCache() throws Exception {
@@ -85,7 +87,7 @@
ComponentsJmxRegistration regComponents = buildRegistrator(first);
regComponents.registerMBeans();
- String name = regComponents.getObjectName("Statistics");
+ String name = regComponents.getObjectName("Statistics").toString();
ObjectName name1 = new ObjectName(name);
assertCorrectJmxName(name1, first);
assert mBeanServer.isRegistered(name1);
@@ -113,8 +115,8 @@
replicatedRegComponents.registerMBeans();
localRegComponents.registerMBeans();
- String replicatedtCMgmtIntName = replicatedRegComponents.getObjectName("Statistics");
- String localCMgmtIntName = localRegComponents.getObjectName("Statistics");
+ String replicatedtCMgmtIntName = replicatedRegComponents.getObjectName("Statistics").toString();
+ String localCMgmtIntName = localRegComponents.getObjectName("Statistics").toString();
ObjectName replObjectName = new ObjectName(replicatedtCMgmtIntName);
ObjectName localObjName = new ObjectName(localCMgmtIntName);
assertCorrectJmxName(replObjectName, replicatedCache);
@@ -130,8 +132,8 @@
}
private void assertCorrectJmxName(ObjectName objectName, Cache cache) {
- assert ObjectName.unquote(objectName.getKeyProperty(ComponentsJmxRegistration.CACHE_NAME_KEY)).startsWith(cache.getName());
- assert objectName.getKeyProperty(ComponentsJmxRegistration.JMX_RESOURCE_KEY) != null;
+ assert ObjectName.unquote(objectName.getKeyProperty(ComponentsJmxRegistration.NAME_KEY)).startsWith(cache.getName());
+ assert objectName.getKeyProperty(ComponentsJmxRegistration.COMPONENT_KEY) != null;
}
private Configuration config() {
Modified: trunk/core/src/test/java/org/infinispan/jmx/JmxStatsFunctionalTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/JmxStatsFunctionalTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/JmxStatsFunctionalTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -6,6 +6,7 @@
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
+import static org.infinispan.test.TestingUtil.*;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@@ -23,6 +24,7 @@
* Functional test for checking jmx statistics exposure.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
* @since 4.0
*/
@Test(groups = "functional", testName = "jmx.JmxStatsFunctionalTest")
@@ -51,7 +53,7 @@
/**
* Create a local cache, two replicated caches and see that everithing is correctly registered.
*/
- public void testDefaultDomain() {
+ public void testDefaultDomain() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setExposeGlobalJmxStatistics(true);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
@@ -71,22 +73,22 @@
cm.getCache("remote1");
cm.getCache("remote2");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=RpcManager");
- assert existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=Statistics");
- assert existsObject(jmxDomain + ":cache-name=\"remote2(invalidation_async)\",jmx-resource=RpcManager");
- assert existsObject(jmxDomain + ":cache-name=\"remote2(invalidation_async)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "RpcManager"));
+ assert existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "Statistics"));
+ assert existsObject(getCacheObjectName(jmxDomain, "remote2(invalidation_async)", "RpcManager"));
+ assert existsObject(getCacheObjectName(jmxDomain, "remote2(invalidation_async)", "Statistics"));
TestingUtil.killCacheManagers(cm);
- assert !existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert !existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=RpcManager");
- assert !existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=Statistics");
- assert !existsObject(jmxDomain + ":cache-name=\"remote2(invalidation_async)\",jmx-resource=RpcManager");
- assert !existsObject(jmxDomain + ":cache-name=\"remote2(invalidation_async)\",jmx-resource=Statistics");
+ assert !existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert !existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "RpcManager"));
+ assert !existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "Statistics"));
+ assert !existsObject(getCacheObjectName(jmxDomain, "remote2(invalidation_async)", "RpcManager"));
+ assert !existsObject(getCacheObjectName(jmxDomain, "remote2(invalidation_async)", "Statistics"));
}
- public void testDifferentDomain() {
+ public void testDifferentDomain() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
cm = TestCacheManagerFactory.createCacheManager(globalConfiguration);
@@ -96,11 +98,11 @@
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
}
- public void testOnlyGlobalJmxStatsEnabled() {
+ public void testOnlyGlobalJmxStatsEnabled() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setExposeGlobalJmxStatistics(true);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
@@ -118,12 +120,12 @@
cm.getCache("local_cache");
cm.getCache("remote1");
- assert !existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert existsObject(jmxDomain + ":cache-name=\"[global]\",jmx-resource=CacheManager");
- assert !existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=Statistics");
+ assert !existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert existsObject(getCacheManagerObjectName(jmxDomain));
+ assert !existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "RpcManager"));
}
- public void testOnlyPerCacheJmxStatsEnabled() {
+ public void testOnlyPerCacheJmxStatsEnabled() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setExposeGlobalJmxStatistics(false);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
@@ -141,22 +143,23 @@
cm.getCache("local_cache");
cm.getCache("remote1");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert !existsObject(jmxDomain + ":cache-name=\"[global]\",jmx-resource=RpcManager");
- assert existsObject(jmxDomain + ":cache-name=\"remote1(repl_sync)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert !existsObject(getCacheManagerObjectName(jmxDomain));
+ assert existsObject(getCacheObjectName(jmxDomain, "remote1(repl_sync)", "RpcManager"));
}
public void testMultipleManagersOnSameServerFails(Method method) throws Exception {
final String jmxDomain = JMX_DOMAIN + '.' + method.getName();
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setJmxDomain(jmxDomain);
+ globalConfiguration.setExposeGlobalJmxStatistics(true);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
cm = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(globalConfiguration);
Configuration localCache = config();//local by default
localCache.setExposeJmxStatistics(true);
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
GlobalConfiguration globalConfiguration2 = GlobalConfiguration.getClusteredDefault();
globalConfiguration2.setJmxDomain(jmxDomain);
@@ -174,23 +177,24 @@
CacheContainer duplicateAllowedContainer = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(globalConfiguration2);
try {
final String duplicateName = jmxDomain + "2";
- ObjectName duplicateObjectName = new ObjectName(duplicateName + ":cache-name=\"[global]\",jmx-resource=CacheManager");
+ ObjectName duplicateObjectName = getCacheManagerObjectName(duplicateName);
server.getAttribute(duplicateObjectName, "CreatedCacheCount").equals("0");
} finally {
duplicateAllowedContainer.stop();
}
}
- public void testMultipleManagersOnSameServerWithCloneFails() {
+ public void testMultipleManagersOnSameServerWithCloneFails() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
+ globalConfiguration.setExposeGlobalJmxStatistics(true);
cm = TestCacheManagerFactory.createCacheManager(globalConfiguration);
Configuration localCache = config();//local by default
localCache.setExposeJmxStatistics(true);
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
String jmxDomain = globalConfiguration.getJmxDomain();
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
GlobalConfiguration globalConfigurationClone = globalConfiguration.clone();
globalConfigurationClone.setExposeGlobalJmxStatistics(true);
@@ -203,7 +207,7 @@
}
}
- public void testMultipleManagersOnSameServer() {
+ public void testMultipleManagersOnSameServer() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setAllowDuplicateDomains(true);
globalConfiguration.setExposeGlobalJmxStatistics(true);
@@ -214,7 +218,7 @@
localCache.setExposeJmxStatistics(true);
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
GlobalConfiguration globalConfiguration2 = GlobalConfiguration.getClusteredDefault();
globalConfiguration2.setExposeGlobalJmxStatistics(true);
@@ -226,7 +230,7 @@
localCache2.setExposeJmxStatistics(true);
cm2.defineConfiguration("local_cache", localCache);
cm2.getCache("local_cache");
- assert existsObject(jmxDomain2 + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain2, "local_cache(local)", "Statistics"));
GlobalConfiguration globalConfiguration3 = GlobalConfiguration.getClusteredDefault();
globalConfiguration3.setExposeGlobalJmxStatistics(true);
@@ -238,10 +242,10 @@
cm3.defineConfiguration("local_cache", localCache);
cm3.getCache("local_cache");
String jmxDomain3 = cm3.getGlobalConfiguration().getJmxDomain();
- assert existsObject(jmxDomain3 + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain3, "local_cache(local)", "Statistics"));
}
- public void testUnregisterJmxInfoOnStop() {
+ public void testUnregisterJmxInfoOnStop() throws Exception {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
globalConfiguration.setExposeGlobalJmxStatistics(true);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
@@ -251,15 +255,15 @@
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
String jmxDomain = globalConfiguration.getJmxDomain();
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
TestingUtil.killCacheManagers(cm);
- assert !existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
+ assert !existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
assert !existsDomains(jmxDomain);
}
- public void testCorrectUnregistering() {
+ public void testCorrectUnregistering() throws Exception {
assert !existsDomains("infinispan");
GlobalConfiguration globalConfiguration = GlobalConfiguration.getNonClusteredDefault();
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
@@ -268,8 +272,8 @@
cm.defineConfiguration("local_cache", localCache);
cm.getCache("local_cache");
String jmxDomain = cm.getGlobalConfiguration().getJmxDomain();
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Cache");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Cache"));
//now register a global one
GlobalConfiguration globalConfiguration2 = GlobalConfiguration.getClusteredDefault();
@@ -283,17 +287,17 @@
cm2.defineConfiguration("remote_cache", remoteCache);
cm2.getCache("remote_cache");
String jmxDomain2 = cm2.getGlobalConfiguration().getJmxDomain();
- assert existsObject(jmxDomain2 + ":cache-name=\"remote_cache(repl_sync)\",jmx-resource=Cache");
- assert existsObject(jmxDomain2 + ":cache-name=\"remote_cache(repl_sync)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain2, "remote_cache(repl_sync)", "Cache"));
+ assert existsObject(getCacheObjectName(jmxDomain2, "remote_cache(repl_sync)", "Statistics"));
cm2.stop();
- assert existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert !existsObject(jmxDomain2 + ":cache-name=\"remote_cache(repl_sync)\",jmx-resource=Cache");
- assert !existsObject(jmxDomain2 + ":cache-name=\"remote_cache(repl_sync)\",jmx-resource=Statistics");
+ assert existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert !existsObject(getCacheObjectName(jmxDomain2, "remote_cache(repl_sync)", "CacheComponent"));
+ assert !existsObject(getCacheObjectName(jmxDomain2, "remote_cache(repl_sync)", "Statistics"));
cm.stop();
- assert !existsObject(jmxDomain + ":cache-name=\"local_cache(local)\",jmx-resource=Statistics");
- assert !existsObject(jmxDomain2 + ":cache-name=\"remote_cache(repl_sync)\",jmx-resource=Statistics");
+ assert !existsObject(getCacheObjectName(jmxDomain, "local_cache(local)", "Statistics"));
+ assert !existsObject(getCacheObjectName(jmxDomain2, "remote_cache(repl_sync)", "Statistics"));
}
public void testStopUnstartedCacheManager() {
@@ -304,13 +308,8 @@
cm.stop();
}
- static boolean existsObject(String s) {
- try {
- ObjectName objectName = new ObjectName(s);
- return PerThreadMBeanServerLookup.getThreadMBeanServer().isRegistered(objectName);
- } catch (MalformedObjectNameException e) {
- throw new RuntimeException(e);
- }
+ static boolean existsObject(ObjectName objectName) {
+ return PerThreadMBeanServerLookup.getThreadMBeanServer().isRegistered(objectName);
}
public boolean existsDomains(String... domains) {
Modified: trunk/core/src/test/java/org/infinispan/jmx/MvccLockManagerMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/MvccLockManagerMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/MvccLockManagerMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -12,10 +12,13 @@
import javax.management.ObjectName;
import javax.transaction.TransactionManager;
+import static org.infinispan.test.TestingUtil.getCacheObjectName;
+
/**
* Test the JMX functionality in {@link org.infinispan.util.concurrent.locks.LockManagerImpl}.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "jmx.MvccLockManagerMBeanTest")
public class MvccLockManagerMBeanTest extends SingleCacheManagerTest {
@@ -38,7 +41,7 @@
cacheManager.defineConfiguration("test", configuration);
cache = cacheManager.getCache("test");
- lockManagerObjName = new ObjectName(JMX_DOMAIN + ":cache-name=\"test(local)\",jmx-resource=LockManager");
+ lockManagerObjName = getCacheObjectName(JMX_DOMAIN, "test(local)", "LockManager");
threadMBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
return cacheManager;
Modified: trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/RpcManagerMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -17,6 +17,7 @@
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
+import static org.infinispan.test.TestingUtil.getCacheObjectName;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.Test;
@@ -46,11 +47,13 @@
* A workaround in Eclipse is to add -ea to the default VM parameters used.
*
* @author Mircea.Markus at jboss.com
+ * @author Galder Zamarreño
*/
@Test(groups = "functional", testName = "jmx.RpcManagerMBeanTest")
public class RpcManagerMBeanTest extends MultipleCacheManagersTest {
private final String cachename = "repl_sync_cache";
- public static final String JMX_DOMAIN = RpcManagerMBeanTest.class.getSimpleName();
+ public static final String JMX_DOMAIN = RpcManagerMBeanTest.class.getSimpleName();
+ public static final String JMX_DOMAIN2 = JMX_DOMAIN + "2";
protected void createCacheManagers() throws Throwable {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getClusteredDefault();
@@ -80,8 +83,8 @@
Cache cache1 = manager(0).getCache(cachename);
Cache cache2 = manager(1).getCache(cachename);
MBeanServer mBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
- ObjectName rpcManager1 = new ObjectName("RpcManagerMBeanTest:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
- ObjectName rpcManager2 = new ObjectName("RpcManagerMBeanTest2:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
+ ObjectName rpcManager1 = getCacheObjectName(JMX_DOMAIN, cachename + "(repl_sync)", "RpcManager");
+ ObjectName rpcManager2 = getCacheObjectName(JMX_DOMAIN2, cachename + "(repl_sync)", "RpcManager");
assert mBeanServer.isRegistered(rpcManager1);
assert mBeanServer.isRegistered(rpcManager2);
@@ -119,8 +122,7 @@
Cache cache1 = manager(0).getCache(cachename);
Cache cache2 = manager(1).getCache(cachename);
MBeanServer mBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
- ObjectName rpcManager1 = new ObjectName("RpcManagerMBeanTest:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
- ObjectName rpcManager2 = new ObjectName("RpcManagerMBeanTest2:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
+ ObjectName rpcManager1 = getCacheObjectName(JMX_DOMAIN, cachename + "(repl_sync)", "RpcManager");
assert mBeanServer.getAttribute(rpcManager1, "ReplicationCount").equals((long) 0);
assert mBeanServer.getAttribute(rpcManager1, "ReplicationFailures").equals((long) 0);
@@ -205,8 +207,8 @@
@Test(dependsOnMethods = "testSuccessRatio")
public void testAddressInformation() throws Exception {
MBeanServer mBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
- ObjectName rpcManager1 = new ObjectName("RpcManagerMBeanTest:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
- ObjectName rpcManager2 = new ObjectName("RpcManagerMBeanTest2:cache-name=\"" + cachename + "(repl_sync)\",jmx-resource=RpcManager");
+ ObjectName rpcManager1 = getCacheObjectName(JMX_DOMAIN, cachename + "(repl_sync)", "RpcManager");
+ ObjectName rpcManager2 = getCacheObjectName(JMX_DOMAIN2, cachename + "(repl_sync)", "RpcManager");
String cm1Address = manager(0).getAddress().toString();
String cm2Address = manager(1).getAddress().toString();
assert mBeanServer.getAttribute(rpcManager1, "NodeAddress").equals(cm1Address);
Modified: trunk/core/src/test/java/org/infinispan/jmx/TxInterceptorMBeanTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/jmx/TxInterceptorMBeanTest.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/jmx/TxInterceptorMBeanTest.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -14,10 +14,14 @@
import javax.management.ObjectName;
import javax.transaction.TransactionManager;
+import static org.infinispan.test.TestingUtil.getCacheObjectName;
+
@Test(groups = "functional", testName = "jmx.TxInterceptorMBeanTest")
public class TxInterceptorMBeanTest extends MultipleCacheManagersTest {
+ private static final String JMX_DOMAIN = TxInterceptorMBeanTest.class.getSimpleName();
private ObjectName txInterceptor;
+ private ObjectName txInterceptor2;
private MBeanServer threadMBeanServer;
private TransactionManager tm;
private Cache cache1;
@@ -28,10 +32,12 @@
globalConfiguration.setExposeGlobalJmxStatistics(true);
globalConfiguration.setAllowDuplicateDomains(true);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
- globalConfiguration.setJmxDomain("TxInterceptorMBeanTest");
+ globalConfiguration.setJmxDomain(JMX_DOMAIN);
EmbeddedCacheManager cacheManager1 = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(globalConfiguration);
registerCacheManager(cacheManager1);
- EmbeddedCacheManager cacheManager2 = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(globalConfiguration.clone());
+ GlobalConfiguration globalConfiguration2 = globalConfiguration.clone();
+ globalConfiguration2.setCacheManagerName("SecondDefaultCacheManager");
+ EmbeddedCacheManager cacheManager2 = TestCacheManagerFactory.createCacheManagerEnforceJmxDomain(globalConfiguration2);
registerCacheManager(cacheManager2);
Configuration configuration = getDefaultClusteredConfig(Configuration.CacheMode.REPL_SYNC, true);
@@ -40,7 +46,8 @@
cacheManager2.defineConfiguration("test", configuration.clone());
cache1 = cacheManager1.getCache("test");
cache2 = cacheManager2.getCache("test");
- txInterceptor = new ObjectName("TxInterceptorMBeanTest:cache-name=\"test(repl_sync)\",jmx-resource=Transactions");
+ txInterceptor = getCacheObjectName(JMX_DOMAIN, "test(repl_sync)", "Transactions");
+ txInterceptor2 = getCacheObjectName(JMX_DOMAIN, "test(repl_sync)", "Transactions", "SecondDefaultCacheManager");
threadMBeanServer = PerThreadMBeanServerLookup.getThreadMBeanServer();
tm = TestingUtil.getTransactionManager(cache1);
@@ -49,53 +56,53 @@
@AfterMethod
public void resetStats() throws Exception {
threadMBeanServer.invoke(txInterceptor, "resetStatistics", new Object[0], new String[0]);
+ threadMBeanServer.invoke(txInterceptor2, "resetStatistics", new Object[0], new String[0]);
}
- public void testCommit() throws Exception {
-
- assertCommitRollback(0, 0);
+ public void testCommit() throws Exception {
+ assertCommitRollback(0, 0, txInterceptor);
tm.begin();
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor);
cache1.put("key", "value");
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor);
tm.commit();
- assertCommitRollback(1, 0);
+ assertCommitRollback(1, 0, txInterceptor);
}
public void testRollback() throws Exception {
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor);
tm.begin();
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor);
cache1.put("key", "value");
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor);
tm.rollback();
- assertCommitRollback(0, 1);
+ assertCommitRollback(0, 1, txInterceptor);
}
public void testRemoteCommit() throws Exception {
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
tm.begin();
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
cache2.put("key", "value");
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
tm.commit();
- assertCommitRollback(1, 0);
+ assertCommitRollback(1, 0, txInterceptor2);
}
public void testRemoteRollback() throws Exception {
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
tm.begin();
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
cache2.put("key", "value");
- assertCommitRollback(0, 0);
+ assertCommitRollback(0, 0, txInterceptor2);
tm.rollback();
- assertCommitRollback(0, 1);
+ assertCommitRollback(0, 1, txInterceptor2);
}
- private void assertCommitRollback(int commit, int rollback) throws Exception {
- String commitCount = threadMBeanServer.getAttribute(txInterceptor, "Commits").toString();
+ private void assertCommitRollback(int commit, int rollback, ObjectName objectName) throws Exception {
+ String commitCount = threadMBeanServer.getAttribute(objectName, "Commits").toString();
assert Integer.valueOf(commitCount) == commit : "expecting " + commit + " commits, received " + commitCount;
- String rollbackCount = threadMBeanServer.getAttribute(txInterceptor, "Rollbacks").toString();
+ String rollbackCount = threadMBeanServer.getAttribute(objectName, "Rollbacks").toString();
assert Integer.valueOf(commitCount) == commit : "expecting " + rollback + " rollbacks, received " + rollbackCount;
}
}
Modified: trunk/core/src/test/java/org/infinispan/test/TestingUtil.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/TestingUtil.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/test/TestingUtil.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -40,6 +40,7 @@
import org.jgroups.protocols.TP;
import org.jgroups.stack.ProtocolStack;
+import javax.management.ObjectName;
import javax.transaction.TransactionManager;
import java.io.File;
import java.lang.reflect.Field;
@@ -875,4 +876,34 @@
public static TransactionTable getTransactionTable(Cache<Object, Object> cache) {
return cache.getAdvancedCache().getComponentRegistry().getComponent(TransactionTable.class);
}
+
+ public static String getMethodSpecificJmxDomain(Method m, String jmxDomain) {
+ return jmxDomain + '.' + m.getName();
+ }
+
+ public static ObjectName getCacheManagerObjectName(String jmxDomain) throws Exception {
+ return getCacheManagerObjectName(jmxDomain, "DefaultCacheManager");
+ }
+
+ public static ObjectName getCacheManagerObjectName(String jmxDomain, String cacheManagerName) throws Exception {
+ return new ObjectName(jmxDomain + ":type=CacheManager,name=" + ObjectName.quote(cacheManagerName) + ",component=CacheManager");
+ }
+
+ public static ObjectName getCacheObjectName(String jmxDomain) throws Exception {
+ return getCacheObjectName(jmxDomain, CacheContainer.DEFAULT_CACHE_NAME + "(local)");
+ }
+
+ public static ObjectName getCacheObjectName(String jmxDomain, String cacheName) throws Exception {
+ return getCacheObjectName(jmxDomain, cacheName, "Cache");
+ }
+
+ public static ObjectName getCacheObjectName(String jmxDomain, String cacheName, String component) throws Exception {
+ return getCacheObjectName(jmxDomain, cacheName, component, "DefaultCacheManager");
+ }
+
+ public static ObjectName getCacheObjectName(String jmxDomain, String cacheName, String component, String cacheManagerName) throws Exception {
+ return new ObjectName(jmxDomain + ":type=Cache,manager=" + ObjectName.quote(cacheManagerName)
+ + ",name=" + ObjectName.quote(cacheName) + ",component=" + component);
+ }
+
}
Modified: trunk/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/core/src/test/java/org/infinispan/test/fwk/TestCacheManagerFactory.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -15,6 +15,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -237,8 +238,17 @@
* @see #createCacheManagerEnforceJmxDomain(String)
*/
public static EmbeddedCacheManager createCacheManagerEnforceJmxDomain(String jmxDomain, boolean exposeGlobalJmx, boolean exposeCacheJmx) {
+ return createCacheManagerEnforceJmxDomain(jmxDomain, null, exposeGlobalJmx, exposeCacheJmx);
+ }
+
+ /**
+ * @see #createCacheManagerEnforceJmxDomain(String)
+ */
+ public static EmbeddedCacheManager createCacheManagerEnforceJmxDomain(String jmxDomain, String cacheManagerName, boolean exposeGlobalJmx, boolean exposeCacheJmx) {
GlobalConfiguration globalConfiguration = GlobalConfiguration.getNonClusteredDefault();
globalConfiguration.setJmxDomain(jmxDomain);
+ if (cacheManagerName != null)
+ globalConfiguration.setCacheManagerName(cacheManagerName);
globalConfiguration.setMBeanServerLookup(PerThreadMBeanServerLookup.class.getName());
globalConfiguration.setExposeGlobalJmxStatistics(exposeGlobalJmx);
Configuration configuration = new Configuration();
Modified: trunk/jopr-plugin/pom.xml
===================================================================
--- trunk/jopr-plugin/pom.xml 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/pom.xml 2010-11-03 16:56:10 UTC (rev 2664)
@@ -184,14 +184,14 @@
</docletArtifact>
<useStandardDocletOptions>false</useStandardDocletOptions>
</configuration>
- <executions>
- <execution>
- <phase>process-classes</phase>
- <goals>
- <goal>javadoc</goal>
- </goals>
- </execution>
- </executions>
+ <executions>
+ <execution>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>javadoc</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
<!--
Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheComponent.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheComponent.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheComponent.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -41,8 +41,12 @@
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.plugins.jmx.MBeanResourceComponent;
+import org.rhq.plugins.jmx.ObjectNameQueryUtility;
+import javax.management.ObjectName;
import java.util.Collection;
+import java.util.List;
import java.util.Set;
/**
@@ -51,13 +55,12 @@
* @author Heiko W. Rupp
* @author Galder Zamarreño
*/
-public class CacheComponent implements ResourceComponent<CacheManagerComponent>, MeasurementFacet, OperationFacet {
+public class CacheComponent extends MBeanResourceComponent<CacheManagerComponent> {
private static final Log log = LogFactory.getLog(CacheComponent.class);
private ResourceContext<CacheManagerComponent> context;
-
- /** The naming pattern of the current bean without the actual bean name */
- private String myNamePattern;
+ private String cacheManagerName;
+ private String cacheName;
/**
* Return availability of this resource
@@ -69,14 +72,13 @@
EmsConnection conn = getConnection();
try {
conn.refresh();
- EmsBean bean = conn.getBean(context.getResourceKey());
- EmsAttribute attribute = bean.getAttribute("CacheStatus");
- if (attribute.getValue().equals(ComponentStatus.RUNNING.toString())) {
+ EmsBean bean = queryCacheBean();
+ if (bean != null && bean.getAttribute("CacheStatus").getValue().equals(ComponentStatus.RUNNING.toString())) {
bean.refreshAttributes();
- if (trace) log.trace("Cache status is running and attributes could be refreshed, so it's up.");
+ if (trace) log.trace("Cache {0} within {1} cache manager is running and attributes could be refreshed, so it's up.", cacheName, cacheManagerName);
return AvailabilityType.UP;
}
- if (trace) log.trace("Cache status is anything other than running, so it's down.");
+ if (trace) log.trace("Cache status for {0} within {1} cache manager is anything other than running, so it's down.", cacheName, cacheManagerName);
return AvailabilityType.DOWN;
} catch (Exception e) {
if (trace) log.trace("There was an exception checking availability, so cache status is down.");
@@ -84,16 +86,14 @@
}
}
-
/**
* Start the resource connection
- *
- * @see org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)
*/
- public void start(ResourceContext<CacheManagerComponent> context) throws Exception {
+ public void start(ResourceContext<CacheManagerComponent> context) {
+ if (log.isTraceEnabled()) log.trace("Start cache component");
this.context = context;
- myNamePattern = context.getResourceKey();
- myNamePattern = myNamePattern.substring(0, myNamePattern.indexOf("jmx-resource=") + 13);
+ this.cacheManagerName = context.getParentResourceComponent().context.getResourceKey();
+ this.cacheName = context.getResourceKey();
}
/**
@@ -104,26 +104,22 @@
public void stop() {
}
-
/**
* Gather measurement data
*
* @see org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport,
* java.util.Set)
*/
- public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) throws Exception {
+ public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) {
boolean trace = log.isTraceEnabled();
if (trace) log.trace("Get values metrics");
- EmsConnection conn = getConnection();
for (MeasurementScheduleRequest req : metrics) {
if (trace) log.trace("Inspect metric {0}", req);
String metric = req.getName();
try {
- String abbrev = metric.substring(0, metric.indexOf("."));
- String mbean = myNamePattern + abbrev;
- EmsBean bean = conn.getBean(mbean);
+ EmsBean bean = queryComponentBean(metric);
if (bean != null) {
- if (trace) log.trace("Retrieved mbean with name {0}", mbean);
+ if (trace) log.trace("Retrieved mbean with name {0}", bean.getBeanName());
bean.refreshAttributes();
String attName = metric.substring(metric.indexOf(".") + 1);
EmsAttribute att = bean.getAttribute(attName);
@@ -148,8 +144,6 @@
} else {
log.warn("Attribute {0} not found", attName);
}
- } else {
- if (trace) log.trace("No mbean found with name {0}", mbean);
}
}
catch (Exception e) {
@@ -161,18 +155,15 @@
/**
* Invoke operations on the Cache MBean instance
*
- * @param name Name of the operation
- * @param parameters Parameters of the Operation
+ * @param fullOpName Name of the operation
+ * @param parameters Parameters of the Operation
* @return OperationResult object if successful
- * @throws Exception If operation was not successful
+ * @throws Exception If operation was not successful
*/
- public OperationResult invokeOperation(String name, Configuration parameters) throws Exception {
+ public OperationResult invokeOperation(String fullOpName, Configuration parameters) throws Exception {
boolean trace = log.isTraceEnabled();
- EmsConnection conn = getConnection();
- String abbrev = name.substring(0, name.indexOf("."));
- String mbean = myNamePattern + abbrev;
- EmsBean bean = conn.getBean(mbean);
- String opName = name.substring(name.indexOf(".") + 1);
+ EmsBean bean = queryComponentBean(fullOpName);
+ String opName = fullOpName.substring(fullOpName.indexOf(".") + 1);
EmsOperation ops = bean.getOperation(opName);
Collection<PropertySimple> simples = parameters.getSimpleProperties().values();
if (trace) log.trace("Parameters, as simple properties, are {0}", simples);
@@ -184,7 +175,7 @@
}
if (ops == null)
- throw new Exception("Operation " + name + " can't be found");
+ throw new Exception("Operation " + fullOpName + " can't be found");
Object result = ops.invoke(realParams);
if (trace) log.trace("Returning operation result containing {0}", result.toString());
@@ -192,7 +183,7 @@
}
private EmsConnection getConnection() {
- return context.getParentResourceComponent().getConnection();
+ return context.getParentResourceComponent().getEmsConnection();
}
private MeasurementDataNumeric constructMeasurementDataNumeric(Class attrType, Object o, MeasurementScheduleRequest req) {
@@ -215,4 +206,39 @@
log.warn("Unknown {0} attribute type for {1}", attrType, o);
return null;
}
+
+ private String getSingleComponentPattern(String cacheManagerName, String cacheName, String componentName) {
+ return namedCacheComponentPattern(cacheManagerName, cacheName, componentName) + ",*";
+ }
+
+ private String namedCacheComponentPattern(String cacheManagerName, String cacheName, String componentName) {
+ return CacheDiscovery.cacheComponentPattern(cacheManagerName, componentName)
+ + ",name=" + ObjectName.quote(cacheName);
+ }
+
+ private EmsBean queryCacheBean() {
+ return queryBean("Cache");
+ }
+
+ private EmsBean queryComponentBean(String name) {
+ String componentName = name.substring(0, name.indexOf("."));
+ return queryBean(componentName);
+ }
+
+ private EmsBean queryBean(String componentName) {
+ EmsConnection conn = getConnection();
+ String pattern = getSingleComponentPattern(cacheManagerName, cacheName, componentName);
+ if (log.isTraceEnabled()) log.trace("Pattern to query is {0}", pattern);
+ ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(pattern);
+ List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
+ if (beans.size() > 1) {
+ // If more than one are returned, most likely is due to duplicate domains which is not the general case
+ log.warn("More than one bean returned from applying {0} pattern: {1}", pattern, beans);
+ }
+ EmsBean bean = beans.get(0);
+ if (bean == null) {
+ if (log.isTraceEnabled()) log.trace("No mbean found with name {0}", pattern);
+ }
+ return bean;
+ }
}
\ No newline at end of file
Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheDiscovery.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheDiscovery.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheDiscovery.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -28,8 +28,10 @@
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent;
import org.rhq.plugins.jmx.ObjectNameQueryUtility;
+import javax.management.ObjectName;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -40,22 +42,22 @@
* @author Heiko W. Rupp
* @author Galder Zamarreño
*/
-public class CacheDiscovery implements ResourceDiscoveryComponent<CacheManagerComponent> {
+public class CacheDiscovery extends MBeanResourceDiscoveryComponent<CacheManagerComponent> {
private static final Log log = LogFactory.getLog(CacheDiscovery.class);
- /** Naming pattern of the cache mbean */
- static final String CACHE_QUERY = "*:cache-name=%name%,jmx-resource=Cache";
-
/** Run the discovery */
- public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<CacheManagerComponent> discoveryContext) throws Exception {
+ public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<CacheManagerComponent> ctx) {
boolean trace = log.isTraceEnabled();
- if (trace) log.trace("Discover resources with context: " + discoveryContext);
+ if (trace) log.trace("Discover resources with context");
Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
- EmsConnection conn = discoveryContext.getParentResourceComponent().getConnection();
- if (trace) log.trace("Connection to ems server stablished: " + conn);
-
- ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(CACHE_QUERY);
+ EmsConnection conn = ctx.getParentResourceComponent().getEmsConnection();
+ if (trace) log.trace("Connection to ems server established");
+
+ String pattern = getAllCachesPattern(ctx.getParentResourceContext().getResourceKey());
+ if (trace) log.trace("Pattern to query is {0}", pattern);
+
+ ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(pattern);
List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
if (trace) log.trace("Querying [" + queryUtility.getTranslatedQuery() + "] returned beans: " + beans);
@@ -66,12 +68,12 @@
String name = bean.getAttribute("CacheName").getValue().toString();
if (trace) log.trace("Resource name is {0}", name);
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- discoveryContext.getResourceType(), // Resource Type
- bean.getBeanName().getCanonicalName(), // Resource Key
+ ctx.getResourceType(), // Resource Type
+ name, // Resource Key
name, // Resource name
null, // Version
"One cache within Infinispan", // ResourceDescription
- discoveryContext.getDefaultPluginConfiguration(), // Plugin Config
+ ctx.getDefaultPluginConfiguration(), // Plugin Config
null // ProcessInfo
);
@@ -81,4 +83,12 @@
}
return discoveredResources;
}
+
+ private String getAllCachesPattern(String cacheManagerName) {
+ return cacheComponentPattern(cacheManagerName, "Cache") + ",*";
+ }
+
+ protected static String cacheComponentPattern(String cacheManagerName, String componentName) {
+ return "*:type=Cache,component=" + componentName + ",manager=" + ObjectName.quote(cacheManagerName);
+ }
}
\ No newline at end of file
Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerComponent.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -31,24 +31,27 @@
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
-import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.plugins.jmx.JMXComponent;
+import org.rhq.plugins.jmx.MBeanResourceComponent;
import org.rhq.plugins.jmx.ObjectNameQueryUtility;
+import javax.management.ObjectName;
+import java.util.List;
import java.util.Set;
+import static org.infinispan.jmx.CacheManagerJmxRegistration.CACHE_MANAGER_JMX_GROUP;
+
/**
* The component class for the Infinispan manager
*
* @author Heiko W. Rupp
* @author Galder Zamarreño
*/
-public class CacheManagerComponent implements ResourceComponent, MeasurementFacet {
+public class CacheManagerComponent extends MBeanResourceComponent<MBeanResourceComponent> {
private static final Log log = LogFactory.getLog(CacheManagerComponent.class);
- private ResourceContext context;
- private ConnectionHelper helper;
+ protected ResourceContext<JMXComponent> context;
+ private String cacheManagerPattern;
/**
* Return availability of this resource. We do this by checking the connection to it. If the Manager would expose
@@ -58,13 +61,13 @@
*/
public AvailabilityType getAvailability() {
boolean trace = log.isTraceEnabled();
- EmsConnection conn = getConnection();
+ EmsConnection conn = getEmsConnection();
try {
conn.refresh();
EmsBean bean = queryCacheManagerBean(conn);
if (bean != null) {
bean.refreshAttributes();
- if (trace) log.trace("Cache manager could be found and attributes where refreshed, so it's up.", bean);
+ if (trace) log.trace("Cache manager {0} could be found and attributes where refreshed, so it's up.", bean);
return AvailabilityType.UP;
}
if (trace) log.trace("Cache manager could not be found, so cache manager is down");
@@ -77,23 +80,16 @@
/**
* Start the resource connection
- *
- * @see org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)
*/
- public void start(ResourceContext context) throws InvalidPluginConfigurationException, Exception {
+ public void start(ResourceContext context) {
+ // TODO: Call super.start() ?
this.context = context;
- this.helper = new ConnectionHelper();
- getConnection();
+ this.cacheManagerPattern = "*:" + CACHE_MANAGER_JMX_GROUP + ",name=" + ObjectName.quote(context.getResourceKey()) + ",*";
}
- /**
- * Tear down the rescource connection
- *
- * @see org.rhq.core.pluginapi.inventory.ResourceComponent#stop()
- */
- public void stop() {
- helper.closeConnection();
-
+ @Override
+ public EmsConnection getEmsConnection() {
+ return context.getParentResourceComponent().getEmsConnection();
}
/**
@@ -102,11 +98,11 @@
* @see org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport,
* java.util.Set)
*/
- public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) throws Exception {
+ public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) {
boolean trace = log.isTraceEnabled();
if (trace) log.trace("Get values for these metrics: {0}", metrics);
- EmsConnection conn = getConnection();
- if (trace) log.trace("Connection to ems server stablished: {0}", conn);
+ EmsConnection conn = getEmsConnection();
+ if (trace) log.trace("Connection to ems server established: {0}", conn);
EmsBean bean = queryCacheManagerBean(conn);
bean.refreshAttributes();
if (trace) log.trace("Querying returned bean: {0}", bean);
@@ -127,19 +123,15 @@
}
}
- /**
- * Helper to obtain a connection
- *
- * @return EmsConnection object
- */
- protected EmsConnection getConnection() {
- return helper.getEmsConnection(context.getPluginConfiguration());
- }
-
private EmsBean queryCacheManagerBean(EmsConnection conn) {
- String pattern = context.getPluginConfiguration().getSimpleValue("objectName", null);
+ String pattern = cacheManagerPattern;
if (log.isTraceEnabled()) log.trace("Pattern to query is {0}", pattern);
ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(pattern);
- return conn.queryBeans(queryUtility.getTranslatedQuery()).get(0);
+ List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
+ if (beans.size() > 1) {
+ // If more than one are returned, most likely is due to duplicate domains which is not the general case
+ log.warn("More than one bean returned from applying {0} pattern: {1}", pattern, beans);
+ }
+ return beans.get(0);
}
}
\ No newline at end of file
Modified: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/CacheManagerDiscovery.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -22,18 +22,15 @@
package org.infinispan.jopr;
import static org.infinispan.jmx.CacheManagerJmxRegistration.*;
-import static org.infinispan.jmx.ComponentsJmxRegistration.*;
-import static org.infinispan.manager.DefaultCacheManager.*;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
import org.mc4j.ems.connection.EmsConnection;
import org.mc4j.ems.connection.bean.EmsBean;
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.plugins.jmx.JMXDiscoveryComponent;
+import org.rhq.plugins.jmx.JMXComponent;
+import org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent;
import org.rhq.plugins.jmx.ObjectNameQueryUtility;
import java.util.HashSet;
@@ -46,78 +43,63 @@
* @author Heiko W. Rupp
* @author Galder Zamarreño
*/
-public class CacheManagerDiscovery implements ResourceDiscoveryComponent<CacheManagerComponent> {
+public class CacheManagerDiscovery extends MBeanResourceDiscoveryComponent<JMXComponent> {
private static final Log log = LogFactory.getLog(CacheManagerDiscovery.class);
- // Assume a java5+ jmx-remote connector on port 6996
- public static String REMOTE = "service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:6996/jmxrmi";
-
- private static final String MANAGER_OBJECT = "*:" + CACHE_NAME_KEY + '=' + GLOBAL_JMX_GROUP + "," + JMX_RESOURCE_KEY + "=" + OBJECT_NAME;
- private static final String CONNECTOR = "org.mc4j.ems.connection.support.metadata.J2SE5ConnectionTypeDescriptor";
- private static final String OBJECT_NAME_KEY = "objectName";
+ protected static final String CACHE_MANAGER_OBJECTS = "*:" + CACHE_MANAGER_JMX_GROUP + ",*";
/**
* Run the discovery
*/
- public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<CacheManagerComponent> ctx) throws Exception {
+ public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<JMXComponent> ctx) {
boolean trace = log.isTraceEnabled();
if (trace) log.trace("Discover resources with context: {0}", ctx);
- Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
- DiscoveredResourceDetails resource = null;
+ Set<DiscoveredResourceDetails> discoveredResources;
List<Configuration> manualCfgs = ctx.getPluginConfigurations();
if (!manualCfgs.isEmpty()) {
- // Process any manually-added resource.
- Configuration cfg = ctx.getPluginConfigurations().get(0);
- String objectName = cfg.getSimple(OBJECT_NAME_KEY).getStringValue();
- String connectorAddress = cfg.getSimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY).getStringValue();
- resource = createDiscoveredResource(ctx, objectName, connectorAddress);
- if (trace) log.trace("Manually discovered resource is {0}", resource);
+ // TODO: Remove this?
+ discoveredResources = createDiscoveredResource(ctx, CACHE_MANAGER_OBJECTS);
+ if (trace) log.trace("Manually discovered resources are {0}", discoveredResources);
} else {
// Process auto discovered resource
- resource = createDiscoveredResource(ctx, MANAGER_OBJECT, REMOTE);
- if (trace) log.trace("Automatically discovered resource is {0}", resource);
- discoveredResources.add(resource);
+ discoveredResources = createDiscoveredResource(ctx, CACHE_MANAGER_OBJECTS);
+ if (trace) log.trace("Automatically discovered resources are {0}", discoveredResources);
}
- discoveredResources.add(resource);
return discoveredResources;
}
- private DiscoveredResourceDetails createDiscoveredResource(ResourceDiscoveryContext ctx, String objectName, String connectorAddress) {
+ private Set<DiscoveredResourceDetails> createDiscoveredResource(ResourceDiscoveryContext<JMXComponent> ctx, String objectName) {
boolean trace = log.isTraceEnabled();
-
- Configuration c = new Configuration();
- c.put(new PropertySimple(OBJECT_NAME_KEY, objectName));
- c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY, connectorAddress));
- c.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE, CONNECTOR));
- if (trace) log.trace("Configuration is {0}", c.toString(true));
-
- ConnectionHelper helper = new ConnectionHelper();
- EmsConnection conn = helper.getEmsConnection(c);
+ JMXComponent parentComponent = ctx.getParentResourceComponent();
+ EmsConnection conn = parentComponent.getEmsConnection();
if (conn != null) {
- if (trace) log.trace("Connection to ems server stablished: {0}", conn);
+ if (trace) log.trace("Connection to ems server established: {0}", conn);
// Run query for manager_object
ObjectNameQueryUtility queryUtility = new ObjectNameQueryUtility(objectName);
List<EmsBean> beans = conn.queryBeans(queryUtility.getTranslatedQuery());
if (trace) log.trace("Querying [{0}] returned beans: {1}", queryUtility.getTranslatedQuery(), beans);
- EmsBean bean = beans.get(0);
- String managerName = bean.getBeanName().getCanonicalName();
- String resourceName = bean.getAttribute("Name").getValue().toString();
- String version = bean.getAttribute("Version").getValue().toString();
- /* A discovered resource must have a unique key, that must stay the same when the resource is discovered the next time */
- if (trace) log.trace("Add resource with version '{1}' and type {2}", version, ctx.getResourceType());
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- ctx.getResourceType(), // Resource type
- resourceName, // Resource key
- resourceName, // Resource name
- version, // Resource version
- "A cache manager within Infinispan", // Description
- c, // Plugin config
- null // Process info from a process scan
- );
- log.info("Discovered Infinispan instance with key {0} and name {1}", resourceName, managerName);
- return detail;
+ Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
+ for (EmsBean bean : beans) {
+ String managerName = bean.getBeanName().getCanonicalName();
+ String resourceName = bean.getAttribute("Name").getValue().toString();
+ String version = bean.getAttribute("Version").getValue().toString();
+ /* A discovered resource must have a unique key, that must stay the same when the resource is discovered the next time */
+ if (trace) log.trace("Add resource with version '{1}' and type {2}", version, ctx.getResourceType());
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ ctx.getResourceType(), // Resource type
+ resourceName, // Resource key
+ resourceName, // Resource name
+ version, // Resource version
+ "A cache manager within Infinispan", // Description
+ null, // Plugin config
+ null // Process info from a process scan
+ );
+ log.info("Discovered Infinispan instance with key {0} and name {1}", resourceName, managerName);
+ discoveredResources.add(detail);
+ }
+ return discoveredResources;
} else {
log.debug("Unable to establish connection");
return null;
Deleted: trunk/jopr-plugin/src/main/java/org/infinispan/jopr/ConnectionHelper.java
===================================================================
--- trunk/jopr-plugin/src/main/java/org/infinispan/jopr/ConnectionHelper.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/jopr-plugin/src/main/java/org/infinispan/jopr/ConnectionHelper.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -1,166 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2009 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-package org.infinispan.jopr;
-
-import org.infinispan.util.Util;
-import org.infinispan.util.logging.Log;
-import org.infinispan.util.logging.LogFactory;
-import org.mc4j.ems.connection.ConnectionFactory;
-import org.mc4j.ems.connection.EmsConnection;
-import org.mc4j.ems.connection.settings.ConnectionSettings;
-import org.mc4j.ems.connection.support.ConnectionProvider;
-import org.mc4j.ems.connection.support.metadata.ConnectionTypeDescriptor;
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.plugins.jmx.JMXDiscoveryComponent;
-
-import java.util.Properties;
-
-/**
- * Shared helper class to connect to a remote server
- *
- * @author Jay Shaughnessy
- * @author Heiko W. Rupp
- */
-public class ConnectionHelper {
-
- private final Log log = LogFactory.getLog(ConnectionHelper.class);
-
- private EmsConnection connection;
- /**
- * Controls the dampening of connection error stack traces in an attempt to control spam to the log file. Each time a
- * connection error is encountered, this will be incremented. When the connection is finally established, this will
- * be reset to zero.
- */
- private int consecutiveConnectionErrors;
-
-
- public EmsConnection getEmsConnection(Configuration config) {
- EmsConnection emsConnection = null;
-
- try {
- emsConnection = loadConnection(config);
- } catch (Exception e) {
- log.error("Component attempting to access a connection that could not be loaded");
- }
-
- return emsConnection;
- }
-
- /**
- * This is the preferred way to use a connection from within this class; methods should not access the connection
- * property directly as it may not have been instantiated if the connection could not be made. <p/> <p>If the
- * connection has already been established, return the object reference to it. If not, attempt to make a live
- * connection to the JMX server.</p> <p/> <p>If the connection could not be made in the
- * start(org.rhq.core.pluginapi.inventory.ResourceContext) method, this method will effectively try to load the
- * connection on each attempt to use it. As such, multiple threads may attempt to access the connection through this
- * means at a time. Therefore, the method has been made synchronized on instances of the class.</p> <p/> <p>If any
- * errors are encountered, this method will log the error, taking into account logic to prevent spamming the log
- * file. Calling methods should take care to not redundantly log the exception thrown by this method.</p>
- *
- * @param pluginConfig
- * @return live connection to the JMX server; this will not be <code>null</code>
- * @throws Exception if there are any issues at all connecting to the server
- */
- private synchronized EmsConnection loadConnection(Configuration pluginConfig) throws Exception {
- if (this.connection == null) {
- try {
- //Configuration pluginConfig = this.resourceContext.getPluginConfiguration();
-
- ConnectionSettings connectionSettings = new ConnectionSettings();
-
- String connectionTypeDescriptorClass = pluginConfig.getSimple(JMXDiscoveryComponent.CONNECTION_TYPE)
- .getStringValue();
- PropertySimple serverUrl = pluginConfig
- .getSimple(JMXDiscoveryComponent.CONNECTOR_ADDRESS_CONFIG_PROPERTY);
-
- connectionSettings.initializeConnectionType((ConnectionTypeDescriptor) Util.getInstance(connectionTypeDescriptorClass));
- // if not provided use the default serverUrl
- if (null != serverUrl) {
- connectionSettings.setServerUrl(serverUrl.getStringValue());
- }
-
-// connectionSettings.setPrincipal(pluginConfig.getSimpleValue(PRINCIPAL_CONFIG_PROP, null));
-// connectionSettings.setCredentials(pluginConfig.getSimpleValue(CREDENTIALS_CONFIG_PROP, null));
-
- if (connectionSettings.getAdvancedProperties() == null) {
- connectionSettings.setAdvancedProperties(new Properties());
- }
-
- ConnectionFactory connectionFactory = new ConnectionFactory();
-
-
- ConnectionProvider connectionProvider = connectionFactory.getConnectionProvider(connectionSettings);
- this.connection = connectionProvider.connect();
-
- this.connection.loadSynchronous(false); // this loads all the MBeans
-
- this.consecutiveConnectionErrors = 0;
-
- if (log.isDebugEnabled())
- log.debug("Successfully made connection to the remote server instance");
- } catch (Exception e) {
-
- // The connection will be established even in the case that the principal cannot be authenticated,
- // but the connection will not work. That failure seems to come from the call to loadSynchronous after
- // the connection is established. If we get to this point that an exception was thrown, close any
- // connection that was made and null it out so we can try to establish it again.
- if (connection != null) {
- if (log.isDebugEnabled())
- log.debug("Connection created but an exception was thrown. Closing the connection.", e);
- connection.close();
- connection = null;
- }
-
- // Since the connection is attempted each time it's used, failure to connect could result in log
- // file spamming. Log it once for every 10 consecutive times it's encountered.
- if (consecutiveConnectionErrors % 10 == 0) {
- log.warn("Could not establish connection to the Infinispan instance ["
- + (consecutiveConnectionErrors + 1) + "] times.", e);
- }
-
- if (log.isDebugEnabled())
- log.debug("Could not connect to the Infinispan instance for resource ", e);
-
- consecutiveConnectionErrors++;
-
- throw e;
- }
- }
-
- return connection;
- }
-
-
- /**
- * If necessary attempt to close the EMS connection, then set this.connection null. Synchronized ensure we play well
- * with loadConnection.
- */
- public synchronized void closeConnection() {
- if (this.connection != null) {
- try {
- this.connection.close();
- } catch (Exception e) {
- log.error("Error closing Infinispan EMS connection: " + e);
- }
- this.connection = null;
- }
- }
-
-}
Modified: trunk/parent/pom.xml
===================================================================
--- trunk/parent/pom.xml 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/parent/pom.xml 2010-11-03 16:56:10 UTC (rev 2664)
@@ -113,9 +113,13 @@
<version.netty>3.2.3.Final</version.netty>
<version.org.jboss.naming>5.0.3.GA</version.org.jboss.naming>
<version.resteasy>2.0-beta-2</version.resteasy>
- <version.rhq.pluginAnnotations>1.4.0.B01</version.rhq.pluginAnnotations>
- <version.rhq.plugingen>1.4.0.B01</version.rhq.plugingen>
- <version.rhq>1.2.0.GA</version.rhq>
+<!--
+ <version.rhq.pluginAnnotations>4.0.0-SNAPSHOT</version.rhq.pluginAnnotations>
+ <version.rhq.plugingen>4.0.0-SNAPSHOT</version.rhq.plugingen>
+-->
+ <version.rhq.pluginAnnotations>3.0.1</version.rhq.pluginAnnotations>
+ <version.rhq.plugingen>3.0.1</version.rhq.plugingen>
+ <version.rhq>3.0.0</version.rhq>
<version.scala>2.8.0</version.scala>
<version.slf4j>1.6.1</version.slf4j>
<version.spymemcached>2.5</version.spymemcached>
Modified: trunk/tools/src/main/java/org/infinispan/tools/jopr/RhqPluginXmlGenerator.java
===================================================================
--- trunk/tools/src/main/java/org/infinispan/tools/jopr/RhqPluginXmlGenerator.java 2010-11-03 16:45:38 UTC (rev 2663)
+++ trunk/tools/src/main/java/org/infinispan/tools/jopr/RhqPluginXmlGenerator.java 2010-11-03 16:56:10 UTC (rev 2664)
@@ -31,7 +31,9 @@
import java.lang.reflect.Method;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;
@@ -51,7 +53,7 @@
import org.rhq.helpers.pluginGen.Props.MetricProps;
import org.rhq.helpers.pluginGen.Props.OperationProps;
import org.rhq.helpers.pluginGen.Props.SimpleProperty;
-import org.rhq.helpers.pluginGen.Props.Template;
+import org.rhq.helpers.pluginGen.Props.TypeKey;
import com.sun.javadoc.DocErrorReporter;
import com.sun.javadoc.RootDoc;
@@ -103,30 +105,16 @@
root.setName("Infinispan Cache Manager");
root.setPkg("org.infinispan.jopr");
root.setDependsOnJmxPlugin(true);
- root.setManualAddOfResourceType(true);
root.setDiscoveryClass("CacheManagerDiscovery");
root.setComponentClass("CacheManagerComponent");
- root.setSingleton(true);
- root.setCategory(ResourceCategory.SERVER);
+ root.setSingleton(false);
+ root.setCategory(ResourceCategory.SERVICE);
+ Set<TypeKey> servers = new HashSet<TypeKey>();
+ servers.add(new TypeKey("JMX Server", "JMX"));
+ servers.add(new TypeKey("JBossAS Server", "JBossAS"));
+ servers.add(new TypeKey("JBossAS Server", "JBossAS5"));
+ root.setRunsInsides(servers);
populateMetricsAndOperations(globalClasses, root, false);
-
- SimpleProperty connect = new SimpleProperty("connectorAddress");
- connect.setDescription("JMX Remoting address of the remote Infinispan Instance");
- connect.setReadOnly(false);
- root.getSimpleProps().add(connect);
-
- SimpleProperty objectName = new SimpleProperty("objectName");
- objectName.setDescription("ObjectName of the Manager");
- objectName.setType("string");
- objectName.setReadOnly(true);
- root.getSimpleProps().add(objectName);
- Template defaultTemplate = new Template("defaultManualDiscovery");
- defaultTemplate.setDescription("The default setup for Infinispan");
- SimpleProperty connect2 = new SimpleProperty("connectorAddress");
- connect2.setDisplayName("URL of the remote server");
- connect2.setDefaultValue("service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:6996/jmxrmi");
- defaultTemplate.getSimpleProps().add(connect2);
- root.getTemplates().add(defaultTemplate);
Props cache = new Props();
cache.setName("Infinispan Cache");
More information about the infinispan-commits
mailing list