Search in sources :

Example 31 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkTemplateAttributes.

/**
 *     Look for Attributes that probably should be String and not int/long
 *     due to our template facility ${...}
 */
public void checkTemplateAttributes(final ObjectName objectName) {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    if (proxy instanceof AMXConfig) {
        final AMXConfig config = (AMXConfig) proxy;
        final Set<String> s = new HashSet<String>();
        final MBeanInfo mbeanInfo = Util.getExtra(config).getMBeanInfo();
        final MBeanAttributeInfo[] attrInfos = mbeanInfo.getAttributes();
        for (int i = 0; i < attrInfos.length; ++i) {
            final MBeanAttributeInfo info = attrInfos[i];
            final String type = info.getType();
            if (type.equals("int") || type.equals("long")) {
                s.add(info.getName());
            }
        }
        if (s.size() != 0) {
            trace("\n" + objectName + " contains the following int/long Attributes which perhaps ought to be String" + " due to the templatizing of config: " + toString(s) + "\n");
        }
    }
}
Also used : MBeanInfo(javax.management.MBeanInfo) AMX(com.sun.appserv.management.base.AMX) AMXConfig(com.sun.appserv.management.config.AMXConfig) MBeanAttributeInfo(javax.management.MBeanAttributeInfo) HashSet(java.util.HashSet)

Example 32 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkImplementsAMXConfig.

/**
 *     Verify:
 *     <ul>
 *     <li>if the interface name ends in "Config" or "ConfigMgr", then is is an AMXConfig</li>
 *     </ul>
 */
public void checkImplementsAMXConfig(final ObjectName objectName) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    final String interfaceName = Util.getExtra(proxy).getInterfaceName();
    if (interfaceName.endsWith("Config") || interfaceName.endsWith("ConfigMgr")) {
        if (!(proxy instanceof AMXConfig)) {
            trace("WARNING: " + ClassUtil.stripPackageName(interfaceName) + " does not implement AMXConfig");
        }
    }
}
Also used : AMX(com.sun.appserv.management.base.AMX) AMXConfig(com.sun.appserv.management.config.AMXConfig)

Example 33 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkMapsHaveCreateRemove.

/**
 *     Verify that all getAbcConfigMgr() calls return a non-null result.
 */
public void checkMapsHaveCreateRemove(final ObjectName objectName) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    if (proxy instanceof Container && proxy.getGroup().equals(AMX.GROUP_CONFIGURATION)) {
        final Extra extra = Util.getExtra(proxy);
        final String[] attrNames = extra.getAttributeNames();
        for (int i = 0; i < attrNames.length; ++i) {
            final String name = attrNames[i];
            final String SUFFIX = "ObjectNameMap";
            final String PREFIX = JMXUtil.GET;
            if (name.endsWith(SUFFIX)) {
                final String base = StringUtil.stripPrefixAndSuffix(name, PREFIX, SUFFIX);
                if (base.endsWith("ConnectorModuleConfig")) {
                    // these are created via deployment not directly
                    continue;
                }
                final String createName = "create" + base;
                final String removeName = "remove" + base;
                final String j2eeType = proxy.getJ2EEType();
                if (ignoreCreateRemove(proxy.getJ2EEType(), createName)) {
                    continue;
                }
                final MBeanOperationInfo[] creates = JMXUtil.findOperations(extra.getMBeanInfo().getOperations(), createName);
                boolean haveCreate = false;
                for (int op = 0; op < creates.length; ++op) {
                    final MBeanOperationInfo info = creates[op];
                    if (info.getReturnType().equals(ObjectName.class.getName())) {
                        haveCreate = true;
                        break;
                    }
                }
                assert (haveCreate) : "Missing operation " + createName + "() for " + objectName;
                final MBeanOperationInfo[] removes = JMXUtil.findOperations(extra.getMBeanInfo().getOperations(), removeName);
                boolean haveRemove = false;
                for (int op = 0; op < removes.length; ++op) {
                    final MBeanOperationInfo info = removes[op];
                    if (info.getReturnType().equals("void") && info.getSignature().length <= 2) {
                        haveRemove = true;
                        break;
                    }
                }
                assert (haveRemove) : "Missing operation " + removeName + "() for " + objectName;
            }
        }
    }
}
Also used : Container(com.sun.appserv.management.base.Container) Extra(com.sun.appserv.management.base.Extra) MBeanOperationInfo(javax.management.MBeanOperationInfo) AMX(com.sun.appserv.management.base.AMX) ObjectName(javax.management.ObjectName)

