jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java
author alanb
Thu, 04 May 2017 07:26:55 +0000
changeset 45004 ea3137042a61
parent 44425 ae33f100001d
permissions -rw-r--r--
8178380: Module system implementation refresh (5/2017) Reviewed-by: mchung, alanb, sspitsyn Contributed-by: alan.bateman@oracle.com, mandy.chung@oracle.com, chris.hegarty@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     1
/*
30376
2ccf2cf7ea48 8078896: Add @modules as needed to the jdk_svc tests
ykantser
parents: 26195
diff changeset
     2
 * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     4
 *
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     7
 * published by the Free Software Foundation.
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     8
 *
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    13
 * accompanied this code).
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    14
 *
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    18
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 52
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 52
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 52
diff changeset
    21
 * questions.
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    22
 */
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    23
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    24
/*
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    25
 * @test
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    26
 * @bug 4981215
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    27
 * @summary Tests that the jvmstat counters published by the out-of-the-box
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    28
 *          management agent for the JMX connection details are correct.
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    29
 * @author Luis-Miguel Alventosa
44425
ae33f100001d 8177374: fix module dependency declaration in jdk_svc tests
iignatyev
parents: 43494
diff changeset
    30
 *
ae33f100001d 8177374: fix module dependency declaration in jdk_svc tests
iignatyev
parents: 43494
diff changeset
    31
 * @modules java.management
ae33f100001d 8177374: fix module dependency declaration in jdk_svc tests
iignatyev
parents: 43494
diff changeset
    32
 *          jdk.attach
ae33f100001d 8177374: fix module dependency declaration in jdk_svc tests
iignatyev
parents: 43494
diff changeset
    33
 *          jdk.management.agent/jdk.internal.agent
ae33f100001d 8177374: fix module dependency declaration in jdk_svc tests
iignatyev
parents: 43494
diff changeset
    34
 *
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    35
 * @run clean JvmstatCountersTest
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    36
 * @run build JvmstatCountersTest
26195
64b54ed39429 8040692: [TESTBUG] sun/management/jmxremote/bootstrap/JvmstatCountersTest.java requires -XX:+UsePerfData option to pass on embedded platforms
jbachorik
parents: 24870
diff changeset
    37
 * @run main/othervm/timeout=600 -XX:+UsePerfData JvmstatCountersTest 1
64b54ed39429 8040692: [TESTBUG] sun/management/jmxremote/bootstrap/JvmstatCountersTest.java requires -XX:+UsePerfData option to pass on embedded platforms
jbachorik
parents: 24870
diff changeset
    38
 * @run main/othervm/timeout=600 -XX:+UsePerfData -Dcom.sun.management.jmxremote JvmstatCountersTest 2
64b54ed39429 8040692: [TESTBUG] sun/management/jmxremote/bootstrap/JvmstatCountersTest.java requires -XX:+UsePerfData option to pass on embedded platforms
jbachorik
parents: 24870
diff changeset
    39
 * @run main/othervm/timeout=600 -XX:+UsePerfData -Dcom.sun.management.jmxremote.port=0 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false JvmstatCountersTest 3
45004
ea3137042a61 8178380: Module system implementation refresh (5/2017)
alanb
parents: 44425
diff changeset
    40
 * @run main/othervm/timeout=600 -XX:+UsePerfData -Djdk.attach.allowAttachSelf JvmstatCountersTest 4
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    41
 */
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    42
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    43
import java.io.*;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    44
import java.lang.management.*;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    45
import java.util.*;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    46
import javax.management.*;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    47
import javax.management.remote.*;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    48
import com.sun.tools.attach.*;
43494
11801b2ff456 8173608: Separate JDK management agent from java.management module
mchung
parents: 30803
diff changeset
    49
