test/hotspot/jtreg/serviceability/dcmd/jvmti/LoadAgentDcmdTest.java
author dholmes
Thu, 01 Feb 2018 21:03:37 -0500
changeset 48698 aca813e53416
parent 47902 aed3a9c1abfe
child 48835 62004f705d27
permissions -rw-r--r--
8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings Reviewed-by: sspitsyn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     1
/*
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
     2
 * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     4
 *
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     7
 * published by the Free Software Foundation.
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     8
 *
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    13
 * accompanied this code).
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    14
 *
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    18
 *
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    21
 * questions.
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    22
 */
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    23
import java.io.*;
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    24
import java.nio.file.*;
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
    25
import java.util.Arrays;
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    26
import java.util.jar.Attributes;
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    27
import java.util.jar.JarEntry;
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    28
import java.util.jar.JarOutputStream;
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    29
import java.util.jar.Manifest;
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
    30
import java.util.List;
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
    31
import java.util.regex.Matcher;
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
    32
import java.util.regex.Pattern;
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
    33
import jdk.test.lib.Platform;
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
    34
import jdk.test.lib.process.OutputAnalyzer;
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    35
import jdk.test.lib.dcmd.*;
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    36
import org.testng.annotations.Test;
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    37
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    38
/*
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    39
 * Test to attach JVMTI java agent.
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    40
 *
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    41
 * @test
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    42
 * @bug 8147388
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
    43
 * @library /test/lib
36851
03e2f4d0a421 8153737: Unsupported Module
chegar
parents: 36388
diff changeset
    44
 * @modules java.base/jdk.internal.misc
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    45
 *          java.compiler
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    46
 *          java.instrument
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    47
 *          java.management
43467
f91da24c6bca 8152206: Simplify jvmstat modules
gtriantafill
parents: 42892
diff changeset
    48
 *          jdk.internal.jvmstat/sun.jvmstat.monitor
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
    49
 * @build SimpleJvmtiAgent
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    50
 * @run main ClassFileInstaller SimpleJvmtiAgent
47902
aed3a9c1abfe 8186540: [TESTBUG] serviceability/dcmd/jvmti/LoadAgentDcmdTest.java failed to clean up files in agentvm mode
cjplummer
parents: 47216
diff changeset
    51
 * @run testng/othervm LoadAgentDcmdTest
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    52
 */
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    53
public class LoadAgentDcmdTest {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    54
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    55
    public String getLibInstrumentPath() throws FileNotFoundException {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    56
        String jdkPath = System.getProperty("test.jdk");
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    57
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    58
        if (jdkPath == null) {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    59
            throw new RuntimeException(
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    60
                      "System property 'test.jdk' not set. " +
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    61
                      "This property is normally set by jtreg. " +
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    62
                      "When running test separately, set this property using " +
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    63
                      "'-Dtest.jdk=/path/to/jdk'.");
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    64
        }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    65
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
    66
        Path libpath = Paths.get(jdkPath, jdkLibPath(), sharedObjectName("instrument"));
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    67
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    68
        if (!libpath.toFile().exists()) {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    69
            throw new FileNotFoundException(
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    70
                      "Could not find " + libpath.toAbsolutePath());
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    71
        }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    72
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    73
        return libpath.toAbsolutePath().toString();
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    74
    }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
    75
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    76
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    77
    public void createJarFileForAgent()
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    78
      throws IOException {
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    79
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    80
        final String jarName = "agent.jar";
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    81
        final String agentClass = "SimpleJvmtiAgent";
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    82
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    83
        Manifest manifest = new Manifest();
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    84
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    85
        manifest.getMainAttributes().put(
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    86
             Attributes.Name.MANIFEST_VERSION, "1.0");
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    87
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    88
        manifest.getMainAttributes().put(
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    89
             new Attributes.Name("Agent-Class"), agentClass);
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    90
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    91
        JarOutputStream target = null;
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    92
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    93
        try {
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    94
            target = new
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    95
              JarOutputStream(new FileOutputStream(jarName), manifest);
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    96
            JarEntry entry = new JarEntry(agentClass + ".class");
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    97
            target.putNextEntry(entry);
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    98
            target.closeEntry();
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
    99
        } finally {
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   100
            target.close();
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   101
        }
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   102
    }
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   103
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   104
    static void checkWarningsOnly(OutputAnalyzer out) {
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   105
        // stderr should be empty except for VM warnings.
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   106
        if (!out.getStderr().isEmpty()) {
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   107
            List<String> lines = Arrays.asList(out.getStderr().split("(\\r\\n|\\n|\\r)"));
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   108
            Pattern p = Pattern.compile(".*VM warning.*");
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   109
            for (String line : lines) {
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   110
                Matcher m = p.matcher(line);
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   111
                if (!m.matches()) {
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   112
                    throw new RuntimeException("Stderr has output other than VM warnings");
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   113
                }
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   114
            }
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   115
        }
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   116
    }
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   117
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   118
    public void run(CommandExecutor executor)  {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   119
        try{
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   120
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   121
            createJarFileForAgent();
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   122
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   123
            String libpath = getLibInstrumentPath();
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   124
            OutputAnalyzer output = null;
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   125
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   126
            // Test 1: Native agent, no arguments
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   127
            output = executor.execute("JVMTI.agent_load " +
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   128
                                          libpath + " agent.jar");
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   129
            checkWarningsOnly(output);
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   130
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   131
            // Test 2: Native agent, with arguments
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   132
            output = executor.execute("JVMTI.agent_load " +
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   133
                                          libpath + " \"agent.jar=foo=bar\"");
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   134
            checkWarningsOnly(output);
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   135
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   136
            // Test 3: Java agent, no arguments
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   137
            output = executor.execute("JVMTI.agent_load " +
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   138
                                          "agent.jar");
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   139
            checkWarningsOnly(output);
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   140
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   141
            // Test 4: Java agent, with arguments
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   142
            output = executor.execute("JVMTI.agent_load " +
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   143
                                          "\"agent.jar=foo=bar\"");
48698
aca813e53416 8196534: [Testbug] serviceability/dcmd/jvmti/*DcmdTest tests can't tolerate unrelated warnings
dholmes
parents: 47902
diff changeset
   144
            checkWarningsOnly(output);
36388
d202f114e297 8150318: serviceability/dcmd/jvmti/LoadAgentDcmdTest.java - Could not find JDK_DIR/lib/x86_64/libinstrument.so
dsamersoff
parents: 36205
diff changeset
   145
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   146
        } catch (Exception e) {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   147
            throw new RuntimeException(e);
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   148
        }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   149
    }
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   150
    /**
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   151
     * return path to library inside jdk tree
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   152
     */
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   153
    public static String jdkLibPath() {
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   154
        if (Platform.isWindows()) {
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   155
            return "bin";
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   156
        }
42892
085c0b161faf 8150563: LoadAgentDcmdTest.java can't find libinstrument.so
dsamersoff
parents: 42640
diff changeset
   157
        return "lib";
40631
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   158
    }
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   159
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   160
    /**
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   161
     * Build name of shared object according to platform rules
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   162
     */
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   163
    public static String sharedObjectName(String name) {
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   164
        if (Platform.isWindows()) {
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   165
            return name + ".dll";
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   166
        }
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   167
        if (Platform.isOSX()) {
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   168
            return "lib" + name + ".dylib";
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   169
        }
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   170
        return "lib" + name + ".so";
ed82623d7831 8157957: ClassNotFoundException: jdk.test.lib.JDKToolFinder
ctornqvi
parents: 36851
diff changeset
   171
    }
36188
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   172
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   173
    @Test
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   174
    public void jmx() throws Throwable {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   175
        run(new JMXExecutor());
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   176
    }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   177
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   178
    @Test
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   179
    public void cli() throws Throwable {
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   180
        run(new PidJcmdExecutor());
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   181
    }
99b6836dd3e8 8147388: Add diagnostic commands to attach JVMTI agent.
ysuenaga
parents:
diff changeset
   182
}