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 21:37:30 UTC
svn commit: r631711 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management:
JMXConnectionDecorator.java MBeanTest.java
Author: djd
Date: Wed Feb 27 12:37:28 2008
New Revision: 631711
URL: http://svn.apache.org/viewvc?rev=631711&view=rev
Log:
DERBY-3385 Switch the way a JMX connection is opened to be driven by a decorator, step towards having a local mode for the MBeans as well.
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.java (with props)
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/MBeanTest.java
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.java?rev=631711&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.java Wed Feb 27 12:37:28 2008
@@ -0,0 +1,96 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.functionTests.tests.management.JMXConnectionGetter
+
+ 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.net.MalformedURLException;
+
+import javax.management.remote.JMXServiceURL;
+
+import junit.framework.Test;
+
+import org.apache.derbyTesting.junit.BaseTestSetup;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+/**
+ * Interface for MBeanTest to get a MBeanServerConnection connection
+ * from. A decorator will setup mbeanServerConnector to point to
+ * an implementation of this class to obtain JMX connections.
+ */
+class JMXConnectionDecorator extends BaseTestSetup {
+
+ /**
+ * Decorate a test so to use JMX connections from the passed in url.
+ */
+ static Test remoteNoSecurity(Test test)
+ {
+ return new JMXConnectionDecorator(test, true);
+ }
+
+ // ignored for now
+ private final boolean remote;
+ private JMXConnectionGetter oldGetter;
+
+ private JMXConnectionDecorator(Test test, boolean remote) {
+ super(test);
+ this.remote = remote;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ oldGetter =
+ JMXConnectionGetter.mbeanServerConnector.get();
+ JMXConnectionGetter.mbeanServerConnector.set(
+ new RemoteConnectionGetter( getJmxUrl()));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ JMXConnectionGetter.mbeanServerConnector.set(oldGetter);
+ oldGetter = null;
+ }
+
+ /**
+ * Creates a URL for connecting to the platform MBean server on the host
+ * specified by the network server hostname of this test configuration.
+ * The JMX port number used is also retreived from the test configuration.
+ * @return a service URL for connecting to the platform MBean server
+ * @throws MalformedURLException if the URL is malformed
+ */
+ private JMXServiceURL getJmxUrl() throws MalformedURLException {
+
+ // NOTE: This hostname is only valid in a client/server configuration
+ String hostname = TestConfiguration.getCurrent().getHostName();
+ //String hostname = TestConfiguration.DEFAULT_HOSTNAME; // for embedded?
+ int jmxPort = TestConfiguration.getCurrent().getJmxPort();
+
+ /* "jmxrmi" is the name of the RMI server connector of the platform
+ * MBean server, which is used by Derby */
+ JMXServiceURL url = new JMXServiceURL(
+ "service:jmx:rmi:///jndi/rmi://"
+ + hostname
+ + ":" + jmxPort + "/jmxrmi");
+
+ return url;
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/management/JMXConnectionDecorator.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=631711&r1=631710&r2=631711&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 Wed Feb 27 12:37:28 2008
@@ -42,6 +42,7 @@
import junit.framework.TestSuite;
import org.apache.derbyTesting.junit.BaseTestCase;
+import org.apache.derbyTesting.junit.BaseTestSetup;
import org.apache.derbyTesting.junit.NetworkServerTestSetup;
import org.apache.derbyTesting.junit.SecurityManagerSetup;
import org.apache.derbyTesting.junit.TestConfiguration;
@@ -63,7 +64,10 @@
// Older VMs will get UnsupportedClassVersionError anyway...
// Create a suite of all "test..." methods in the class.
- TestSuite suite = new TestSuite(testClass, suiteName);
+ Test suite = new TestSuite(testClass, suiteName);
+
+ // Set up to get JMX connections using remote JMX
+ suite = JMXConnectionDecorator.remoteNoSecurity(suite);
/* Connecting to an MBean server using a URL requires setting up remote
* JMX in the JVM to which we want to connect. This is usually done by
@@ -139,45 +143,14 @@
}
/**
- * Creates a URL for connecting to the platform MBean server on the host
- * specified by the network server hostname of this test configuration.
- * The JMX port number used is also retreived from the test configuration.
- * @return a service URL for connecting to the platform MBean server
- * @throws MalformedURLException if the URL is malformed
- */
- private JMXServiceURL getJmxUrl() throws MalformedURLException {
-
- // NOTE: This hostname is only valid in a client/server configuration
- String hostname = TestConfiguration.getCurrent().getHostName();
- //String hostname = TestConfiguration.DEFAULT_HOSTNAME; // for embedded?
- int jmxPort = TestConfiguration.getCurrent().getJmxPort();
-
- /* "jmxrmi" is the name of the RMI server connector of the platform
- * MBean server, which is used by Derby */
- JMXServiceURL url = new JMXServiceURL(
- "service:jmx:rmi:///jndi/rmi://"
- + hostname
- + ":" + jmxPort + "/jmxrmi");
-
- return url;
- }
-
- /**
- * Creates a client connector for JMX and uses this to obtain a connection
- * to an MBean server. This method assumes that JMX security has been
- * disabled, meaning that authentication credentials and SSL configuration
- * details are not supplied to the MBeanServer.
+ * Obtains a connection to an MBean server. Assumes th
*
* @return a plain connection to an MBean server
- * @throws MalformedURLException if the JMX Service URL used is invalid
- * @throws IOException if connecting to the MBean server fails
*/
protected MBeanServerConnection getMBeanServerConnection()
- throws MalformedURLException, IOException {
-
- // assumes that JMX authentication and SSL is not required (hence null)
- JMXConnector jmxc = JMXConnectorFactory.connect(getJmxUrl(), null);
- return jmxc.getMBeanServerConnection();
+ throws Exception {
+
+ return JMXConnectionGetter.mbeanServerConnector.get().getMBeanServerConnection();
}
/**