test/jdk/javax/management/security/AuthorizationTest.java
author lfoltan
Tue, 20 Feb 2018 07:46:40 -0500
changeset 49026 844bf1deff1a
parent 47216 71c04702a3d5
child 51675 b487c1e914d0
permissions -rw-r--r--
8196884: VS2017 Multiple Type Cast Conversion Compilation Errors Summary: Change the type of symbolic constant badAddressVal and introduce specific casts to fix multiple type cast conversion compilation errors. Reviewed-by: coleenp, kbarrett
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34827
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     1
/*
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
     2
 * Copyright (c) 2003, 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 various authentication behavior from remote jmx client
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 Simple.java
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    32
 * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    33
 * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username2 -Dpassword=password2 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    34
 * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username6 -Dpassword=password6 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    35
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    36
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username3 -Dpassword=password3 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials -expectedGetException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    37
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username5 -Dpassword=password5 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    38
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username6 -Dpassword=password6 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    39
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    40
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username2 -Dpassword=password2 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    41
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username3 -Dpassword=password3 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    42
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username4 -Dpassword=password4 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedGetException -expectedSetException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    43
 * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username5 -Dpassword=password5 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    44
 */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    45
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    46
import java.io.File;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    47
import java.util.Map ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    48
import java.util.HashMap ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    49
import java.util.List;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    50
import java.util.ArrayList;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    51
import java.util.Arrays;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    52
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    53
import java.lang.management.ManagementFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    54
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    55
import javax.management.MBeanServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    56
import javax.management.MBeanServerFactory ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    57
import javax.management.MBeanServerConnection;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    58
import javax.management.remote.JMXConnector;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    59
import javax.management.remote.JMXConnectorFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    60
import javax.management.remote.JMXConnectorServer;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    61
import javax.management.remote.JMXConnectorServerFactory;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    62
import javax.management.remote.JMXServiceURL;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    63
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    64
import javax.management.Attribute ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    65
import javax.management.ObjectName ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    66
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    67
import jdk.testlibrary.ProcessTools;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    68
import jdk.testlibrary.JDKToolFinder;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    69
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    70
public class AuthorizationTest {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    71
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    72
    static final String SERVER_CLASS_NAME = "AuthorizationTest";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    73
    static final String CLIENT_CLASS_NAME = "AuthorizationTest$ClientSide";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    74
    static final String CLIENT_CLASS_MAIN = CLIENT_CLASS_NAME;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    75
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    76
    static final String USERNAME_PROPERTY = "username";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    77
    static final String PASSWORD_PROPERTY = "password";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    78
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    79
    private JMXConnectorServer cs;
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
     * First Debug properties and arguments are collect in expected
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    83
     * map  (argName, value) format, then calls original test's run method.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    84
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    85
    public static void main(String args[]) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    86
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    87
        System.out.println("=================================================");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    88
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    89
        // Parses parameters
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    90
        Utils.parseDebugProperties();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    91
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    92
        // Supported parameters list format is :
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    93
        // "MainClass [-server <param-spec> ...] [-client <param-spec> ...]
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    94
        // with <param-spec> either "-parami valuei" or "-parami"
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    95
        HashMap<String, Object> serverMap = new HashMap<>() ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    96
        int clientArgsIndex =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    97
            Utils.parseServerParameters(args, SERVER_CLASS_NAME, serverMap);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    98
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
    99
        // Extract and records client params
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   100
        String[] clientParams = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   101
        if (clientArgsIndex < args.length) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   102
            int clientParamsSize = args.length - clientArgsIndex;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   103
            clientParams = new String[clientParamsSize];
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   104
            System.arraycopy(args, clientArgsIndex, clientParams, 0, clientParamsSize);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   105
        } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   106
            clientParams = new String[0];
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   107
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   108
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   109
        // Run test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   110
        AuthorizationTest test = new AuthorizationTest();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   111
        test.run(serverMap, clientParams);
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
     * Create the MBeansServer side of the test and returns its address
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   117
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   118
    private JMXServiceURL createServerSide(Map<String, Object> serverMap)
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   119
    throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   120
        final int NINETY_SECONDS = 90;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   121
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   122
        System.out.println("AuthorizationTest::createServerSide: Start") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   123
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   124
        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   125
        JMXServiceURL url = new JMXServiceURL("rmi", null, 0);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   126
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   127
        // Creates connection environment from server side params
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   128
        HashMap<String, Object> env = new HashMap<>();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   129
        String value = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   130
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   131
        if ((value = (String)serverMap.get("-mapType")) != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   132
            if (value.contains("x.access.file")) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   133
                String accessFileStr = System.getProperty("test.src") +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   134
                    File.separator + "access.properties";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   135
                env.put("jmx.remote.x.access.file", accessFileStr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   136
                System.out.println("Added " + accessFileStr + " file as jmx.remote.x.access.file");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   137
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   138
            if (value.contains("x.password.file")) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   139
                String passwordFileStr = System.getProperty("test.src") +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   140
                    File.separator + "password.properties";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   141
                env.put("jmx.remote.x.password.file", passwordFileStr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   142
                System.out.println("Added " + passwordFileStr + " file as jmx.remote.x.password.file");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   143
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   144
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   145
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   146
        if (serverMap.containsKey("-populate")) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   147
            String populateClassName = "Simple";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   148
            ObjectName on =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   149
                new ObjectName("defaultDomain:class=Simple");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   150
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   151
            Utils.debug(Utils.DEBUG_STANDARD, "create and register Simple MBean") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   152
            mbs.createMBean(populateClassName, on);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   153
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   154
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   155
        cs = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   156
        cs.start();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   157
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   158
        Utils.waitReady(cs, NINETY_SECONDS);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   159
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   160
        JMXServiceURL addr = cs.getAddress();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   161
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   162
        System.out.println("AuthorizationTest::createServerSide: Done.") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   163
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   164
        return addr;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   165
    }
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
     * Creating command-line for running subprocess JVM:
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   169
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   170
     * JVM command line is like:
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   171
     * {test_jdk}/bin/java {defaultopts} -cp {test.class.path} {testopts} main
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   172
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   173
     * {defaultopts} are the default java options set by the framework.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   174
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   175
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   176
    private List<String> buildCommandLine(String args[]) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   177
        List<String> opts = new ArrayList<>();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   178
        opts.add(JDKToolFinder.getJDKTool("java"));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   179
        opts.addAll(Arrays.asList(jdk.testlibrary.Utils.getTestJavaOpts()));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   180
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   181
        String usernameValue = System.getProperty(USERNAME_PROPERTY);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   182
        if (usernameValue != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   183
            opts.add("-D" + USERNAME_PROPERTY + "=" + usernameValue);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   184
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   185
        String passwordValue = System.getProperty(PASSWORD_PROPERTY);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   186
        if (passwordValue != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   187
            opts.add("-D" + PASSWORD_PROPERTY + "=" + passwordValue);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   188
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   189
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   190
        opts.add("-cp");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   191
        opts.add(System.getProperty("test.class.path", "test.class.path"));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   192
        opts.add(CLIENT_CLASS_MAIN);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   193
        opts.addAll(Arrays.asList(args));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   194
        return opts;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   195
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   196
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   197
    /**
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   198
     * Runs AuthorizationTest$ClientSide with the passed options and redirects
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   199
     * subprocess standard I/O to the current (parent) process. This provides a
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   200
     * trace of what happens in the subprocess while it is runnning (and before
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   201
     * it terminates).
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   202
     *
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   203
     * @param serviceUrlStr string representing the JMX service Url to connect to.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   204
     */
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   205
    private int runClientSide(String args[], String serviceUrlStr) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   206
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   207
        // Building command-line
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   208
        List<String> opts = buildCommandLine(args);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   209
        opts.add("-serviceUrl");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   210
        opts.add(serviceUrlStr);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   211
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   212
        // Launch separate JVM subprocess
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   213
        int exitCode = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   214
        String[] optsArray = opts.toArray(new String[0]);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   215
        ProcessBuilder pb = new ProcessBuilder(optsArray);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   216
        Process p = ProcessTools.startProcess("AuthorizationTest$ClientSide", pb);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   217
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   218
        // Handling end of subprocess
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   219
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   220
            exitCode = p.waitFor();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   221
            if (exitCode != 0) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   222
                System.out.println(
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   223
                    "Subprocess unexpected exit value of [" + exitCode +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   224
                    "]. Expected 0.\n");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   225
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   226
        } catch (InterruptedException e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   227
            System.out.println("Parent process interrupted with exception : \n " + e + " :" );
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   228
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   229
            // Parent thread unknown state, killing subprocess.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   230
            p.destroyForcibly();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   231
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   232
            throw new RuntimeException(
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   233
                "Parent process interrupted with exception : \n " + e + " :" );
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   234
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   235
        } finally {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   236
            if (p.isAlive()) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   237
                p.destroyForcibly();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   238
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   239
            return exitCode;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   240
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   241
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   242
     }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   243
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   244
    public void run(Map<String, Object> serverArgs, String clientArgs[]) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   245
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   246
        System.out.println("AuthorizationTest::run: Start") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   247
        int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   248
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   249
        try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   250
            // Initialise the server side
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   251
            JMXServiceURL urlToUse = createServerSide(serverArgs);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   252
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   253
            // Run client side
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   254
            errorCount = runClientSide(clientArgs, urlToUse.toString());
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   255
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   256
            if ( errorCount == 0 ) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   257
                System.out.println("AuthorizationTest::run: Done without any error") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   258
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   259
                System.out.println("AuthorizationTest::run: Done with "
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   260
                        + errorCount
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   261
                        + " error(s)") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   262
                throw new RuntimeException("errorCount = " + errorCount);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   263
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   264
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   265
            cs.stop();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   266
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   267
        } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   268
            throw new RuntimeException(e);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   269
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   270
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   271
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   272
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   273
    private static class ClientSide {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   274
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   275
        private JMXConnector cc = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   276
        private MBeanServerConnection mbsc = null;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   277
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   278
        public static void main(String args[]) throws Exception {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   279
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   280
            // Parses parameters
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   281
            Utils.parseDebugProperties();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   282
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   283
            // Supported parameters list format is : "MainClass [-client <param-spec> ...]
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   284
            // with <param-spec> either "-parami valuei" or "-parami"
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   285
            HashMap<String, Object> clientMap = new HashMap<>() ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   286
            Utils.parseClientParameters(args, CLIENT_CLASS_NAME, clientMap);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   287
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   288
            // Run test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   289
            ClientSide test = new ClientSide();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   290
            test.run(clientMap);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   291
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   292
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   293
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   294
        public void run(Map<String, Object> args) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   295
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   296
            int errorCount = 0 ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   297
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   298
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   299
                boolean expectedCreateException =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   300
                        (args.containsKey("-expectedCreateException")) ? true : false ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   301
                boolean expectedGetException =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   302
                        (args.containsKey("-expectedGetException")) ? true : false ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   303
                boolean expectedSetException =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   304
                        (args.containsKey("-expectedSetException")) ? true : false ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   305
                boolean expectedInvokeException =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   306
                        (args.containsKey("-expectedInvokeException")) ? true : false ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   307
                // JSR262 (see bug 6440374)
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   308
                // There is no special JSR262 protocol operation for connect.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   309
                // The first request sent initiate the connection.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   310
                // In the JSR262 current implementation, getDefaultDomain is sent to
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   311
                // the server in order to get the server part of the connection ID.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   312
                // => the connection may fail if no access permission on get requests.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   313
                boolean expectedConnectException =
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   314
                        (args.containsKey("-expectedConnectException")) ? true : false ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   315
                // Before connection,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   316
                // remove the element of the Map with null values (not supported by RMI)
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   317
                // See bug 4982668
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   318
                args.remove("-expectedCreateException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   319
                args.remove("-expectedGetException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   320
                args.remove("-expectedSetException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   321
                args.remove("-expectedInvokeException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   322
                args.remove("-expectedConnectException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   323
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   324
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   325
                // Here do connect to the JMX Server
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   326
                String username = System.getProperty("username");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   327
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   328
                    "ClientSide::run: CONNECT on behalf of \"" + username + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   329
                doConnect(args, expectedConnectException);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   330
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   331
                // If the connection did not fail, perform some requests.
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   332
                // At this stage the mbeanserver connection is up and running
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   333
                if (mbsc != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   334
                    ObjectName on = new ObjectName("defaultDomain:class=Simple");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   335
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   336
                    // Create request
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   337
                    Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   338
                        "ClientSide::run: CREATE on behalf of \"" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   339
                        username + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   340
                    errorCount += doCreateRequest(mbsc,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   341
                        new ObjectName("defaultDomain:class=Simple,user=" + username),
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   342
                        expectedCreateException);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   343
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   344
                    // Get request
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   345
                    Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   346
                        "ClientSide::run: GET on behalf of \"" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   347
                        username + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   348
                    errorCount += doGetRequest(mbsc, on, expectedGetException);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   349
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   350
                    // Set request
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   351
                    Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   352
                        "ClientSide::run: SET on behalf of \"" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   353
                        username + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   354
                    errorCount += doSetRequest(mbsc, on, expectedSetException);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   355
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   356
                    // Invoke request
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   357
                    Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   358
                        "ClientSide::run: INVOKE on behalf of \"" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   359
                        username + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   360
                    errorCount += doInvokeRequest(mbsc, on, expectedInvokeException);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   361
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   362
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   363
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   364
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   365
                errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   366
            } finally {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   367
                // Terminate the JMX Client
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   368
                try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   369
                    cc.close();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   370
                } catch (Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   371
                    Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   372
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   373
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   374
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   375
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   376
            System.out.println("ClientSide::run: Done") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   377
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   378
            // Handle result
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   379
            if (errorCount == 0) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   380
                System.out.println("ClientSide::run: (OK) authorization test succeeded.");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   381
            } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   382
                String message = "AuthorizationTest$ClientSide::run: (ERROR) " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   383
                        " authorization test failed with " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   384
                        errorCount + " error(s)";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   385
                System.out.println(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   386
                throw new RuntimeException(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   387
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   388
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   389
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   390
        protected void doConnect(Map<String, Object> args,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   391
                                 boolean expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   392
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   393
            String msgTag = "ClientSide::doConnect";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   394
            boolean throwRuntimeException = false;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   395
            String message = "";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   396
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   397
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   398
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   399
                    "ClientSide::doConnect: Connect the client");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   400
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   401
                // Collect connection environment
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   402
                HashMap<String, Object> env = new HashMap<>();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   403
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   404
                Object value = args.get("-mapType");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   405
                if (value != null) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   406
                    String username = System.getProperty("username");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   407
                    String password = System.getProperty("password");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   408
                    Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   409
                        msgTag + "add \"jmx.remote.credentials\" = \"" +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   410
                        username + "\", \"" + password + "\"");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   411
                    env.put("jmx.remote.credentials",
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   412
                        new String[] { username , password });
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   413
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   414
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   415
                // Get a connection to remote mbean server
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   416
                JMXServiceURL addr = new JMXServiceURL((String)args.get("-serviceUrl"));
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   417
                cc = JMXConnectorFactory.connect(addr,env);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   418
                mbsc = cc.getMBeanServerConnection();
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   419
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   420
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   421
                    message = "ClientSide::doConnect: (ERROR) " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   422
                        "Connect did not fail with expected SecurityException";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   423
                    System.out.println(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   424
                    throwRuntimeException = true;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   425
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   426
                    System.out.println("ClientSide::doConnect: (OK) Connect succeed");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   427
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   428
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   429
                Utils.printThrowable(e, true);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   430
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   431
                    if (e instanceof java.lang.SecurityException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   432
                        System.out.println("ClientSide::doConnect: (OK) " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   433
                            "Connect failed with expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   434
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   435
                        message = "ClientSide::doConnect: (ERROR) " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   436
                            "Create failed with " + e.getClass() +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   437
                            " instead of expected SecurityException";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   438
                        System.out.println(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   439
                        throwRuntimeException = true;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   440
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   441
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   442
                    message = "ClientSide::doConnect: (ERROR) " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   443
                        "Connect failed";
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   444
                    System.out.println(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   445
                    throwRuntimeException = true;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   446
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   447
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   448
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   449
            // If the connection failed, or if the connection succeeded but should not,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   450
            // no need to go further => throw RuntimeException and exit the test
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   451
            if (throwRuntimeException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   452
                throw new RuntimeException(message);
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   453
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   454
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   455
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   456
        protected int doCreateRequest(MBeanServerConnection mbsc,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   457
                                      ObjectName on,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   458
                                      boolean expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   459
            int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   460
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   461
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   462
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   463
                    "ClientSide::doCreateRequest: Create and register the MBean") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   464
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   465
                mbsc.createMBean("Simple", on) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   466
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   467
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   468
                    System.out.println("ClientSide::doCreateRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   469
                        "(ERROR) Create did not fail with expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   470
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   471
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   472
                    System.out.println("ClientSide::doCreateRequest: (OK) Create succeed") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   473
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   474
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   475
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   476
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   477
                    if (e instanceof java.lang.SecurityException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   478
                        System.out.println("ClientSide::doCreateRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   479
                            "(OK) Create failed with expected SecurityException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   480
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   481
                        System.out.println("ClientSide::doCreateRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   482
                            "(ERROR) Create failed with " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   483
                            e.getClass() + " instead of expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   484
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   485
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   486
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   487
                    System.out.println("ClientSide::doCreateRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   488
                        "(ERROR) Create failed");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   489
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   490
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   491
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   492
            return errorCount;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   493
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   494
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   495
        protected int doGetRequest(MBeanServerConnection mbsc,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   496
                                   ObjectName on,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   497
                                   boolean expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   498
            int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   499
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   500
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   501
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   502
                    "ClientSide::doGetRequest: Get attributes of the MBean") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   503
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   504
                mbsc.getAttribute(on, "Attribute");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   505
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   506
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   507
                    System.out.println("ClientSide::doGetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   508
                        "(ERROR) Get did not fail with expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   509
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   510
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   511
                    System.out.println("ClientSide::doGetRequest: (OK) Get succeed") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   512
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   513
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   514
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   515
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   516
                    if (e instanceof java.lang.SecurityException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   517
                        System.out.println("ClientSide::doGetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   518
                            "(OK) Get failed with expected SecurityException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   519
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   520
                        System.out.println("ClientSide::doGetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   521
                            "(ERROR) Get failed with " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   522
                            e.getClass() + " instead of expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   523
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   524
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   525
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   526
                    System.out.println("ClientSide::doGetRequest: (ERROR) Get failed");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   527
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   528
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   529
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   530
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   531
            return errorCount;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   532
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   533
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   534
        protected int doSetRequest(MBeanServerConnection mbsc,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   535
                                   ObjectName on,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   536
                                   boolean expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   537
            int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   538
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   539
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   540
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   541
                    "ClientSide::doSetRequest: Set attributes of the MBean") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   542
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   543
                Attribute attribute = new Attribute("Attribute", "My value") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   544
                mbsc.setAttribute(on, attribute) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   545
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   546
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   547
                    System.out.println("ClientSide::doSetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   548
                        "(ERROR) Set did not fail with expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   549
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   550
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   551
                    System.out.println("ClientSide::doSetRequest: (OK) Set succeed") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   552
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   553
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   554
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   555
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   556
                    if (e instanceof java.lang.SecurityException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   557
                        System.out.println("ClientSide::doSetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   558
                            "(OK) Set failed with expected SecurityException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   559
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   560
                        System.out.println("ClientSide::doSetRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   561
                            "(ERROR) Set failed with " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   562
                            e.getClass() + " instead of expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   563
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   564
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   565
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   566
                    System.out.println("ClientSide::doSetRequest: (ERROR) Set failed");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   567
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   568
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   569
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   570
            return errorCount;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   571
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   572
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   573
        protected int doInvokeRequest(MBeanServerConnection mbsc,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   574
                                      ObjectName on,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   575
                                      boolean expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   576
            int errorCount = 0;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   577
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   578
            try {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   579
                Utils.debug(Utils.DEBUG_STANDARD,
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   580
                    "ClientSide::doInvokeRequest: Invoke operations on the MBean") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   581
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   582
                mbsc.invoke(on, "operation", null, null) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   583
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   584
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   585
                    System.out.println("ClientSide::doInvokeRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   586
                        "(ERROR) Invoke did not fail with expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   587
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   588
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   589
                    System.out.println("ClientSide::doInvokeRequest: (OK) Invoke succeed") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   590
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   591
            } catch(Exception e) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   592
                Utils.printThrowable(e, true) ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   593
                if (expectedException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   594
                    if (e instanceof java.lang.SecurityException) {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   595
                        System.out.println("ClientSide::doInvokeRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   596
                            "(OK) Invoke failed with expected SecurityException") ;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   597
                    } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   598
                        System.out.println("ClientSide::doInvokeRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   599
                            " (ERROR) Invoke failed with " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   600
                            e.getClass() + " instead of expected SecurityException");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   601
                        errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   602
                    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   603
                } else {
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   604
                    System.out.println("ClientSide::doInvokeRequest: " +
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   605
                        "(ERROR) Invoke failed");
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   606
                    errorCount++;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   607
                }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   608
            }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   609
            return errorCount;
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   610
        }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   611
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   612
    }
de746e7eb1e3 8058865: JMX Test Refactoring
olagneau
parents:
diff changeset
   613
}