1 /*
2 * Copyright (c) 2016, 2017, 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
25 /*
26 * @test
27 * @summary Abort dumping if any of the new jigsaw vm options is specified.
28 * @requires vm.cds
29 * @library /test/lib ..
30 * @modules java.base/jdk.internal.misc
31 * java.management
32 * jdk.jartool/sun.tools.jar
33 * jdk.internal.jvmstat/sun.jvmstat.monitor
34 * @compile ../test-classes/Hello.java
35 * @run main CheckUnsupportedDumpingOptions
36 */
37
38 import jdk.test.lib.compiler.InMemoryJavaCompiler;
39 import jdk.test.lib.process.OutputAnalyzer;
40
41 public class CheckUnsupportedDumpingOptions {
42 private static final String[] jigsawOptions = {
43 "-m",
44 "--limit-modules",
45 "--module-path",
46 "--upgrade-module-path",
47 "--patch-module"
48 };
49 private static final String[] optionValues = {
50 "mymod",
51 "mymod",
52 "mydir",
53 ".",
54 "java.naming=javax.naming.spi.NamingManger"
55 };
56 private static final int infoIdx = 1;
57
58 public static void main(String[] args) throws Exception {
59 String source = "package javax.naming.spi; " +
60 "public class NamingManager { " +
61 " static { " +
62 " System.out.println(\"I pass!\"); " +
63 " } " +
64 "}";
65 ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
66 InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
67 "mods/java.naming");
68
69 JarBuilder.build("hello", "Hello");
70 String appJar = TestCommon.getTestJar("hello.jar");
71 String appClasses[] = {"Hello"};
72 for (int i = 0; i < jigsawOptions.length; i++) {
73 OutputAnalyzer output;
74 if (i == 5) {
75 // --patch-module
76 output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
77 jigsawOptions[i] + optionValues[i] + appJar);
78 } else {
79 output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
80 jigsawOptions[i], optionValues[i]);
81 }
82 if (i < infoIdx) {
83 output.shouldContain("Cannot use the following option " +
84 "when dumping the shared archive: " + jigsawOptions[i])
85 .shouldHaveExitValue(1);
86 } else {
87 output.shouldContain("Info: the " + jigsawOptions[i] +
88 " option is ignored when dumping the shared archive");
89 if (optionValues[i].equals("mymod")) {
90 // java will throw FindException for a module
91 // which cannot be found during init_phase2() of vm init
92 output.shouldHaveExitValue(1)
93 .shouldContain("java.lang.module.FindException: Module mymod not found");
94 } else {
95 output.shouldHaveExitValue(0);
96 }
97 }
98 }
99 }
100 }
101
|
1 /*
2 * Copyright (c) 2016, 2018, 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
25 /*
26 * @test
27 * @summary Abort dumping if any of the new jigsaw vm options is specified.
28 * @requires vm.cds
29 * @library /test/lib ..
30 * @modules java.base/jdk.internal.misc
31 * java.management
32 * jdk.jartool/sun.tools.jar
33 * jdk.internal.jvmstat/sun.jvmstat.monitor
34 * @compile ../test-classes/Hello.java
35 * @run main CheckUnsupportedDumpingOptions
36 */
37
38 import jdk.test.lib.compiler.InMemoryJavaCompiler;
39 import jdk.test.lib.process.OutputAnalyzer;
40
41 public class CheckUnsupportedDumpingOptions {
42 private static final String[] jigsawOptions = {
43 "--limit-modules",
44 "--upgrade-module-path",
45 "--patch-module"
46 };
47 private static final String[] optionValues = {
48 "mymod",
49 ".",
50 "java.naming=javax.naming.spi.NamingManger"
51 };
52
53 public static void main(String[] args) throws Exception {
54 String source = "package javax.naming.spi; " +
55 "public class NamingManager { " +
56 " static { " +
57 " System.out.println(\"I pass!\"); " +
58 " } " +
59 "}";
60 ClassFileInstaller.writeClassToDisk("javax/naming/spi/NamingManager",
61 InMemoryJavaCompiler.compile("javax.naming.spi.NamingManager", source, "--patch-module=java.naming"),
62 "mods/java.naming");
63
64 JarBuilder.build("hello", "Hello");
65 String appJar = TestCommon.getTestJar("hello.jar");
66 String appClasses[] = {"Hello"};
67 for (int i = 0; i < jigsawOptions.length; i++) {
68 OutputAnalyzer output;
69 output = TestCommon.dump(appJar, appClasses, "-Xlog:cds,cds+hashtables",
70 jigsawOptions[i], optionValues[i]);
71 output.shouldContain("Cannot use the following option " +
72 "when dumping the shared archive: " + jigsawOptions[i])
73 .shouldHaveExitValue(1);
74 }
75 }
76 }
|