test/jdk/javax/management/mxbean/MXBeanWeirdParamTest.java
author lfoltan
Tue, 20 Feb 2018 07:46:40 -0500
changeset 49026 844bf1deff1a
parent 47216 71c04702a3d5
child 51675 b487c1e914d0
permissions -rw-r--r--
8196884: VS2017 Multiple Type Cast Conversion Compilation Errors Summary: Change the type of symbolic constant badAddressVal and introduce specific casts to fix multiple type cast conversion compilation errors. Reviewed-by: coleenp, kbarrett
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34827
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     1
/*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     2
 * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     4
 *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     7
 * published by the Free Software Foundation.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     8
 *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    13
 * accompanied this code).
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    14
 *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    18
 *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    21
 * questions.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    22
 */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    23
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    24
/*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    25
 * @test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    26
 * @bug 8058865
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    27
 * @summary Checks that a serialized instance is not transmitted from an MXBean.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    28
 * All the communication should be done via Open Types
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    29
 * @author Olivier Lagneau
43503
bc7f8619ab70 8173607: JMX RMI connector should be in its own module
dfuchs
parents: 34827
diff changeset
    30
 * @modules java.management.rmi
34827
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    31
 * @library /lib/testlibrary
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    32
 * @compile Basic.java
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    33
 * @run main/othervm/timeout=300 -DDEBUG_STANDARD MXBeanWeirdParamTest
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    34
 */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    35
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    36
import java.util.Map;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    37
import java.util.List;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    38
import java.util.ArrayList;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    39
import java.util.Arrays;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    40
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    41
import java.lang.Process;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    42
import java.lang.management.ManagementFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    43
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    44
import javax.management.MBeanServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    45
import javax.management.MBeanServerConnection;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    46
import javax.management.remote.JMXConnector;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    47
import javax.management.remote.JMXConnectorFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    48
import javax.management.remote.JMXConnectorServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    49
import javax.management.remote.JMXConnectorServerFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    50
import javax.management.remote.JMXServiceURL;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    51
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    52
import javax.management.ObjectName;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    53
import javax.management.openmbean.CompositeType;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    54
import javax.management.openmbean.CompositeData;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    55
import javax.management.openmbean.CompositeDataSupport;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    56
import javax.management.openmbean.OpenType;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    57
import javax.management.openmbean.SimpleType;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    58
import javax.management.openmbean.TabularDataSupport;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    59
import javax.management.openmbean.TabularType;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    60
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    61
import jdk.testlibrary.ProcessTools;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    62
import jdk.testlibrary.JDKToolFinder;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    63
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    64
public class MXBeanWeirdParamTest {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    65
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    66
    private static String BASIC_MXBEAN_CLASS_NAME = "Basic";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    67
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    68
    private static final String CLIENT_CLASS_MAIN =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    69
        "MXBeanWeirdParamTest$ClientSide";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    70
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    71
    private JMXConnectorServer cs;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    72
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    73
    /*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    74
     * First Debug properties and arguments are collect in expected
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    75
     * map  (argName, value) format, then calls original test's run method.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    76
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    77
    public static void main(String args[]) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    78
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    79
        System.out.println("=================================================");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    80
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    81
        // Parses parameters
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    82
        Utils.parseDebugProperties();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    83
        Map<String, Object> map = Utils.parseParameters(args) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    84
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    85
        // Run test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    86
        MXBeanWeirdParamTest test = new MXBeanWeirdParamTest();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    87
        test.run(map);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    88
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    89
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    90
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    91
    /*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    92
     * Create the MBeansServe side of the test and returns its address
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    93
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    94
    private JMXServiceURL createServerSide() throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    95
        final int NINETY_SECONDS = 90;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    96
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    97
        // We will use the platform mbean server
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    98
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    99
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   100
        JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   101
        cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   102
        cs.start();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   103
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   104
        Utils.waitReady(cs, NINETY_SECONDS);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   105
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   106
        JMXServiceURL addr = cs.getAddress();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   107
        return addr;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   108
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   109
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   110
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   111
    /*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   112
     * Creating command-line for running subprocess JVM:
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   113
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   114
     * JVM command line is like:
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   115
     * {test_jdk}/bin/java {defaultopts} -cp {test.class.path} {testopts} main
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   116
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   117
     * {defaultopts} are the default java options set by the framework.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   118
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   119
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   120
    private List<String> buildCommandLine() {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   121
        List<String> opts = new ArrayList<>();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   122
        opts.add(JDKToolFinder.getJDKTool("java"));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   123
        opts.addAll(Arrays.asList(jdk.testlibrary.Utils.getTestJavaOpts()));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   124
        // We need to set WEIRD_PARAM propertty on the client-side
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   125
        opts.add("-DWEIRD_PARAM");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   126
        opts.add("-cp");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   127
        opts.add(System.getProperty("test.class.path", "test.class.path"));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   128
        opts.add(CLIENT_CLASS_MAIN);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   129
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   130
        return opts;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   131
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   132
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   133
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   134
     * Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   135
     * subprocess standard I/O to the current (parent) process. This provides a
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   136
     * trace of what happens in the subprocess while it is runnning (and before
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   137
     * it terminates).
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   138
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   139
     * @param serviceUrlStr string representing the JMX service Url to connect to.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   140
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   141
    private int runClientSide(String serviceUrlStr) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   142
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   143
        // Building command-line
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   144
        List<String> opts = buildCommandLine();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   145
        opts.add(serviceUrlStr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   146
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   147
        // Launch separate JVM subprocess
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   148
        int exitCode = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   149
        String[] optsArray = opts.toArray(new String[0]);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   150
        ProcessBuilder pb = new ProcessBuilder(optsArray);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   151
        Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   152
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   153
        // Handling end of subprocess
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   154
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   155
            exitCode = p.waitFor();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   156
            if (exitCode != 0) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   157
                System.out.println(
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   158
                    "Subprocess unexpected exit value of [" + exitCode +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   159
                    "]. Expected 0.\n");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   160
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   161
        } catch (InterruptedException e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   162
            System.out.println("Parent process interrupted with exception : \n " + e + " :" );
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   163
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   164
            // Parent thread unknown state, killing subprocess.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   165
            p.destroyForcibly();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   166
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   167
            throw new RuntimeException(
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   168
                "Parent process interrupted with exception : \n " + e + " :" );
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   169
        } finally {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   170
            return exitCode;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   171
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   172
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   173
     }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   174
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   175
    public void run(Map<String, Object> args) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   176
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   177
        System.out.println("MXBeanWeirdParamTest::run: Start") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   178
        int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   179
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   180
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   181
            // Initialise the server side
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   182
            JMXServiceURL urlToUse = createServerSide();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   183
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   184
            // Run client side
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   185
            errorCount = runClientSide(urlToUse.toString());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   186
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   187
            if ( errorCount == 0 ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   188
                System.out.println("MXBeanWeirdParamTest::run: Done without any error") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   189
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   190
                System.out.println("MXBeanWeirdParamTest::run: Done with "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   191
                        + errorCount
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   192
                        + " error(s)") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   193
                throw new RuntimeException("errorCount = " + errorCount);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   194
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   195
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   196
            cs.stop();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   197
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   198
        } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   199
            throw new RuntimeException(e);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   200
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   201
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   202
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   203
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   204
    private static class ClientSide {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   205
        public static void main(String args[]) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   206
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   207
            int errorCount = 0 ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   208
            String msgTag = "ClientSide::main: ";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   209
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   210
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   211
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   212
                // Get a connection to remote mbean server
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   213
                JMXServiceURL addr = new JMXServiceURL(args[0]);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   214
                JMXConnector cc = JMXConnectorFactory.connect(addr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   215
                MBeanServerConnection mbsc = cc.getMBeanServerConnection();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   216
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   217
                // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   218
                System.out.println(msgTag + "Create and register the MBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   219
                ObjectName objName = new ObjectName("sqe:type=Basic,protocol=rmi") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   220
                mbsc.createMBean(BASIC_MXBEAN_CLASS_NAME, objName);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   221
                System.out.println(msgTag +"---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   222
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   223
                // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   224
                System.out.println(msgTag +"Get attribute SqeParameterAtt on our MXBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   225
                Object result = mbsc.getAttribute(objName, "SqeParameterAtt");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   226
                System.out.println(msgTag +"(OK) Got result of class "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   227
                        + result.getClass().getName());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   228
                System.out.println(msgTag +"Received CompositeData is " + result);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   229
                System.out.println(msgTag +"---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   230
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   231
                // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   232
                // We use the value returned by getAttribute to perform the invoke.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   233
                System.out.println(msgTag +"Call operation doWeird on our MXBean [1]");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   234
                mbsc.invoke(objName, "doWeird",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   235
                        new Object[]{result},
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   236
                        new String[]{"javax.management.openmbean.CompositeData"});
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   237
                System.out.println(msgTag +"---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   238
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   239
                // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   240
                // We build the CompositeData ourselves that time.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   241
                System.out.println(msgTag +"Call operation doWeird on our MXBean [2]");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   242
                String typeName = "SqeParameter";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   243
                String[] itemNames = new String[] {"glop"};
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   244
                OpenType<?>[] openTypes = new OpenType<?>[] {SimpleType.STRING};
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   245
                CompositeType rowType = new CompositeType(typeName, typeName,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   246
                        itemNames, itemNames, openTypes);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   247
                Object[] itemValues = {"HECTOR"};
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   248
                CompositeData data =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   249
                        new CompositeDataSupport(rowType, itemNames, itemValues);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   250
                TabularType tabType = new TabularType(typeName, typeName,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   251
                        rowType, new String[]{"glop"});
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   252
                TabularDataSupport tds = new TabularDataSupport(tabType);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   253
                tds.put(data);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   254
                System.out.println(msgTag +"Source CompositeData is " + data);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   255
                mbsc.invoke(objName, "doWeird",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   256
                        new Object[]{data},
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   257
                        new String[]{"javax.management.openmbean.CompositeData"});
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   258
                System.out.println(msgTag +"---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   259
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   260
                // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   261
                System.out.println(msgTag +"Unregister the MBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   262
                mbsc.unregisterMBean(objName);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   263
                System.out.println(msgTag +"---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   264
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   265
                // Terminate the JMX Client
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   266
                cc.close();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   267
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   268
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   269
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   270
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   271
                throw new RuntimeException(e);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   272
            } finally {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   273
                System.exit(errorCount);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   274
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   275
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   276
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   277
}