import jdk.internal.agent.ConnectorAddressLink;
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    50
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    51
public class JvmstatCountersTest {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    53
    public static void checkAddress(String address) throws IOException {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    54
        System.out.println("Address = " + address);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    55
        JMXServiceURL url = new JMXServiceURL(address);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    56
        JMXConnector jmxc = JMXConnectorFactory.connect(url);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    57
        MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    58
        System.out.println("MBean Count = " + mbsc.getMBeanCount());
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    59
    }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    60
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    61
    public static void checkKey(Map<String, String> data, int index,
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    62
            String key, String expectedValue) throws Exception {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    63
        String counter = "sun.management.JMXConnectorServer." + index + "." + key;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    64
        if (!data.containsKey(counter)) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    65
            System.out.println("Test FAILED! Missing counter " + counter);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    66
            throw new IllegalArgumentException("Test case failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    67
        }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    68
        String value = data.get(counter);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    69
        if (key.equals("remoteAddress")) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    70
            checkAddress(value);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    71
        } else if (!expectedValue.equals(value)) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    72
            System.out.println("Test FAILED! Invalid counter " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    73
                    counter + "=" + value);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    74
            throw new IllegalArgumentException("Test case failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    75
        }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    76
        System.out.println("OK: " + counter + "=" + value);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    77
    }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    78
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    79
    public static void main(String args[]) throws Exception {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    80
        String localAddress = ConnectorAddressLink.importFrom(0);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    81
        Map<String, String> remoteData = ConnectorAddressLink.importRemoteFrom(0);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    82
        final int testCase = Integer.parseInt(args[0]);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    83
        switch (testCase) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    84
            case 1:
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    85
                if (localAddress == null && remoteData.isEmpty()) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    86
                    System.out.println("Test PASSED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    87
                            "agent didn't publish any jvmstat counter.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    88
                } else {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    89
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    90
                            "agent unexpectedly published jvmstat counters.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    91
                    throw new IllegalArgumentException("Test case 1 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    92
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    93
                break;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    94
            case 2:
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    95
                if (localAddress == null) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    96
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    97
                            "agent didn't publish the local connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    98
                    throw new IllegalArgumentException("Test case 2 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
    99
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   100
                checkAddress(localAddress);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   101
                if (!remoteData.isEmpty()) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   102
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   103
                            "agent shouldn't publish the remote connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   104
                    throw new IllegalArgumentException("Test case 2 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   105
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   106
                System.out.println("Test PASSED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   107
                        "agent only publishes the local connector through " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   108
                        "a jvmstat counter.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   109
                break;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   110
            case 3:
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   111
                if (localAddress == null) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   112
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   113
                            "agent didn't publish the local connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   114
                    throw new IllegalArgumentException("Test case 3 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   115
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   116
                checkAddress(localAddress);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   117
                if (remoteData.isEmpty()) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   118
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   119
                            "agent didnn't publish the remote connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   120
                    throw new IllegalArgumentException("Test case 3 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   121
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   122
                for (String key : remoteData.keySet()) {
30803
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   123
                    if (!isKeyAcceptable(key)) {
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   124
                        System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   125
                                "agent shouldn't publish anything which isn't " +
30803
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   126
                                "related to the remote connector (" + key + ").");
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   127
                        throw new IllegalArgumentException("Test case 3 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   128
                    }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   129
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   130
                checkKey(remoteData, 0, "remoteAddress", null);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   131
                checkKey(remoteData, 0, "authenticate", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   132
                checkKey(remoteData, 0, "ssl", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   133
                checkKey(remoteData, 0, "sslRegistry", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   134
                checkKey(remoteData, 0, "sslNeedClientAuth", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   135
                System.out.println("Test PASSED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   136
                        "agent publishes both the local and remote " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   137
                        "connector info through jvmstat counters.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   138
                break;
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   139
            case 4:
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   140
                if (localAddress != null || !remoteData.isEmpty()) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   141
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   142
                            "agent unexpectedly published jvmstat counters.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   143
                    throw new IllegalArgumentException("Test case 4 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   144
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   145
                RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   146
                String name = rt.getName();
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   147
                System.out.println("name = " + name);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   148
                String vmid = name.substring(0, name.indexOf("@"));
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   149
                System.out.println("vmid = " + vmid);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   150
                VirtualMachine vm = VirtualMachine.attach(vmid);
24870
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   151
                Properties p = new Properties();
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   152
                p.put("com.sun.management.jmxremote.port", "0");
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   153
                p.put("com.sun.management.jmxremote.authenticate", "false");
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   154
                p.put("com.sun.management.jmxremote.ssl", "false");
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   155
                vm.startManagementAgent(p);
5d567113d043 8044135: Add API to start JMX agent from attach framework
sla
parents: 23010
diff changeset
   156
                vm.startLocalManagementAgent();
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   157
                vm.detach();
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   158
                String localAddress2 = ConnectorAddressLink.importFrom(0);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   159
                if (localAddress2 == null) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   160
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   161
                            "agent didn't publish the local connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   162
                    throw new IllegalArgumentException("Test case 4 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   163
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   164
                checkAddress(localAddress2);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   165
                Map<String, String> remoteData2 = ConnectorAddressLink.importRemoteFrom(0);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   166
                if (remoteData2.isEmpty()) {
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   167
                    System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   168
                            "agent didnn't publish the remote connector.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   169
                    throw new IllegalArgumentException("Test case 4 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   170
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   171
                for (String key : remoteData2.keySet()) {
30803
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   172
                    if (!isKeyAcceptable(key)) {
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   173
                        System.out.println("Test FAILED! The OOTB management " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   174
                                "agent shouldn't publish anything which isn't " +
30803
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   175
                                "related to the remote connector (" + key + ").");
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   176
                        throw new IllegalArgumentException("Test case 4 failed");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   177
                    }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   178
                }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   179
                checkKey(remoteData2, 0, "remoteAddress", null);
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   180
                checkKey(remoteData2, 0, "authenticate", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   181
                checkKey(remoteData2, 0, "ssl", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   182
                checkKey(remoteData2, 0, "sslRegistry", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   183
                checkKey(remoteData2, 0, "sslNeedClientAuth", "false");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   184
                System.out.println("Test PASSED! The OOTB management agent " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   185
                        "publishes both the local and remote connector " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   186
                        "info through jvmstat counters when the agent is " +
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   187
                        "loaded through the Attach API.");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   188
        }
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   189
        System.out.println("Bye! Bye!");
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   190
    }
30803
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   191
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   192
    private static boolean isKeyAcceptable(String key) {
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   193
        return key.startsWith("sun.management.JMXConnectorServer.0.") ||
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   194
               key.startsWith("sun.management.JMXConnectorServer.remote.enabled");
17e70318af8b 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state
jbachorik
parents: 30376
diff changeset
   195
    }
52
752ebbd838ad 4981215: Publishing a port number for management console to access
lmalvent
parents:
diff changeset
   196
}