diff options
author | Joakim Erdfelt | 2015-07-23 19:16:50 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2015-07-23 19:16:50 +0000 |
commit | b954a2dad565db086883efb2680791ffb45ee523 (patch) | |
tree | 1dc3660f3173fbb332ddd2913232580f26beec77 /jetty-deploy/src | |
parent | c9c2ebc5325e3c11fa9f6ca2193fad5a7095f3cc (diff) | |
download | org.eclipse.jetty.project-b954a2dad565db086883efb2680791ffb45ee523.tar.gz org.eclipse.jetty.project-b954a2dad565db086883efb2680791ffb45ee523.tar.xz org.eclipse.jetty.project-b954a2dad565db086883efb2680791ffb45ee523.zip |
Unit testing upgrades
+ Using jetty-test-helper 3.0
+ Adding jetty-perf-helper (replacement for BenchmarkHelper)
+ Adding JmxServiceConnection to jetty-deploy (formerly part of
jetty-test-helper)
Diffstat (limited to 'jetty-deploy/src')
-rw-r--r-- | jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java | 1 | ||||
-rw-r--r-- | jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java | 154 |
2 files changed, 154 insertions, 1 deletions
diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java index 3907186a44..49dd8d08a8 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java @@ -27,7 +27,6 @@ import javax.management.ObjectName; import org.eclipse.jetty.jmx.MBeanContainer; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.toolchain.jmx.JmxServiceConnection; import org.junit.Test; public class DeploymentManagerLifeCyclePathTest diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java new file mode 100644 index 0000000000..c59c87585b --- /dev/null +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java @@ -0,0 +1,154 @@ +// +// ======================================================================== +// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.deploy; + +import java.io.IOException; +import java.lang.management.ManagementFactory; + +import javax.management.MBeanServer; +import javax.management.MBeanServerConnection; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXConnectorServer; +import javax.management.remote.JMXConnectorServerFactory; +import javax.management.remote.JMXServiceURL; + +import org.eclipse.jetty.toolchain.test.IO; + +/** + * JmxServiceConnection + * + * Provides ability to create a connection to either an external + * JMX server, or a loopback connection to the internal one. + */ +public class JmxServiceConnection +{ + private String serviceUrl; + private MBeanServer server; + private JMXConnectorServer connectorServer; + private JMXConnector serverConnector; + private MBeanServerConnection serviceConnection; + + /** + * Construct a loopback connection to an internal server + */ + public JmxServiceConnection() + { + this(null); + } + + /** + * Construct a connection to specified server + * + * @param url + * URL of JMX server + */ + public JmxServiceConnection(String url) + { + serviceUrl = url; + } + + /** + * Retrieve an external URL for the JMX server + * + * @return service URL + */ + public String getServiceUrl() + { + return serviceUrl; + } + + /* ------------------------------------------------------------ */ + /** + * Retrieve a connection to MBean server + * + * @return connection to MBean server + */ + public MBeanServerConnection getConnection() + { + return serviceConnection; + } + + public void connect() throws IOException + { + if (serviceConnection == null) + { + if (serviceUrl == null) + { + openLoopbackConnection(); + } + else + { + openServerConnection(serviceUrl); + } + } + } + + /** + * Open a loopback connection to local JMX server + * + * @throws IOException + */ + private void openLoopbackConnection() throws IOException + { + server = ManagementFactory.getPlatformMBeanServer(); + + JMXServiceURL serviceUrl = new JMXServiceURL("service:jmx:rmi://"); + connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(serviceUrl,null,server); + connectorServer.start(); + + this.serviceUrl = connectorServer.getAddress().toString(); + + serverConnector = JMXConnectorFactory.connect(connectorServer.getAddress()); + serviceConnection = serverConnector.getMBeanServerConnection(); + } + + /** + * Open a connection to remote JMX server + * + * @param url + * @throws IOException + */ + private void openServerConnection(String url) throws IOException + { + serviceUrl = url; + serverConnector = JMXConnectorFactory.connect(new JMXServiceURL(serviceUrl)); + serviceConnection = serverConnector.getMBeanServerConnection(); + } + + /** + * Close the connections + */ + public void disconnect() + { + IO.close(serverConnector); + + if (connectorServer != null) + { + try + { + connectorServer.stop(); + } + catch (Exception ignore) + { + /* ignore */ + } + } + } +} |