test/hotspot/jtreg/containers/docker/JfrNetwork.java
author mseledtsov
Wed, 01 May 2019 13:25:54 -0700
changeset 54671 41339a468716
parent 54537 9d3117203dd3
permissions -rw-r--r--
8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command Summary: Using InetAddress.getLocalHost() Reviewed-by: egahlin, lmesnik Contributed-by: Severin Gehwolf <sgehwolf@redhat.com>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54537
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     1
/*
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     4
 *
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    10
 *
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    15
 * accompanied this code).
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    16
 *
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    20
 *
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    23
 * questions.
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    24
 */
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    25
import java.io.InputStream;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    26
import java.io.OutputStream;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    27
import java.net.ServerSocket;
54671
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    28
import java.net.InetAddress;
54537
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    29
import java.net.Socket;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    30
import java.net.SocketAddress;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    31
import java.nio.file.Paths;
54671
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    32
import java.util.ArrayList;
54537
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    33
import java.util.List;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    34
import jdk.jfr.Recording;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    35
import jdk.jfr.consumer.RecordedEvent;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    36
import jdk.jfr.consumer.RecordingFile;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    37
import jdk.test.lib.process.OutputAnalyzer;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    38
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    39
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    40
// This class is intended to run inside a container
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    41
public class JfrNetwork {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    42
    // use a unique hostname for container
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    43
    public static final String HOST_NAME = "container-unique-8221711";
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    44
    public static final String JFR_REPORTED_CONTAINER_HOSTNAME_TAG = "jfr_reported_container_hostname=";
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    45
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    46
    public static void main(String[] args) throws Exception {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    47
        String event = args[0];
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    48
        try (ServerSocket ss = new ServerSocket()) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    49
            testNetworkInfo(ss, event);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    50
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    51
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    52
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    53
    private static void assertTrue(boolean expr, String msg) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    54
        if (!expr) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    55
            throw new RuntimeException(msg);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    56
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    57
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    58
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    59
    private static void testNetworkInfo(ServerSocket ss, String event) throws Exception {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    60
        ServerSocketListener server = new ServerSocketListener(ss);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    61
        server.start();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    62
        SocketWriter writer = new SocketWriter(ss.getLocalSocketAddress());
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    63
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    64
        // setup and start the recording
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    65
        String recordingPath = event + ".jfr";
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    66
        log("========= Recording event: " + event);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    67
        Recording r = new Recording();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    68
        r.enable(event);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    69
        r.setDestination(Paths.get("/", "tmp", recordingPath));
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    70
        r.start();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    71
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    72
        // start the socker writer thread, write some data into the socket
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    73
        writer.start();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    74
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    75
        // wait for writer thread to terminate, then for server thread, then stop recording
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    76
        writer.joinAndThrow();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    77
        server.joinAndThrow();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    78
        r.stop();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    79
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    80
        // analyze the recording
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    81
        List<RecordedEvent> events = RecordingFile.readAllEvents(r.getDestination());
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    82
        events.forEach(e -> log ("event = " + e));
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    83
        assertTrue(!events.isEmpty(), "No recorded network events");
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    84
        RecordedEvent e = events.get(0);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    85
        log(JFR_REPORTED_CONTAINER_HOSTNAME_TAG + e.getString("host"));
54671
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    86
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    87
        // compare IP addresses
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    88
        boolean matchFound = false;
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    89
        InetAddress reportedByJfr = InetAddress.getByName(e.getString("address"));
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    90
        for (InetAddress ip : getLocalIp()) {
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    91
            if (ip.equals(reportedByJfr)) {
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    92
                matchFound = true;
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    93
                break;
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    94
            }
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    95
        }
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    96
        assertTrue(matchFound, "IP address match not found");
54537
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    97
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
    98
54671
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
    99
    private static List<InetAddress> getLocalIp() throws Exception {
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   100
        List<InetAddress> addrs = new ArrayList<>();
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   101
        InetAddress localHost = InetAddress.getLocalHost();
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   102
        if (!localHost.isLoopbackAddress()) {
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   103
            addrs.add(localHost);
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   104
        }
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   105
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   106
        log("getLocalIp() returning:");
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   107
        for (InetAddress addr : addrs) {
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   108
            log(addr.getHostName());
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   109
            log(addr.getHostAddress());
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   110
        }
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   111
41339a468716 8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
mseledtsov
parents: 54537
diff changeset
   112
        return addrs;
54537
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   113
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   114
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   115
    private static void log(String msg) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   116
        System.out.println(msg);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   117
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   118
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   119
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   120
    private static class ServerSocketListener extends Thread {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   121
        Exception exception;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   122
        ServerSocket ss;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   123
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   124
        ServerSocketListener(ServerSocket socket) throws Exception {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   125
            ss = socket;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   126
            ss.setReuseAddress(true);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   127
            ss.bind(null);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   128
            log("ServerSocker Local Address: " + ss.getLocalSocketAddress());
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   129
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   130
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   131
        public void joinAndThrow() throws Exception {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   132
            join();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   133
            if (exception != null) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   134
                throw exception;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   135
            }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   136
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   137
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   138
        public void run() {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   139
            try {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   140
                try (Socket s = ss.accept(); InputStream is = s.getInputStream()) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   141
                    System.out.println("ServerSocketListener: accepted socket connection: s = " + s);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   142
                    is.read();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   143
                    is.read();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   144
                    is.read();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   145
                }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   146
            } catch (Exception e) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   147
                exception = e;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   148
            }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   149
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   150
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   151
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   152
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   153
    private static class SocketWriter extends Thread {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   154
        Exception exception;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   155
        private SocketAddress ssAddr;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   156
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   157
        public SocketWriter(SocketAddress sa) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   158
            this.ssAddr = sa;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   159
            System.out.println("SocketWriter(): sa = " + sa);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   160
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   161
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   162
        public void joinAndThrow() throws Exception {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   163
            join();
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   164
            if (exception != null) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   165
                throw exception;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   166
            }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   167
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   168
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   169
        public void run() {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   170
            try (Socket s = new Socket()) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   171
                s.connect(ssAddr);
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   172
                try (OutputStream os = s.getOutputStream()) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   173
                    os.write('A');
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   174
                    os.write('B');
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   175
                    os.write('C');
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   176
                }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   177
            } catch (Exception e) {
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   178
                exception = e;
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   179
            }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   180
        }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   181
    }
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   182
9d3117203dd3 8221711: [TESTBUG] create more tests for JFR in container environment
mseledtsov
parents:
diff changeset
   183
}