test/jdk/com/sun/jdi/JdwpNetProps.java
author amenkov
Wed, 15 May 2019 11:06:33 -0700
changeset 54884 8a6093c186a6
permissions -rw-r--r--
8184770: JDWP support for IPv6 Reviewed-by: sspitsyn, chegar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54884
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     1
/*
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     4
 *
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     7
 * published by the Free Software Foundation.
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     8
 *
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    13
 * accompanied this code).
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    14
 *
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    18
 *
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    21
 * questions.
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    22
 */
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    23
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    24
import com.sun.jdi.Bootstrap;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    25
import com.sun.jdi.VirtualMachine;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    26
import com.sun.jdi.connect.AttachingConnector;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    27
import com.sun.jdi.connect.Connector;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    28
import com.sun.jdi.connect.IllegalConnectorArgumentsException;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    29
import lib.jdb.Debuggee;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    30
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    31
import java.io.IOException;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    32
import java.net.Inet4Address;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    33
import java.net.Inet6Address;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    34
import java.net.InetAddress;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    35
import java.util.Iterator;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    36
import java.util.LinkedList;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    37
import java.util.List;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    38
import java.util.Map;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    39
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    40
/*
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    41
 * @test
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    42
 * @bug 8184770
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    43
 * @summary Tests that JDWP agent honors jdk net properties
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    44
 * @library /test/lib
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    45
 *
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    46
 * @build HelloWorld JdwpNetProps
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    47
 * @run main/othervm JdwpNetProps
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    48
 */
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    49
public class JdwpNetProps {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    50
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    51
    public static void main(String[] args) throws Exception {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    52
        InetAddress addrs[] = InetAddress.getAllByName("localhost");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    53
        InetAddress ipv4Address = null;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    54
        InetAddress ipv6Address = null;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    55
        for (int i =  0; i < addrs.length; i++) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    56
            if (addrs[i] instanceof Inet4Address) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    57
                ipv4Address = addrs[i];
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    58
            } else if (addrs[i] instanceof Inet6Address) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    59
                ipv6Address = addrs[i];
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    60
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    61
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    62
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    63
        if (ipv4Address != null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    64
            new ListenTest("localhost", ipv4Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    65
                    .preferIPv4Stack(true)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    66
                    .run(TestResult.Success);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    67
            new ListenTest("localhost", ipv4Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    68
                    .preferIPv4Stack(false)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    69
                    .run(TestResult.Success);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    70
            if (ipv6Address != null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    71
                // - only IPv4, so connection prom IPv6 should fail
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    72
                new ListenTest("localhost", ipv6Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    73
                        .preferIPv4Stack(true)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    74
                        .preferIPv6Addresses(true)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    75
                        .run(TestResult.AttachFailed);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    76
                // - listen on IPv4
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    77
                new ListenTest("localhost", ipv6Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    78
                        .preferIPv6Addresses(false)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    79
                        .run(TestResult.AttachFailed);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    80
                // - listen on IPv6
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    81
                new ListenTest("localhost", ipv6Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    82
                        .preferIPv6Addresses(true)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    83
                        .run(TestResult.Success);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    84
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    85
        } else {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    86
            // IPv6-only system - expected to fail on IPv4 address
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    87
            new ListenTest("localhost", ipv6Address)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    88
                    .preferIPv4Stack(true)
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    89
                    .run(TestResult.ListenFailed);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    90
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    91
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    92
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    93
    private enum TestResult {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    94
        Success,
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    95
        ListenFailed,
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    96
        AttachFailed
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    97
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    98
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
    99
    private static class ListenTest {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   100
        private final String listenAddress;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   101
        private final InetAddress connectAddress;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   102
        private Boolean preferIPv4Stack;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   103
        private Boolean preferIPv6Addresses;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   104
        public ListenTest(String listenAddress, InetAddress connectAddress) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   105
            this.listenAddress = listenAddress;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   106
            this.connectAddress = connectAddress;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   107
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   108
        public ListenTest preferIPv4Stack(Boolean value) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   109
            preferIPv4Stack = value;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   110
            return this;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   111
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   112
        public ListenTest preferIPv6Addresses(Boolean value) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   113
            preferIPv6Addresses = value;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   114
            return this;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   115
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   116
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   117
        public void run(TestResult expectedResult) throws Exception {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   118
            List<String> options = new LinkedList<>();
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   119
            if (preferIPv4Stack != null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   120
                options.add("-Djava.net.preferIPv4Stack=" + preferIPv4Stack.toString());
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   121
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   122
            if (preferIPv6Addresses != null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   123
                options.add("-Djava.net.preferIPv6Addresses=" + preferIPv6Addresses.toString());
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   124
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   125
            log("Starting listening debuggee at " + listenAddress
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   126
                    + (expectedResult == TestResult.ListenFailed ? ": expected to fail" : ""));
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   127
            Exception error = null;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   128
            try (Debuggee debuggee = Debuggee.launcher("HelloWorld")
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   129
                    .setAddress(listenAddress + ":0")
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   130
                    .addOptions(options).launch()) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   131
                log("Debuggee is listening on " + listenAddress + ":" + debuggee.getAddress());
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   132
                log("Connecting from " + connectAddress.getHostAddress()
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   133
                        + ", expected: " + (expectedResult == TestResult.Success ? "Success" : "Failure"));
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   134
                try {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   135
                    VirtualMachine vm = attach(connectAddress.getHostAddress(), debuggee.getAddress());
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   136
                    vm.dispose();
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   137
                    if (expectedResult == TestResult.Success) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   138
                        log("Attached successfully (as expected)");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   139
                    } else {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   140
                        error = new RuntimeException("ERROR: attached successfully");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   141
                    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   142
                } catch (Exception ex) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   143
                    if (expectedResult == TestResult.AttachFailed) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   144
                        log("Attach failed (as expected)");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   145
                    } else {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   146
                        error = new RuntimeException("ERROR: failed to attach", ex);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   147
                    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   148
                }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   149
            } catch (Exception ex) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   150
                if (expectedResult == TestResult.ListenFailed) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   151
                    log("Listen failed (as expected)");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   152
                } else {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   153
                    error = new RuntimeException("ERROR: listen failed", ex);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   154
                }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   155
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   156
            if (error != null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   157
                throw error;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   158
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   159
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   160
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   161
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   162
    private static String ATTACH_CONNECTOR = "com.sun.jdi.SocketAttach";
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   163
    // cache socket attaching connector
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   164
    private static AttachingConnector attachingConnector;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   165
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   166
    private static VirtualMachine attach(String address, String port) throws IOException {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   167
        if (attachingConnector == null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   168
            attachingConnector = (AttachingConnector)getConnector(ATTACH_CONNECTOR);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   169
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   170
        Map<String, Connector.Argument> args = attachingConnector.defaultArguments();
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   171
        setConnectorArg(args, "hostname", address);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   172
        setConnectorArg(args, "port", port);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   173
        try {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   174
            return attachingConnector.attach(args);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   175
        } catch (IllegalConnectorArgumentsException e) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   176
            // unexpected.. wrap in RuntimeException
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   177
            throw new RuntimeException(e);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   178
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   179
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   180
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   181
    private static Connector getConnector(String name) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   182
        List<Connector> connectors = Bootstrap.virtualMachineManager().allConnectors();
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   183
        for (Iterator<Connector> iter = connectors.iterator(); iter.hasNext(); ) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   184
            Connector connector = iter.next();
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   185
            if (connector.name().equalsIgnoreCase(name)) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   186
                return connector;
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   187
            }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   188
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   189
        throw new IllegalArgumentException("Connector " + name + " not found");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   190
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   191
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   192
    private static void setConnectorArg(Map<String, Connector.Argument> args, String name, String value) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   193
        Connector.Argument arg = args.get(name);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   194
        if (arg == null) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   195
            throw new IllegalArgumentException("Argument " + name + " is not defined");
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   196
        }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   197
        arg.setValue(value);
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   198
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   199
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   200
    private static void log(Object o) {
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   201
        System.out.println(String.valueOf(o));
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   202
    }
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   203
8a6093c186a6 8184770: JDWP support for IPv6
amenkov
parents:
diff changeset
   204
}