Example 34 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class ContainerTest method testContaineesOfType.

private void testContaineesOfType(final Container c, final String j2eeType) {
    final Set<String> j2eeTypes = c.getContaineeJ2EETypes();
    final Map<String, Map<String, AMX>> all = c.getMultiContaineeMap(j2eeTypes);
    final Map<String, Map<String, AMX>> allFromNull = c.getMultiContaineeMap(null);
    assert (mapsOfMapsEqual(all, allFromNull));
    final Map<String, AMX> byType = c.getContaineeMap(j2eeType);
    assert mapsEqual(byType, all.get(j2eeType));
    if (byType.keySet().size() == 1) {
        final AMX cc = c.getContainee(j2eeType);
        assert cc == byType.values().iterator().next();
    }
    final Set<AMX> s = c.getContaineeSet(j2eeType);
    final Set<AMX> sByType = new HashSet<AMX>(byType.values());
    assert setsEqual(sByType, s);
    final Set<String> nullSet = null;
    assert (setsEqual(c.getContaineeSet(nullSet), c.getContaineeSet(j2eeTypes)));
    assert (setsEqual(c.getContaineeSet(), c.getContaineeSet(nullSet)));
    for (final AMX amx : byType.values()) {
        final String itsName = amx.getName();
        final String itsType = amx.getJ2EEType();
        final Set<String> types = GSetUtil.newStringSet(itsType);
        final Set<AMX> x = c.getByNameContaineeSet(types, itsName);
        assert (x.size() == 1);
        assert (amx == x.iterator().next());
        assert (c.getContainee(itsType, itsName) == amx);
    }
}
Also used : AMX(com.sun.appserv.management.base.AMX) Map(java.util.Map) HashSet(java.util.HashSet)

Example 35 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class ProxyTest method checkProxiesCached.

public void checkProxiesCached(final ObjectName src) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(src, AMX.class);
    assert (proxy == getProxyFactory().getProxy(src, AMX.class));
    assert (proxy.getContainer() == proxy.getContainer());
    assert (proxy.getDomainRoot() == proxy.getDomainRoot());
    final Class interfaceClass = getInterfaceClass(proxy);
    final Method[] proxyMethods = interfaceClass.getMethods();
    for (int methodIdx = 0; methodIdx < proxyMethods.length; ++methodIdx) {
        final Method method = proxyMethods[methodIdx];
        final String methodName = method.getName();
        if (isProxyGetter(method)) {
            // invoke it twice, and verify that the 2nd call results in the same proxy
            // trace( "Invoking: " + method );
            method.invoke(proxy, (Object[]) null);
        }
    }
}
Also used : Method(java.lang.reflect.Method) AMX(com.sun.appserv.management.base.AMX)

Aggregations

AMX (com.sun.appserv.management.base.AMX)37 ObjectName (javax.management.ObjectName)10 Container (com.sun.appserv.management.base.Container)6 MBeanInfo (javax.management.MBeanInfo)6 HashSet (java.util.HashSet)5 AMXConfig (com.sun.appserv.management.config.AMXConfig)4 Method (java.lang.reflect.Method)3 Iterator (java.util.Iterator)3 Set (java.util.Set)3 MBeanOperationInfo (javax.management.MBeanOperationInfo)3 MBeanServerConnection (javax.management.MBeanServerConnection)3 AMXDebugStuff (org.glassfish.admin.amx.util.AMXDebugStuff)3 QueryMgr (com.sun.appserv.management.base.QueryMgr)2 ProxyFactory (com.sun.appserv.management.client.ProxyFactory)2 DomainConfig (com.sun.appserv.management.config.DomainConfig)2 CoverageInfo (com.sun.appserv.management.ext.coverage.CoverageInfo)2 Map (java.util.Map)2 TreeSet (java.util.TreeSet)2 MBeanAttributeInfo (javax.management.MBeanAttributeInfo)2 DomainRoot (com.sun.appserv.management.DomainRoot)1