test/hotspot/jtreg/serviceability/sa/TestClassDump.java
author sspitsyn
Tue, 26 Jun 2018 13:50:59 -0700
changeset 50802 fa380b3b2b7d
parent 50791 b1e90a8a876c
permissions -rw-r--r--
8205721: Problem list serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorStatArrayCorrectnessTest.java Summary: Add the test to the ProblemList.txt Reviewed-by: dcubed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48158
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     1
/*
50791
b1e90a8a876c 8205419: [testbug] TestJmapCore failing without SA: introduce @requires vm.hasSAandCanAttach
goetz
parents: 48424
diff changeset
     2
 * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
48158
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     4
 *
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     7
 * published by the Free Software Foundation.
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     8
 *
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    13
 * accompanied this code).
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    14
 *
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    18
 *
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    21
 * questions.
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    22
 */
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    23
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    24
import java.io.IOException;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    25
import java.nio.file.Files;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    26
import java.nio.file.Paths;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    27
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    28
import jdk.test.lib.apps.LingeredApp;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    29
import jdk.test.lib.Platform;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    30
import jdk.test.lib.process.OutputAnalyzer;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    31
import jdk.test.lib.process.ProcessTools;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    32
50791
b1e90a8a876c 8205419: [testbug] TestJmapCore failing without SA: introduce @requires vm.hasSAandCanAttach
goetz
parents: 48424
diff changeset
    33
/**
48158
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    34
 * @test
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    35
 * @bug 8184982
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    36
 * @summary Test ClassDump tool
50791
b1e90a8a876c 8205419: [testbug] TestJmapCore failing without SA: introduce @requires vm.hasSAandCanAttach
goetz
parents: 48424
diff changeset
    37
 * @requires vm.hasSAandCanAttach
48158
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    38
 * @library /test/lib
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    39
 * @run main/othervm TestClassDump
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    40
 */
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    41
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    42
public class TestClassDump {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    43
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    44
    private static void dumpClass(long lingeredAppPid)
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    45
        throws IOException {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    46
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    47
        ProcessBuilder pb;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    48
        OutputAnalyzer output;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    49
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    50
        pb = ProcessTools.createJavaProcessBuilder(
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    51
                "-Dsun.jvm.hotspot.tools.jcore.outputDir=jtreg_classes",
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    52
                "-m", "jdk.hotspot.agent/sun.jvm.hotspot.tools.jcore.ClassDump", String.valueOf(lingeredAppPid));
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    53
        output = new OutputAnalyzer(pb.start());
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    54
        output.shouldHaveExitValue(0);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    55
        if (!Files.isDirectory(Paths.get("jtreg_classes"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    56
            throw new RuntimeException("jtreg_classes directory not found");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    57
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    58
        if (Files.notExists(Paths.get("jtreg_classes", "java", "lang", "Integer.class"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    59
            throw new RuntimeException("jtreg_classes/java/lang/Integer.class not found");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    60
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    61
        if (Files.notExists(Paths.get("jtreg_classes", "jdk", "test", "lib", "apps", "LingeredApp.class"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    62
            throw new RuntimeException("jtreg_classes/jdk/test/lib/apps/LingeredApp.class not found");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    63
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    64
        if (Files.notExists(Paths.get("jtreg_classes", "sun", "net", "util", "URLUtil.class"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    65
            throw new RuntimeException("jtreg_classes/sun/net/util/URLUtil.class not found");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    66
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    67
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    68
        pb = ProcessTools.createJavaProcessBuilder(
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    69
                "-Dsun.jvm.hotspot.tools.jcore.outputDir=jtreg_classes2",
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    70
                "-Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList=jdk,sun",
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    71
                "-m", "jdk.hotspot.agent/sun.jvm.hotspot.tools.jcore.ClassDump", String.valueOf(lingeredAppPid));
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    72
        output = new OutputAnalyzer(pb.start());
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    73
        output.shouldHaveExitValue(0);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    74
        if (Files.exists(Paths.get("jtreg_classes2", "java", "math", "BigInteger.class"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    75
            throw new RuntimeException("jtreg_classes2/java/math/BigInteger.class not expected");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    76
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    77
        if (Files.notExists(Paths.get("jtreg_classes2", "sun", "util", "calendar", "BaseCalendar.class"))) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    78
            throw new RuntimeException("jtreg_classes2/sun/util/calendar/BaseCalendar.class not found");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    79
        }
48424
8749f0b3d227 8193506: serviceability/sa/TestClassDump.java fails in OpenJDK build
sballal
parents: 48158
diff changeset
    80
        if (Files.notExists(Paths.get("jtreg_classes2", "jdk", "internal", "loader", "BootLoader.class"))) {
8749f0b3d227 8193506: serviceability/sa/TestClassDump.java fails in OpenJDK build
sballal
parents: 48158
diff changeset
    81
            throw new RuntimeException("jtreg_classes2/jdk/internal/loader/BootLoader.class not found");
48158
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    82
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    83
    }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    84
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    85
    public static void main(String[] args) throws Exception {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    86
        LingeredApp theApp = null;
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    87
        try {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    88
            theApp = LingeredApp.startApp();
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    89
            long pid = theApp.getPid();
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    90
            System.out.println("Started LingeredApp with pid " + pid);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    91
            dumpClass(pid);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    92
        } catch (Exception ex) {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    93
            throw new RuntimeException("Test ERROR " + ex, ex);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    94
        } finally {
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    95
            LingeredApp.stopApp(theApp);
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    96
        }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    97
        System.out.println("Test PASSED");
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    98
    }
66622fc2e247 8184982: SA: Running ClassDump on a simple java program generates NullPointerException
sballal
parents:
diff changeset
    99
}