test/jdk/javax/management/mxbean/MXBeanExceptionHandlingTest.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
/*
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 correct exception and error events from NotificationListener
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    28
 * @author Olivier Lagneau
43503
bc7f8619ab70 8173607: JMX RMI connector should be in its own module
dfuchs
parents: 34827
diff changeset
    29
 * @modules java.management.rmi
34827
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    30
 * @library /lib/testlibrary
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    31
 * @compile Basic.java
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    32
 * @run main/othervm/timeout=300 -DDEBUG_STANDARD MXBeanExceptionHandlingTest -timeForNotificationInSeconds 3
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    33
 */
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.HashMap;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    38
import java.util.concurrent.ArrayBlockingQueue;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    39
import java.util.concurrent.BlockingQueue;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    40
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    41
import java.lang.management.ManagementFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    42
import javax.management.MBeanServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    43
import javax.management.MBeanException;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    44
import javax.management.MBeanServerDelegate;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    45
import javax.management.Notification;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    46
import javax.management.NotificationListener;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    47
import javax.management.MBeanServerConnection;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    48
import javax.management.ObjectName;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    49
import javax.management.RuntimeErrorException;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    50
import javax.management.remote.JMXConnector;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    51
import javax.management.remote.JMXConnectorFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    52
import javax.management.remote.JMXConnectorServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    53
import javax.management.remote.JMXConnectorServerFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    54
import javax.management.remote.JMXServiceURL;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    55
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    56
public class MXBeanExceptionHandlingTest implements NotificationListener {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    57
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    58
    private static String BASIC_MXBEAN_CLASS_NAME = "Basic";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    59
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    60
    private long timeForNotificationInSeconds = 3L;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    61
    private int numOfNotifications = 2;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    62
    private BlockingQueue<Notification> notifList = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    63
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    64
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    65
    /*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    66
     * First Debug properties and arguments are collect in expected
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    67
     * map  (argName, value) format, then calls original test's run method.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    68
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    69
    public static void main(String args[]) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    70
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    71
        System.out.println("=================================================");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    72
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    73
        // Parses parameters
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    74
        Utils.parseDebugProperties();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    75
        Map<String, Object> map = Utils.parseParameters(args) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    76
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    77
        // Run test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    78
        MXBeanExceptionHandlingTest test = new MXBeanExceptionHandlingTest();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    79
        test.run(map);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    80
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    81
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    82
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    83
    protected void parseArgs(Map<String, Object> args) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    84
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    85
        String arg = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    86
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    87
        // Init timeForNotificationInSeconds
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    88
        // It is the maximum time in seconds we wait for a notification.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    89
        arg = (String)args.get("-timeForNotificationInSeconds") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    90
        if (arg != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    91
            timeForNotificationInSeconds = (new Long(arg)).longValue();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    92
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    93
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
    public void run(Map<String, Object> args) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    97
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    98
        System.out.println("MXBeanExceptionHandlingTest::run: Start") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    99
        int errorCount = 0 ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   100
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   101
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   102
            parseArgs(args);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   103
            notifList = new ArrayBlockingQueue<Notification>(numOfNotifications);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   104
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   105
            // JMX MbeanServer used inside single VM as if remote.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   106
            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   107
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   108
            JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   109
            JMXConnectorServer cs =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   110
                JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   111
            cs.start();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   112
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   113
            JMXServiceURL addr = cs.getAddress();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   114
            JMXConnector cc = JMXConnectorFactory.connect(addr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   115
            MBeanServerConnection mbsc = cc.getMBeanServerConnection();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   116
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   117
            // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   118
            System.out.println("Add me as notification listener");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   119
            mbsc.addNotificationListener(MBeanServerDelegate.DELEGATE_NAME,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   120
                    this, null, null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   121
            System.out.println("---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   122
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   123
            // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   124
            System.out.println("Create and register the MBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   125
            ObjectName objName = new ObjectName("sqe:type=Basic,protocol=rmi") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   126
            mbsc.createMBean(BASIC_MXBEAN_CLASS_NAME, objName);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   127
            System.out.println("---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   128
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   129
            // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   130
            System.out.println("Call method throwException on our MXBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   131
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   132
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   133
                mbsc.invoke(objName, "throwException", null, null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   134
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   135
                System.out.println("(ERROR) Did not get awaited MBeanException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   136
            } catch (MBeanException mbe) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   137
                System.out.println("(OK) Got awaited MBeanException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   138
                Throwable cause = mbe.getCause();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   139
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   140
                if ( cause instanceof java.lang.Exception ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   141
                    System.out.println("(OK) Cause is of the right class") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   142
                    String mess = cause.getMessage();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   143
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   144
                    if ( mess.equals(Basic.EXCEPTION_MESSAGE ) ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   145
                        System.out.println("(OK) Cause message is fine") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   146
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   147
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   148
                        System.out.println("(ERROR) Cause has message "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   149
                                + cause.getMessage()
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   150
                                + " as we expect "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   151
                                + Basic.EXCEPTION_MESSAGE) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   152
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   153
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   154
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   155
                    System.out.println("(ERROR) Cause is of  class "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   156
                            + cause.getClass().getName()
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   157
                            + " as we expect java.lang.Exception") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   158
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   159
            } catch (Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   160
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   161
                System.out.println("(ERROR) Did not get awaited MBeanException but "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   162
                        + e) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   163
                Utils.printThrowable(e, true);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   164
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   165
            System.out.println("---- DONE\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   166
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   167
            // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   168
            System.out.println("Call method throwError on our MXBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   169
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   170
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   171
                mbsc.invoke(objName, "throwError", null, null);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   172
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   173
                System.out.println("(ERROR) Did not get awaited RuntimeErrorException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   174
            } catch (RuntimeErrorException ree) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   175
                System.out.println("(OK) Got awaited RuntimeErrorException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   176
                Throwable cause = ree.getCause();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   177
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   178
                if ( cause instanceof java.lang.InternalError ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   179
                    System.out.println("(OK) Cause is of the right class") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   180
                    String mess = cause.getMessage();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   181
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   182
                    if ( mess.equals(Basic.EXCEPTION_MESSAGE ) ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   183
                        System.out.println("(OK) Cause message is fine") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   184
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   185
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   186
                        System.out.println("(ERROR) Cause has message "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   187
                                + cause.getMessage()
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   188
                                + " as we expect "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   189
                                + Basic.EXCEPTION_MESSAGE) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   190
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   191
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   192
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   193
                    System.out.println("(ERROR) Cause is of  class "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   194
                            + cause.getClass().getName()
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   195
                            + " as we expect java.lang.InternalError") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   196
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   197
            } catch (Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   198
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   199
                System.out.println("(ERROR) Did not get awaited RuntimeErrorException but "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   200
                        + e) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   201
                Utils.printThrowable(e, true);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   202
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   203
            System.out.println("---- DONE\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   204
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   205
            // ----
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   206
            System.out.println("Unregister the MBean");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   207
            mbsc.unregisterMBean(objName);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   208
            System.out.println("---- OK\n") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   209
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   210
            Thread.sleep(timeForNotificationInSeconds * 1000);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   211
            int numOfReceivedNotif = notifList.size();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   212
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   213
            if ( numOfReceivedNotif == numOfNotifications ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   214
                System.out.println("(OK) We received "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   215
                        + numOfNotifications
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   216
                        + " Notifications") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   217
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   218
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   219
                System.out.println("(ERROR) We received "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   220
                        + numOfReceivedNotif
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   221
                        + " Notifications in place of "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   222
                        + numOfNotifications) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   223
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   224
        } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   225
            Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   226
            throw new RuntimeException(e);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   227
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   228
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   229
        if ( errorCount == 0 ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   230
            System.out.println("MXBeanExceptionHandlingTest::run: Done without any error") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   231
        } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   232
            System.out.println("MXBeanExceptionHandlingTest::run: Done with "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   233
                    + errorCount
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   234
                    + " error(s)") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   235
            throw new RuntimeException("errorCount = " + errorCount);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   236
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   237
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   238
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   239
    public void handleNotification(Notification notification, Object handback) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   240
        System.out.println("MXBeanExceptionHandlingTest::handleNotification: Received "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   241
                + notification);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   242
        notifList.add(notification);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   243
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   244
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   245
}