test/jdk/javax/management/mxbean/Utils.java
author lfoltan
Tue, 20 Feb 2018 07:46:40 -0500
changeset 49026 844bf1deff1a
parent 47216 71c04702a3d5
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
import java.util.Map;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    25
import java.util.HashMap;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    26
import java.util.Properties;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    27
import java.lang.reflect.Method;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    28
import javax.management.remote.JMXConnectorServerMBean;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    29
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    30
// utility class for MXBean* tests coming from JMX Tonga test suite
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    31
class Utils {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    32
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    33
    // DEBUG is printed depending on the DEBUG and DEBUG_LEVEL JAVA property
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    34
    private static final String DEBUG_HEADER = "[debug] ";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    35
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    36
    // DEBUG levels
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    37
    private static int selectedDebugLevel = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    38
    static final int DEBUG_STANDARD = 1;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    39
    static final int DEBUG_VERBOSE = 2;  // Mainly used for stress tests
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    40
    static final int DEBUG_ALL = DEBUG_STANDARD | DEBUG_VERBOSE;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    41
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    42
    static void parseDebugProperties() {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    43
        int level = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    44
        Properties p = System.getProperties();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    45
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    46
        // get selected levels
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    47
        if (p.getProperty("DEBUG_STANDARD") != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    48
            level |= DEBUG_STANDARD;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    49
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    50
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    51
        if (p.getProperty("DEBUG_VERBOSE") != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    52
            level |= DEBUG_VERBOSE;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    53
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    54
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    55
        if (p.getProperty("DEBUG_ALL") != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    56
            level |= DEBUG_ALL;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    57
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    58
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    59
        selectedDebugLevel = level;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    60
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    61
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    62
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    63
     * Reproduces the original parsing and collection of test parameters
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    64
     * from the DTonga JMX test suite.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    65
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    66
     * Collects passed args and returns them in a map(argname, value) structure,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    67
     * which will be then propagated as necessary to various called methods.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    68
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    69
    static Map<String, Object> parseParameters(String args[])
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    70
    throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    71
        Utils.debug(DEBUG_STANDARD, "TestRoot::parseParameters: Start");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    72
        HashMap<String, Object> map = new HashMap<>();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    73
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    74
        for ( int i = 0; i < args.length; i++ ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    75
            if ( args[i].trim().startsWith("-") ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    76
                if ((i+1) < args.length && !args[i+1].startsWith("-") ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    77
                    Utils.debug(DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    78
                        "TestRoot::parseParameters: added in map = " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    79
                        args[i] +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    80
                        " with value " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    81
                        args[i+1]) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    82
                    map.put(args[i].trim(), args[i+1].trim()) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    83
                } else if ((i+1) < args.length && args[i+1].startsWith("-") ||
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    84
                           (i+1) == args.length ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    85
                    Utils.debug(DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    86
                            "TestRoot::parseParameters: added in map = " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    87
                            args[i] +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    88
                            " with null value") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    89
                    map.put(args[i].trim(), null) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    90
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    91
                    System.out.println(
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    92
                        "TestRoot::parseParameters: (WARNING) not added in map = " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    93
                        args[i]) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    94
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    95
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    96
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    97
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    98
        Utils.debug(DEBUG_STANDARD, "TestRoot::parseParameters: Done") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    99
        return map ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   100
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   101
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   102
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   103
     * This method is to be used in all tests to print anything
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   104
     * that is temporary.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   105
     * Printing is done only when debug is activated by the property DEBUG.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   106
     * Printing depends also on the DEBUG_LEVEL property.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   107
     * Here it encapsulates a System.out.println.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   108
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   109
    public static void debug(int level, String line) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   110
        if ((selectedDebugLevel & level) != 0) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   111
            System.out.println(DEBUG_HEADER + line);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   112
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   113
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   114
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   115
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   116
     * Do print stack trace when withStack is true.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   117
     * Does try to call getTargetException() and getTargetError() then
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   118
     * print embedded stacks in the case of an Exception wrapping
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   119
     * another Exception or an Error. Recurse until no more wrapping
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   120
     * is found.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   121
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   122
    public static void printThrowable(Throwable theThro, boolean withStack) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   123
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   124
            if (withStack) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   125
                theThro.printStackTrace(System.out);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   126
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   127
            if (theThro instanceof Exception) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   128
                Exception t = (Exception) theThro;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   129
                Method target = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   130
                String blank = " ";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   131
                try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   132
                    target = t.getClass().getMethod("getTargetException",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   133
                            (java.lang.Class<?>[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   134
                } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   135
                // OK: getTargetException method could be there or not
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   136
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   137
                System.out.println(blank + t.getClass() + "==>" + t.getMessage());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   138
                while (target != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   139
                    try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   140
                        t = (Exception) target.invoke(t,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   141
                                (java.lang.Object[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   142
                    } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   143
                        t = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   144
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   145
                    try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   146
                        if (t != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   147
                            blank = blank + "  ";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   148
                            System.out.println(blank + t.getClass() + "==>" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   149
                                    t.getMessage());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   150
                            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   151
                                target =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   152
                                        t.getClass().getMethod("getTargetException",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   153
                                        (java.lang.Class<?>[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   154
                            } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   155
                            // OK: getTargetException method could be there or not                            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   156
                            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   157
                        } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   158
                            target = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   159
                        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   160
                    } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   161
                        target = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   162
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   163
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   164
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   165
                // We may have exceptions wrapping an Error then it is
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   166
                // getTargetError that is likely to be called
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   167
                try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   168
                    target = ((Exception) theThro).getClass().getMethod("getTargetError",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   169
                            (java.lang.Class<?>[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   170
                } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   171
                // OK: getTargetError method could be there or not
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   172
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   173
                Throwable err = theThro;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   174
                while (target != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   175
                    try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   176
                        err = (Error) target.invoke(err,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   177
                                (java.lang.Object[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   178
                    } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   179
                        err = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   180
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   181
                    try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   182
                        if (err != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   183
                            blank = blank + "  ";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   184
                            System.out.println(blank + err.getClass() + "==>" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   185
                                    err.getMessage());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   186
                            if (withStack) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   187
                                err.printStackTrace(System.out);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   188
                            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   189
                            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   190
                                target = err.getClass().getMethod("getTargetError",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   191
                                        (java.lang.Class<?>[]) null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   192
                            } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   193
                            // OK: getTargetError method could be there or not
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   194
                            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   195
                        } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   196
                            target = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   197
                        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   198
                    } catch (Exception ee) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   199
                        target = null;
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
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   203
                System.out.println("Throwable is : " + theThro);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   204
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   205
        } catch (Throwable x) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   206
            System.out.println("Exception : raised in printException : " + x);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   207
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   208
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   209
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   210
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   211
     * Wait up to maxTimeInSeconds second(s) the given JMX connector server
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   212
     * comes up (which means isActive returns true).
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   213
     * If it fails to do so we throw a RunTime exception.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   214
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   215
    public static void waitReady(JMXConnectorServerMBean server,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   216
                                 int maxTimeInSeconds) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   217
        int elapsed = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   218
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   219
        while (!server.isActive() && elapsed < maxTimeInSeconds) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   220
            Thread.sleep(1000);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   221
            elapsed++;
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
        if (server.isActive()) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   225
            String message = "Utils::waitReady: JMX connector server came up";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   226
            if ( elapsed == 0) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   227
                message += " immediately";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   228
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   229
                message += " after " + elapsed + " seconds";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   230
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   231
            message += " [" + server.getAddress() + "]";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   232
            Utils.debug(DEBUG_STANDARD, message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   233
        } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   234
            String message = "Utils::waitReady: (ERROR) JMX connector" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   235
                    " server didn't come up after " + elapsed + " seconds [" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   236
                    server.getAddress() + "]";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   237
            System.out.println(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   238
            throw new RuntimeException(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   239
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   240
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   241
}