From 28502e7c191efdf13bc03fc96147e86b39d57c3f Mon Sep 17 00:00:00 2001 From: Shanliang Jiang Date: Wed, 24 Jul 2013 15:47:10 +0200 Subject: [PATCH] 8016221: A unit test should not use a fix port to run a jmx connector Reviewed-by: jbachorik, dfuchs --- .../DcmdMBeanDoubleInvocationTest.java | 71 +++++++++---------- .../DcmdMBeanInvocationTest.java | 61 ++++++++-------- .../DiagnosticCommandMBean/DcmdMBeanTest.java | 56 +++++++-------- 3 files changed, 88 insertions(+), 100 deletions(-) diff --git a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java index 91f30b0376c..c2f1e23883c 100644 --- a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java +++ b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java @@ -25,25 +25,15 @@ * @test * @bug 7150256 * @summary Basic Test for the DiagnosticCommandMBean - * @author Frederic Parain + * @author Frederic Parain, Shanliang JIANG * - * @run main/othervm -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8125 DcmdMBeanDoubleInvocationTest + * @run main/othervm DcmdMBeanDoubleInvocationTest */ -import java.io.IOException; import java.lang.management.ManagementFactory; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.management.Descriptor; -import javax.management.InstanceNotFoundException; -import javax.management.IntrospectionException; -import javax.management.MBeanInfo; -import javax.management.MBeanOperationInfo; import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; -import javax.management.ReflectionException; import javax.management.*; import javax.management.remote.*; @@ -52,39 +42,42 @@ public class DcmdMBeanDoubleInvocationTest { private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = "com.sun.management:type=DiagnosticCommand"; - public static void main(String[] args) { - MBeanServerConnection mbs = null; + public static void main(String[] args) throws Exception { + System.out.println("--->JRCMD MBean Test: invocation on \"help VM.version\" ..."); + + ObjectName name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); + String[] helpArgs = {"-all", "\n", "VM.version"}; + Object[] dcmdArgs = {helpArgs}; + String[] signature = {String[].class.getName()}; + + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + JMXServiceURL url = new JMXServiceURL("rmi", null, 0); + JMXConnectorServer cs = null; + JMXConnector cc = null; try { - JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8125/jmxrmi"); - JMXConnector connector = JMXConnectorFactory.connect(url); - mbs = connector.getMBeanServerConnection(); - } catch(Throwable t) { - t.printStackTrace(); - } - ObjectName name; - try { - name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); - MBeanInfo info = mbs.getMBeanInfo(name); - String[] helpArgs = {"-all", "\n", "VM.version"}; - Object[] dcmdArgs = {helpArgs}; - String[] signature = {String[].class.getName()}; - String result = (String) mbs.invoke(name, "help", dcmdArgs, signature); + cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs); + cs.start(); + JMXServiceURL addr = cs.getAddress(); + cc = JMXConnectorFactory.connect(addr); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + + String result = (String) mbsc.invoke(name, "help", dcmdArgs, signature); System.out.println(result); - } catch (RuntimeMBeanException ex) { + + throw new Error("Test failed: Double commands have not been detected"); + } catch (RuntimeMBeanException ex) { if (ex.getCause() instanceof IllegalArgumentException) { - System.out.println("Test passed"); - return; + System.out.println("JTest passed: Double commands have been detected"); } else { ex.printStackTrace(); - throw new RuntimeException("TEST FAILED"); + throw new Error("TEST FAILED: got unknown exception "+ex); + } + } finally { + try { + cc.close(); + cs.stop(); + } catch (Exception e) { } - } catch (InstanceNotFoundException | IntrospectionException - | ReflectionException | MalformedObjectNameException - | MBeanException|IOException ex) { - ex.printStackTrace(); - throw new RuntimeException("TEST FAILED"); } - System.out.println("Double commands have not been detected"); - throw new RuntimeException("TEST FAILED"); } } diff --git a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java index 02132c37e5d..343ae017948 100644 --- a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java +++ b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java @@ -25,25 +25,15 @@ * @test * @bug 7150256 * @summary Basic Test for the DiagnosticCommandMBean - * @author Frederic Parain + * @author Frederic Parain, Shanliang JIANG * - * @run main/othervm -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8129 DcmdMBeanInvocationTest + * @run main/othervm DcmdMBeanInvocationTest */ -import java.io.IOException; import java.lang.management.ManagementFactory; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.management.Descriptor; -import javax.management.InstanceNotFoundException; -import javax.management.IntrospectionException; -import javax.management.MBeanInfo; -import javax.management.MBeanOperationInfo; import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; -import javax.management.ReflectionException; import javax.management.*; import javax.management.remote.*; @@ -52,30 +42,35 @@ public class DcmdMBeanInvocationTest { private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = "com.sun.management:type=DiagnosticCommand"; - public static void main(String[] args) { - MBeanServerConnection mbs = null; + public static void main(String[] args) throws Exception { + System.out.println("--->JRCMD MBean Test: invocation on \"help -all\" ..."); + + ObjectName name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); + String[] helpArgs = {"-all"}; + Object[] dcmdArgs = {helpArgs}; + String[] signature = {String[].class.getName()}; + + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + JMXServiceURL url = new JMXServiceURL("rmi", null, 0); + JMXConnectorServer cs = null; + JMXConnector cc = null; try { - JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8129/jmxrmi"); - JMXConnector connector = JMXConnectorFactory.connect(url); - mbs = connector.getMBeanServerConnection(); - } catch(Throwable t) { - t.printStackTrace(); - } - ObjectName name; - try { - name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); - MBeanInfo info = mbs.getMBeanInfo(name); - String[] helpArgs = {"-all"}; - Object[] dcmdArgs = {helpArgs}; - String[] signature = {String[].class.getName()}; - String result = (String) mbs.invoke(name, "help", dcmdArgs, signature); + cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs); + cs.start(); + JMXServiceURL addr = cs.getAddress(); + cc = JMXConnectorFactory.connect(addr); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + + String result = (String) mbsc.invoke(name, "help", dcmdArgs, signature); System.out.println(result); - } catch (InstanceNotFoundException | IntrospectionException - | ReflectionException | MalformedObjectNameException - | MBeanException|IOException ex) { - ex.printStackTrace(); - throw new RuntimeException("TEST FAILED"); + } finally { + try { + cc.close(); + cs.stop(); + } catch (Exception e) { + } } + System.out.println("Test passed"); } } diff --git a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java index 10ce4240402..9072b2c1359 100644 --- a/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java +++ b/jdk/test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java @@ -25,25 +25,18 @@ * @test * @bug 7150256 * @summary Basic Test for the DiagnosticCommandMBean - * @author Frederic Parain + * @author Frederic Parain, Shanliang JIANG * - * @run main/othervm -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8127 DcmdMBeanTest + * @run main/othervm DcmdMBeanTest */ -import java.io.IOException; import java.lang.management.ManagementFactory; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.management.Descriptor; -import javax.management.InstanceNotFoundException; -import javax.management.IntrospectionException; import javax.management.MBeanInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.ObjectName; -import javax.management.ReflectionException; import javax.management.*; import javax.management.remote.*; @@ -52,34 +45,42 @@ public class DcmdMBeanTest { private static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME = "com.sun.management:type=DiagnosticCommand"; - public static void main(String[] args) { - MBeanServerConnection mbs = null; + public static void main(String[] args) throws Exception { + System.out.println("--->JRCMD MBean Test: invocation on \"operation info\"..."); + + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + JMXServiceURL url = new JMXServiceURL("rmi", null, 0); + JMXConnectorServer cs = null; + JMXConnector cc = null; try { - JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8127/jmxrmi"); - JMXConnector connector = JMXConnectorFactory.connect(url); - mbs = connector.getMBeanServerConnection(); - } catch(Throwable t) { - t.printStackTrace(); - } - ObjectName name; - try { - name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); - MBeanInfo info = mbs.getMBeanInfo(name); + cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs); + cs.start(); + JMXServiceURL addr = cs.getAddress(); + cc = JMXConnectorFactory.connect(addr); + MBeanServerConnection mbsc = cc.getMBeanServerConnection(); + ObjectName name = new ObjectName(HOTSPOT_DIAGNOSTIC_MXBEAN_NAME); + MBeanInfo info = mbsc.getMBeanInfo(name); + // the test should check that the MBean doesn't have any // Attribute, notification or constructor. Current version only // check operations - System.out.println("Class Name:"+info.getClassName()); - System.out.println("Description:"+info.getDescription()); + System.out.println("Class Name:" + info.getClassName()); + System.out.println("Description:" + info.getDescription()); MBeanOperationInfo[] opInfo = info.getOperations(); System.out.println("Operations:"); - for(int i=0; i