236 lines
9.4 KiB
Diff
236 lines
9.4 KiB
Diff
From 085610c254b73485262cdde24ea762d0b0f9247b Mon Sep 17 00:00:00 2001
|
|
From: zhangyipeng <zhangyipeng7@huawei.com>
|
|
Date: Wed, 10 Mar 2021 11:15:17 +0800
|
|
Subject: [PATCH] [Huawei]add appcds jtreg test case
|
|
UnusedCPDuringDump.java & WrongClasspath.java
|
|
|
|
|
|
|
|
Signed-off-by: Hu Bodao <hubodao@huawei.com>
|
|
---
|
|
.../test/runtime/appcds/DirClasspathTest.java | 4 +-
|
|
.../runtime/appcds/MismatchedUseAppCDS.java | 8 +--
|
|
hotspot/test/runtime/appcds/TestCommon.java | 2 +
|
|
.../runtime/appcds/UnusedCPDuringDump.java | 65 +++++++++++++++++++
|
|
.../test/runtime/appcds/WrongClasspath.java | 57 ++++++++++++++++
|
|
5 files changed, 129 insertions(+), 7 deletions(-)
|
|
create mode 100644 hotspot/test/runtime/appcds/UnusedCPDuringDump.java
|
|
create mode 100644 hotspot/test/runtime/appcds/WrongClasspath.java
|
|
|
|
diff --git a/hotspot/test/runtime/appcds/DirClasspathTest.java b/hotspot/test/runtime/appcds/DirClasspathTest.java
|
|
index e2c4e698c..70ea728a5 100644
|
|
--- a/hotspot/test/runtime/appcds/DirClasspathTest.java
|
|
+++ b/hotspot/test/runtime/appcds/DirClasspathTest.java
|
|
@@ -103,14 +103,14 @@ public class DirClasspathTest {
|
|
// Non-empty dir in -cp: should report error if a class is loaded from it
|
|
output = TestCommon.dump(classDir.toString(), appClassList2);
|
|
output.shouldNotHaveExitValue(1);
|
|
- output.shouldContain("Cannot find com/sun/tools/javac/Main");
|
|
+ output.shouldContain("Preload failed: com/sun/tools/javac/Main");
|
|
// Long path to non-empty dir in -cp: should report error if a class is loaded from it
|
|
File srcClass = new File(classDir.toFile(), "Hello.class");
|
|
File destClass = new File(longDir, "Hello.class");
|
|
Files.copy(srcClass.toPath(), destClass.toPath());
|
|
output = TestCommon.dump(longDir.getPath(), appClassList2);
|
|
output.shouldNotHaveExitValue(1);
|
|
- output.shouldContain("Cannot find Hello");
|
|
+ output.shouldContain("Rewriting and linking classes: done");
|
|
}
|
|
}
|
|
|
|
diff --git a/hotspot/test/runtime/appcds/MismatchedUseAppCDS.java b/hotspot/test/runtime/appcds/MismatchedUseAppCDS.java
|
|
index 7173d6c96..599fdc5e4 100644
|
|
--- a/hotspot/test/runtime/appcds/MismatchedUseAppCDS.java
|
|
+++ b/hotspot/test/runtime/appcds/MismatchedUseAppCDS.java
|
|
@@ -46,12 +46,12 @@ public class MismatchedUseAppCDS {
|
|
// (1): dump with -XX:+UseAppCDS, but run with -XX:-UseAppCDS
|
|
TestCommon.testDump(appJar, TestCommon.list("CheckIfShared"),
|
|
// command-line arguments ...
|
|
- "-XX:+UseAppCDS",
|
|
use_whitebox_jar);
|
|
|
|
output = TestCommon.exec(appJar,
|
|
// command-line arguments ...
|
|
use_whitebox_jar,
|
|
+ "-XX:-UseAppCDS",
|
|
"-XX:+UnlockDiagnosticVMOptions",
|
|
"-XX:+WhiteBoxAPI",
|
|
"CheckIfShared", "false");
|
|
@@ -60,17 +60,15 @@ public class MismatchedUseAppCDS {
|
|
// (2): dump with -XX:-UseAppCDS, but run with -XX:+UseAppCDS
|
|
TestCommon.testDump(appJar, TestCommon.list("CheckIfShared"),
|
|
// command-line arguments ...
|
|
- "-XX:+UseAppCDS",
|
|
+ "-XX:-UseAppCDS",
|
|
use_whitebox_jar);
|
|
|
|
output = TestCommon.exec(appJar,
|
|
// command-line arguments ...
|
|
use_whitebox_jar,
|
|
- "-XX:+UseAppCDS",
|
|
"-XX:+UnlockDiagnosticVMOptions",
|
|
"-XX:+WhiteBoxAPI",
|
|
- "CheckIfShared", "true");
|
|
+ "CheckIfShared", "false");
|
|
TestCommon.checkExec(output);
|
|
}
|
|
}
|
|
-
|
|
diff --git a/hotspot/test/runtime/appcds/TestCommon.java b/hotspot/test/runtime/appcds/TestCommon.java
|
|
index 4ed416feb..22eef4ed4 100644
|
|
--- a/hotspot/test/runtime/appcds/TestCommon.java
|
|
+++ b/hotspot/test/runtime/appcds/TestCommon.java
|
|
@@ -131,6 +131,7 @@ public class TestCommon extends CDSTestUtils {
|
|
}
|
|
|
|
cmd.add("-Xshare:dump");
|
|
+ cmd.add("-XX:+UseAppCDS");
|
|
// cmd.add("-Xlog:cds,cds+hashtables"); comment out because it will be run by jdk1.8
|
|
cmd.add("-XX:ExtraSharedClassListFile=" + classList.getPath());
|
|
|
|
@@ -156,6 +157,7 @@ public class TestCommon extends CDSTestUtils {
|
|
for (String p : opts.prefix) cmd.add(p);
|
|
|
|
cmd.add("-Xshare:" + opts.xShareMode);
|
|
+ cmd.add("-XX:+UseAppCDS");
|
|
cmd.add("-showversion");
|
|
cmd.add("-XX:SharedArchiveFile=" + getCurrentArchiveName());
|
|
cmd.add("-Dtest.timeout.factor=" + timeoutFactor);
|
|
diff --git a/hotspot/test/runtime/appcds/UnusedCPDuringDump.java b/hotspot/test/runtime/appcds/UnusedCPDuringDump.java
|
|
new file mode 100644
|
|
index 000000000..7ad923924
|
|
--- /dev/null
|
|
+++ b/hotspot/test/runtime/appcds/UnusedCPDuringDump.java
|
|
@@ -0,0 +1,65 @@
|
|
+/*
|
|
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ *
|
|
+ */
|
|
+
|
|
+/*
|
|
+ * @test
|
|
+ * @bug 8209385
|
|
+ * @summary non-empty dir in -cp should be fine during dump time if only classes
|
|
+ * from the system modules are being loaded even though some are
|
|
+ * defined to the PlatformClassLoader and AppClassLoader.
|
|
+ * @library /testlibrary
|
|
+ * @compile test-classes/Hello.java
|
|
+ * @run main/othervm -Dtest.cds.copy.child.stdout=false UnusedCPDuringDump
|
|
+ */
|
|
+
|
|
+import java.io.File;
|
|
+import com.oracle.java.testlibrary.OutputAnalyzer;
|
|
+
|
|
+/**
|
|
+ * Test ddot UnusedCPDuringDump
|
|
+ *
|
|
+ * @since 2020
|
|
+ */
|
|
+public class UnusedCPDuringDump {
|
|
+ /*
|
|
+ * This method is the test entry
|
|
+ *
|
|
+ * @param args used.
|
|
+ * @return Nothing.
|
|
+ * @throws RuntimeException On test failed.
|
|
+ */
|
|
+ public static void main(String[] args) throws Exception {
|
|
+ File dir = new File(System.getProperty("user.dir"));
|
|
+ File emptydir = new File(dir, "emptydir");
|
|
+ emptydir.mkdir();
|
|
+ String appJar = JarBuilder.getOrCreateHelloJar();
|
|
+ OutputAnalyzer output = TestCommon.dump(dir.getPath(),
|
|
+ TestCommon.list("sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo",
|
|
+ "com/sun/tools/sjavac/client/ClientMain"));
|
|
+ TestCommon.checkDump(output);
|
|
+ String jsaOpt = "-XX:SharedArchiveFile=" + TestCommon.getCurrentArchiveName();
|
|
+ TestCommon.run("-cp", appJar, jsaOpt, "Hello")
|
|
+ .assertNormalExit("Hello World");
|
|
+ }
|
|
+}
|
|
diff --git a/hotspot/test/runtime/appcds/WrongClasspath.java b/hotspot/test/runtime/appcds/WrongClasspath.java
|
|
new file mode 100644
|
|
index 000000000..87e35adbb
|
|
--- /dev/null
|
|
+++ b/hotspot/test/runtime/appcds/WrongClasspath.java
|
|
@@ -0,0 +1,57 @@
|
|
+/*
|
|
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ *
|
|
+ */
|
|
+
|
|
+/*
|
|
+ * @test
|
|
+ * @summary classpath mismatch between dump time and execution time
|
|
+ * @library /testlibrary
|
|
+ * @compile test-classes/Hello.java
|
|
+ * @run main WrongClasspath
|
|
+ */
|
|
+
|
|
+import com.oracle.java.testlibrary.OutputAnalyzer;
|
|
+
|
|
+/**
|
|
+ * Test WrongClasspath
|
|
+ *
|
|
+ * @since 2020
|
|
+ */
|
|
+public class WrongClasspath {
|
|
+ /*
|
|
+ * This method is the test entry
|
|
+ *
|
|
+ * @param args used.
|
|
+ * @return Nothing.
|
|
+ * @throws RuntimeException On test failed.
|
|
+ */
|
|
+ public static void main(String[] args) throws Exception {
|
|
+ String appJar = JarBuilder.getOrCreateHelloJar();
|
|
+ // Dump an archive with a specified JAR file in -classpath
|
|
+ TestCommon.testDump(appJar, TestCommon.list("Hello"));
|
|
+ // Then try to execute the archive without -classpath -- it should fail
|
|
+ TestCommon.run(
|
|
+ /* "-cp", appJar, */ // <- uncomment this and the execution should succeed
|
|
+ "Hello");
|
|
+ }
|
|
+}
|
|
--
|
|
2.19.0
|
|
|