Projects
Mega:24.03:SP1:Everything
openjdk-1.8.0
_service:tar_scm:add-appcds-jtreg-test-case-Unu...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:add-appcds-jtreg-test-case-UnusedCPDuringDump.patch of Package openjdk-1.8.0
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
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2