You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2008/02/27 01:40:22 UTC

svn commit: r631440 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management: JMXTest.java MBeanTest.java _Suite.java

Author: djd
Date: Tue Feb 26 16:40:20 2008
New Revision: 631440

URL: http://svn.apache.org/viewvc?rev=631440&view=rev
Log:
DERBY-3385 Add a higher level JMX test class that will contain fixtures that test the whole of Derby's JMX system rather than specific MBeans.

Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java   (with props)
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/_Suite.java

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java?rev=631440&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java Tue Feb 26 16:40:20 2008
@@ -0,0 +1,84 @@
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.tests.management.JMXTest
+
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to you under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.management;
+
+import java.util.Set;
+
+import javax.management.MBeanInfo;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+
+import junit.framework.Test;
+
+
+/**
+ * Tests against the general JMX management provided by Derby
+ * instead of tests against a specific MBean,
+ */
+public class JMXTest extends MBeanTest {
+    
+    public JMXTest(String name) {
+        super(name);
+    }
+    
+    public static Test suite() {
+        
+        return MBeanTest.suite(JMXTest.class, 
+                                        "JMXTest:client");
+    }
+    
+    /**
+     * Test that all MBeans registered by Derby have:
+     * <UL>
+     * <LI> A type key property correct set.
+     * <LI> Expose a class name in org.apache.derby.mbeans.
+     * </UL>
+     * @throws Exception
+     */
+    public void testDerbyRegisteredMBeansSimpleInfo() throws Exception
+    {        
+        Set<ObjectName> derbyMBeans = getDerbyDomainMBeans();
+        
+        MBeanServerConnection jmx = getMBeanServerConnection();
+        for (ObjectName name : derbyMBeans)
+        {
+            String type = name.getKeyProperty("type");
+            // Every Derby MBean has a type.
+            assertNotNull(type);
+            
+            MBeanInfo mbeanInfo = jmx.getMBeanInfo(name);
+            
+            String mbeanClassName = mbeanInfo.getClassName();
+            // Is the class name in the public api
+            assertTrue(mbeanClassName.startsWith("org.apache.derby.mbeans."));
+            
+            // and is a Derby specific MBean.
+            assertTrue(mbeanClassName.endsWith("MBean"));
+            
+            // Check the type is the class name of the MBean without
+            // the MBean and the package.
+            String scn = mbeanClassName.substring(mbeanClassName.lastIndexOf('.') + 1);         
+            scn = scn.substring(0, scn.length() - "MBean".length());
+            assertEquals(scn, type);
+        }
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java?rev=631440&r1=631439&r2=631440&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java Tue Feb 26 16:40:20 2008
@@ -25,6 +25,7 @@
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.util.ArrayList;
+import java.util.Set;
 
 import javax.management.InstanceAlreadyExistsException;
 import javax.management.InstanceNotFoundException;
@@ -209,6 +210,18 @@
         }
         
         assertTrue("Failed to activate Derby's JMX management", active);
+    }
+    
+    /**
+     * Get all MBeans registered in Derby's domain.
+     * @return Set of ObjectNames for all of Derby's registered MBeans.
+     * @throws Exception
+     */
+    protected Set<ObjectName> getDerbyDomainMBeans() throws Exception
+    {
+        ObjectName derbyDomain = new ObjectName("org.apache.derby:*");
+        return  (Set<ObjectName>)
+            getMBeanServerConnection().queryNames(derbyDomain, null);
     }
     
     /**

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/_Suite.java?rev=631440&r1=631439&r2=631440&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/_Suite.java Tue Feb 26 16:40:20 2008
@@ -51,6 +51,7 @@
 
         TestSuite suite = new TestSuite("management");
 
+        suite.addTest(JMXTest.suite());
         suite.addTest(ManagementMBeanTest.suite());
         suite.addTest(VersionMBeanTest.suite());