blob: 1e02e92253cf1832b4a7c369de7656fddcd4dd1b [file] [log] [blame]
/*
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test ProviderTest.java
* @summary Tests jar services provider are called
*
* @run clean ProviderTest provider.JMXConnectorProviderImpl provider.JMXConnectorServerProviderImpl
* @run build ProviderTest provider.JMXConnectorProviderImpl provider.JMXConnectorServerProviderImpl
* @run main ProviderTest
*/
import java.net.MalformedURLException;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.JMXProviderException;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerFactory;
import javax.management.MBeanServer;
/*
* Tests jar services provider are called
*/
import provider.JMXConnectorProviderImpl;
import provider.JMXConnectorServerProviderImpl;
public class ProviderTest {
public static void main(String[] args) throws Exception {
System.out.println("Starting ProviderTest");
MBeanServer mbs = MBeanServerFactory.newMBeanServer();
// First do the test with a protocol handled by Service providers
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://");
dotest(url, mbs);
boolean clientCalled = provider.JMXConnectorProviderImpl.called();
boolean serverCalled = provider.JMXConnectorServerProviderImpl.called();
boolean ok = clientCalled && serverCalled;
if (!ok) {
if (!clientCalled)
System.out.println("Client provider not called");
if (!serverCalled)
System.out.println("Server provider not called");
throw new RuntimeException("Test failed - see log for details");
}
// The Service Provider doesn't handle IIOP. Default providers MUST
// be called, which may or may not support IIOP.
url = new JMXServiceURL("service:jmx:iiop://");
try {
dotest(url, mbs);
} catch (MalformedURLException e) {
try {
Class.forName("javax.management.remote.rmi._RMIConnectionImpl_Tie");
e.printStackTrace(System.out);
throw new RuntimeException("MalformedURLException throw but IIOP appears to be supported");
} catch (ClassNotFoundException expected) { }
System.out.println("MalformedURLException thrown, IIOP transport not supported");
}
// Unsupported protocol.
JMXConnectorServer server = null;
JMXConnector client = null;
url =
new JMXServiceURL("service:jmx:unknown-protocol://");
try {
server =
JMXConnectorServerFactory.newJMXConnectorServer(url,
null,
mbs);
throw new RuntimeException("Exception not thrown.");
} catch (MalformedURLException e) {
System.out.println("Expected MalformedURLException thrown.");
}
try {
client =
JMXConnectorFactory.newJMXConnector(url,
null);
throw new RuntimeException("Exception not thrown.");
} catch (MalformedURLException e) {
System.out.println("Expected MalformedURLException thrown.");
}
//JMXConnectorProviderException
url =
new JMXServiceURL("service:jmx:throw-provider-exception://");
try {
server =
JMXConnectorServerFactory.newJMXConnectorServer(url,
null,
mbs);
throw new RuntimeException("Exception not thrown.");
} catch(JMXProviderException e) {
System.out.println("Expected JMXProviderException thrown.");
}
try {
client =
JMXConnectorFactory.newJMXConnector(url,
null);
throw new RuntimeException("Exception not thrown.");
}catch(JMXProviderException e) {
System.out.println("Expected JMXProviderException thrown.");
}
System.out.println("Test OK");
}
private static void dotest(JMXServiceURL url, MBeanServer mbs)
throws Exception {
JMXConnectorServer server = null;
JMXConnector client = null;
server = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
server.start();
JMXServiceURL outputAddr = server.getAddress();
System.out.println("Server started ["+ outputAddr+ "]");
client = JMXConnectorFactory.newJMXConnector(outputAddr, null);
client.connect();
System.out.println("Client connected");
MBeanServerConnection connection
= client.getMBeanServerConnection();
System.out.println(connection.getDefaultDomain());
}
}