Author: rjung
Date: Thu Jun 23 13:50:40 2011
New Revision: 1138880
URL: http://svn.apache.org/viewvc?rev=1138880&view=rev
Log:
Improve JMX unit test.
Modified:
tomcat/trunk/test/org/apache/catalina/mbeans/TestRegistration.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/test/org/apache/catalina/mbeans/TestRegistration.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/mbeans/TestRegistration.java?rev=1138880&r1=1138879&r2=1138880&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/mbeans/TestRegistration.java
(original)
+++ tomcat/trunk/test/org/apache/catalina/mbeans/TestRegistration.java Thu Jun
23 13:50:40 2011
@@ -17,6 +17,9 @@
package org.apache.catalina.mbeans;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Set;
import javax.management.MBeanServer;
@@ -34,6 +37,56 @@ import org.apache.tomcat.util.modeler.Re
*/
public class TestRegistration extends TomcatBaseTest {
+ private static final String contextName = "/foo";
+
+ private static String[] basicMBeanNames() {
+ return new String[] {
+ "Tomcat:type=Engine",
+ "Tomcat:type=MBeanFactory",
+ "Tomcat:type=NamingResources",
+ "Tomcat:type=Server",
+ "Tomcat:type=Service",
+ "Tomcat:type=StringCache",
+ "Tomcat:type=Valve,name=StandardEngineValve",
+ };
+ }
+
+ private static String[] hostMBeanNames(String host) {
+ return new String[] {
+ "Tomcat:type=Host,host=" + host,
+ "Tomcat:type=Valve,host=" + host + ",name=ErrorReportValve",
+ "Tomcat:type=Valve,host=" + host + ",name=StandardHostValve",
+ };
+ }
+
+ private static String[] contextMBeanNames(String host, String context) {
+ return new String[] {
+ "Tomcat:j2eeType=WebModule,name=//" + host + context +
+ ",J2EEApplication=none,J2EEServer=none",
+ "Tomcat:type=Cache,host=" + host + ",context=" + context,
+ "Tomcat:type=Loader,context=" + context + ",host=" + host,
+ "Tomcat:type=Manager,context=" + context + ",host=" + host,
+ "Tomcat:type=NamingResources,context=" + context +
+ ",host=" + host,
+ "Tomcat:type=Valve,context=" + context +
+ ",host=" + host + ",name=NonLoginAuthenticator",
+ "Tomcat:type=Valve,context=" + context +
+ ",host=" + host + ",name=StandardContextValve",
+ "Tomcat:type=WebappClassLoader,context=" + context +
+ ",host=" + host,
+ };
+ }
+
+ private static String[] connectorMBeanNames(String port, String type) {
+ return new String[] {
+ "Tomcat:type=Connector,port=" + port,
+ "Tomcat:type=GlobalRequestProcessor,name=http-" + type + "-" + port,
+ "Tomcat:type=Mapper,port=" + port,
+ "Tomcat:type=ProtocolHandler,port=" + port,
+ "Tomcat:type=ThreadPool,name=http-" + type + "-" + port,
+ };
+ }
+
/**
* Test verifying that Tomcat correctly de-registers the MBeans it has
* registered.
@@ -50,16 +103,44 @@ public class TestRegistration extends To
if (!contextDir.mkdir())
fail("Failed to create: [" + contextDir.toString() + "]");
}
- tomcat.addContext("/foo", contextDir.getAbsolutePath());
+ tomcat.addContext(contextName, contextDir.getAbsolutePath());
tomcat.start();
// Verify there are no Catalina MBeans
onames = mbeanServer.queryNames(new ObjectName("Catalina:*"), null);
assertEquals("Found: " + onames, 0, onames.size());
- // Verify there are the correct number of Tomcat MBeans
+ // Verify there are the correct Tomcat MBeans
onames = mbeanServer.queryNames(new ObjectName("Tomcat:*"), null);
- assertEquals("Wrong number of Tomcat MBeans", 23, onames.size());
+ ArrayList<String> found = new ArrayList<String>(onames.size());
+ for (ObjectName on: onames) {
+ found.add(on.toString());
+ }
+
+ // Create the list of expected MBean names
+ String protocol=
+ getTomcatInstance().getConnector().getProtocolHandlerClassName();
+ if (protocol.indexOf("Nio") > 0) {
+ protocol = "nio";
+ } else if (protocol.indexOf("Apr") > 0) {
+ protocol = "apr";
+ } else {
+ protocol = "bio";
+ }
+ ArrayList<String> expected = new
ArrayList<String>(Arrays.asList(basicMBeanNames()));
+ expected.addAll(Arrays.asList(hostMBeanNames("localhost")));
+ expected.addAll(Arrays.asList(contextMBeanNames("localhost",
contextName)));
+
expected.addAll(Arrays.asList(connectorMBeanNames(Integer.toString(getPort()),
protocol)));
+
+ // Did we find all expected MBeans?
+ ArrayList<String> missing = new ArrayList<String>(expected);
+ missing.removeAll(found);
+ assertTrue("Missing Tomcat MBeans: " + missing, missing.isEmpty());
+
+ // Did we find any unexpected MBeans?
+ List additional = found;
+ additional.removeAll(expected);
+ assertTrue("Unexpected Tomcat MBeans: " + additional,
additional.isEmpty());
tomcat.stop();
@@ -77,7 +158,7 @@ public class TestRegistration extends To
if (!contextDir2.mkdir())
fail("Failed to create: [" + contextDir2.toString() + "]");
}
- tomcat.addContext(host, "/foo2", contextDir2.getAbsolutePath());
+ tomcat.addContext(host, contextName + "2",
contextDir2.getAbsolutePath());
tomcat.start();
tomcat.stop();
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1138880&r1=1138879&r2=1138880&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jun 23 13:50:40 2011
@@ -139,6 +139,9 @@
Use system properties loaded from catalina.properties via the class
path in unit tests. (rjung)
</fix>
+ <update>
+ Improve JMX unit test. (rjung)
+ </update>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]