Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/serviceability/sa/ClhsdbDumpclass.java
41152 views
1
/*
2
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.io.File;
25
import java.util.Arrays;
26
import java.util.HashMap;
27
import java.util.List;
28
import java.util.Map;
29
30
import jdk.test.lib.Utils;
31
import jdk.test.lib.apps.LingeredApp;
32
import jdk.test.lib.JDKToolLauncher;
33
import jdk.test.lib.process.OutputAnalyzer;
34
import jtreg.SkippedException;
35
36
/**
37
* @test
38
* @bug 8240990
39
* @summary Test clhsdb dumpclass command
40
* @requires vm.hasSA
41
* @library /test/lib
42
* @run main/othervm ClhsdbDumpclass
43
*/
44
45
public class ClhsdbDumpclass {
46
static final String APP_DOT_CLASSNAME = LingeredApp.class.getName();
47
static final String APP_SLASH_CLASSNAME = APP_DOT_CLASSNAME.replace('.', '/');
48
49
public static void main(String[] args) throws Exception {
50
System.out.println("Starting ClhsdbDumpclass test");
51
52
LingeredApp theApp = null;
53
try {
54
ClhsdbLauncher test = new ClhsdbLauncher();
55
56
theApp = LingeredApp.startApp();
57
System.out.println("Started LingeredApp with pid " + theApp.getPid());
58
59
// Run "dumpclass jdk/test/lib/apps/LingeredApp"
60
String cmd = "dumpclass " + APP_DOT_CLASSNAME;
61
List<String> cmds = List.of(cmd);
62
Map<String, List<String>> unExpStrMap = new HashMap<>();
63
unExpStrMap.put(cmd, List.of("class not found"));
64
test.run(theApp.getPid(), cmds, null, unExpStrMap);
65
File classFile = new File(APP_SLASH_CLASSNAME + ".class");
66
if (!classFile.exists()) {
67
throw new RuntimeException("FAILED: Cannot find dumped .class file");
68
}
69
70
// Run javap on the generated class file to make sure it's valid.
71
JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("javap");
72
launcher.addVMArgs(Utils.getTestJavaOpts());
73
launcher.addToolArg(APP_DOT_CLASSNAME);
74
System.out.println("> javap " + APP_DOT_CLASSNAME);
75
List<String> cmdStringList = Arrays.asList(launcher.getCommand());
76
ProcessBuilder pb = new ProcessBuilder(cmdStringList);
77
Process javap = pb.start();
78
OutputAnalyzer out = new OutputAnalyzer(javap);
79
javap.waitFor();
80
System.out.println(out.getStdout());
81
System.err.println(out.getStderr());
82
out.shouldHaveExitValue(0);
83
out.shouldMatch("public class " + APP_DOT_CLASSNAME);
84
} catch (SkippedException se) {
85
throw se;
86
} catch (Exception ex) {
87
throw new RuntimeException("Test ERROR " + ex, ex);
88
} finally {
89
LingeredApp.stopApp(theApp);
90
}
91
System.out.println("Test PASSED");
92
}
93
}
94
95