1 /*
2 * Copyright (c) 2015, 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 *
128
129 CDSTestUtils.runWithArchiveAndCheck(opts);
130 }
131
132 // Test #2: A shared class in package defined in boot module that's archived
133 // from -Xbootclasspath/a
134 // - should not be loaded by AppCDS
135 public static void testBootAppendModuleClassWithAppCDS() throws Exception {
136 OutputAnalyzer output = TestCommon.exec(
137 appJar,
138 "-Xbootclasspath/a:" + bootAppendJar,
139 MAIN_CLASS,
140 "Test #2", BOOT_APPEND_MODULE_CLASS, "false");
141 TestCommon.checkExec(output);
142 }
143
144
145 // Test #3: A class in excluded package defined in boot module
146 // - should be loaded from the -Xbootclasspath/a by the boot classloader
147 public static void testBootAppendExcludedModuleClassWithoutAppCDS() throws Exception {
148 CDSOptions opts = (new CDSOptions())
149 .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
150 "--limit-modules", "java.base")
151 .setArchiveName(testArchiveName)
152 .addSuffix(MAIN_CLASS, "Test #3", BOOT_APPEND_MODULE_CLASS, "true", "BOOT");
153
154 CDSTestUtils.runWithArchiveAndCheck(opts);
155 }
156
157 // Test #4: A shared class in excluded package that's archived from
158 // -Xbootclasspath/a
159 // - should be loaded from the archive by the bootstrap classloader
160 public static void testBootAppendExcludedModuleClassWithAppCDS() throws Exception {
161 OutputAnalyzer output = TestCommon.exec(
162 appJar,
163 "-Xbootclasspath/a:" + bootAppendJar,
164 "--limit-modules", "java.base",
165 "-XX:+TraceClassLoading",
166 MAIN_CLASS,
167 "Test #4", BOOT_APPEND_MODULE_CLASS, "true", "BOOT");
168 TestCommon.checkExec(output);
169 if (!TestCommon.isUnableToMap(output))
170 output.shouldContain("[class,load] sun.nio.cs.ext.MyClass source: shared objects file");
171 }
172
173
174 // Test #5: A class not in package defined in boot module
175 // - should be loaded from the -Xbootclasspath/a without AppCDS
176 public static void testBootAppendClassWithoutAppCDS() throws Exception {
177 CDSOptions opts = (new CDSOptions())
178 .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
179 .setArchiveName(testArchiveName)
180 .addSuffix(MAIN_CLASS, "Test #5", BOOT_APPEND_CLASS, "true", "BOOT");
181
182 CDSTestUtils.runWithArchiveAndCheck(opts);
183 }
184
185
186 // Test #6: A shared class not in package defined in boot module that's
187 // archived from -Xbootclasspath/a
188 // - should be loaded from the archive by the bootstrap class loader
189 public static void testBootAppendClassWithAppCDS() throws Exception {
190 OutputAnalyzer output = TestCommon.exec(
212
213
214 // Test #8: A shared class in package defined in jimage app module that's
215 // archived from -Xbootclasspath/a
216 // - should not be loaded from the archive
217 public static void testBootAppendAppModuleClassWithAppCDS() throws Exception {
218 OutputAnalyzer output = TestCommon.exec(
219 appJar,
220 "-Xbootclasspath/a:" + bootAppendJar,
221 MAIN_CLASS,
222 "Test #8", APP_MODULE_CLASS, "false");
223 TestCommon.checkExec(output);
224 }
225
226
227 // Test #9: A class in excluded package defined in jimage app module
228 // - should be loaded from the -Xbootclasspath/a without AppCDS
229 public static void testBootAppendAppExcludeModuleClassWithoutAppCDS()
230 throws Exception {
231
232 CDSOptions opts = (new CDSOptions())
233 .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
234 "--limit-modules", "java.base")
235 .setArchiveName(testArchiveName)
236 .addSuffix(MAIN_CLASS, "Test #9", APP_MODULE_CLASS, "true", "BOOT");
237
238 CDSTestUtils.runWithArchiveAndCheck(opts);
239 }
240
241 // Test #10: A shared class in excluded package defined in jimage app module
242 // - should be loaded from the -Xbootclasspath/a with AppCDS
243 public static void testBootAppendAppExcludeModuleClassAppCDS() throws Exception {
244 OutputAnalyzer output = TestCommon.exec(
245 appJar,
246 "-Xbootclasspath/a:" + bootAppendJar,
247 "-XX:+TraceClassLoading",
248 "--limit-modules", "java.base",
249 MAIN_CLASS,
250 "Test #10", APP_MODULE_CLASS, "true", "BOOT");
251 TestCommon.checkExec(output);
252
253 if (!TestCommon.isUnableToMap(output))
254 output.shouldContain("[class,load] com.sun.tools.javac.Main2 source: shared objects file");
255 }
256 }
|
1 /*
2 * Copyright (c) 2015, 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 *
128
129 CDSTestUtils.runWithArchiveAndCheck(opts);
130 }
131
132 // Test #2: A shared class in package defined in boot module that's archived
133 // from -Xbootclasspath/a
134 // - should not be loaded by AppCDS
135 public static void testBootAppendModuleClassWithAppCDS() throws Exception {
136 OutputAnalyzer output = TestCommon.exec(
137 appJar,
138 "-Xbootclasspath/a:" + bootAppendJar,
139 MAIN_CLASS,
140 "Test #2", BOOT_APPEND_MODULE_CLASS, "false");
141 TestCommon.checkExec(output);
142 }
143
144
145 // Test #3: A class in excluded package defined in boot module
146 // - should be loaded from the -Xbootclasspath/a by the boot classloader
147 public static void testBootAppendExcludedModuleClassWithoutAppCDS() throws Exception {
148 TestCommon.run(
149 "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
150 "-Xlog:class+load=info",
151 "--limit-modules", "java.base",
152 MAIN_CLASS, "Test #3", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
153 .assertSilentlyDisabledCDS(out -> {
154 out.shouldHaveExitValue(0)
155 .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
156 });
157 }
158
159 // Test #4: A shared class in excluded package that's archived from
160 // -Xbootclasspath/a
161 // - should be loaded from the jar since AppCDS will be disabled with
162 // the --limit-modules option
163 public static void testBootAppendExcludedModuleClassWithAppCDS() throws Exception {
164 TestCommon.run(
165 "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
166 "-Xlog:class+load=info",
167 "--limit-modules", "java.base",
168 MAIN_CLASS,
169 "Test #4", BOOT_APPEND_MODULE_CLASS, "true", "BOOT")
170 .assertSilentlyDisabledCDS(out -> {
171 out.shouldHaveExitValue(0)
172 .shouldMatch(".class.load. sun.nio.cs.ext.MyClass source:.*bootAppend.jar");
173 });
174 }
175
176
177 // Test #5: A class not in package defined in boot module
178 // - should be loaded from the -Xbootclasspath/a without AppCDS
179 public static void testBootAppendClassWithoutAppCDS() throws Exception {
180 CDSOptions opts = (new CDSOptions())
181 .addPrefix("-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar)
182 .setArchiveName(testArchiveName)
183 .addSuffix(MAIN_CLASS, "Test #5", BOOT_APPEND_CLASS, "true", "BOOT");
184
185 CDSTestUtils.runWithArchiveAndCheck(opts);
186 }
187
188
189 // Test #6: A shared class not in package defined in boot module that's
190 // archived from -Xbootclasspath/a
191 // - should be loaded from the archive by the bootstrap class loader
192 public static void testBootAppendClassWithAppCDS() throws Exception {
193 OutputAnalyzer output = TestCommon.exec(
215
216
217 // Test #8: A shared class in package defined in jimage app module that's
218 // archived from -Xbootclasspath/a
219 // - should not be loaded from the archive
220 public static void testBootAppendAppModuleClassWithAppCDS() throws Exception {
221 OutputAnalyzer output = TestCommon.exec(
222 appJar,
223 "-Xbootclasspath/a:" + bootAppendJar,
224 MAIN_CLASS,
225 "Test #8", APP_MODULE_CLASS, "false");
226 TestCommon.checkExec(output);
227 }
228
229
230 // Test #9: A class in excluded package defined in jimage app module
231 // - should be loaded from the -Xbootclasspath/a without AppCDS
232 public static void testBootAppendAppExcludeModuleClassWithoutAppCDS()
233 throws Exception {
234
235 TestCommon.run(
236 "-Xbootclasspath/a:" + bootAppendJar, "-cp", appJar,
237 "-Xlog:class+load=info",
238 "--limit-modules", "java.base",
239 MAIN_CLASS, "Test #9", APP_MODULE_CLASS, "true", "BOOT")
240 .assertSilentlyDisabledCDS(out -> {
241 out.shouldHaveExitValue(0)
242 .shouldMatch(".class.load. com.sun.tools.javac.Main2 source:.*bootAppend.jar");
243 });
244 }
245
246 // Test #10: A shared class in excluded package defined in jimage app module
247 // - should be loaded from the -Xbootclasspath/a with AppCDS
248 public static void testBootAppendAppExcludeModuleClassAppCDS() throws Exception {
249 TestCommon.run(
250 "-cp", appJar, "-Xbootclasspath/a:" + bootAppendJar,
251 "-Xlog:class+load=info",
252 "--limit-modules", "java.base",
253 MAIN_CLASS, "Test #10", APP_MODULE_CLASS, "true", "BOOT")
254 .assertSilentlyDisabledCDS(out -> {
255 out.shouldHaveExitValue(0)
256 .shouldMatch(".class.load. com.sun.tools.javac.Main2 source:.*bootAppend.jar");
257 });
258 }
259 }
|