26 import java.io.StringWriter;
27 import java.lang.module.ModuleDescriptor;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.spi.ToolProvider;
35 import java.util.stream.Stream;
36
37 import jdk.tools.jlink.plugin.Plugin;
38 import jdk.tools.jlink.internal.PluginRepository;
39 import tests.Helper;
40 import tests.JImageGenerator;
41
42 /*
43 * @test
44 * @summary Test image creation
45 * @bug 8189777
46 * @author Jean-Francois Denise
47 * @requires (vm.compMode != "Xcomp" & os.maxMemory >= 2g)
48 * @library ../lib
49 * @modules java.base/jdk.internal.jimage
50 * jdk.jdeps/com.sun.tools.classfile
51 * jdk.jlink/jdk.tools.jlink.internal
52 * jdk.jlink/jdk.tools.jlink.plugin
53 * jdk.jlink/jdk.tools.jimage
54 * jdk.compiler
55 * @build tests.*
56 * @run main/othervm -Xmx1g JLinkTest
57 */
58 public class JLinkTest {
59 static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
60 .orElseThrow(() ->
61 new RuntimeException("jlink tool not found")
62 );
63
64 // number of built-in plugins from jdk.jlink module
65 private static int getNumJlinkPlugins() {
259 helper.generateDefaultJModule(moduleName, "composite2");
260 String[] res = {".jcov", "/META-INF/"};
261 String[] files = {Helper.getDebugSymbolsExtension()};
262 Path imageDir = helper.generateDefaultImage(userOptions, moduleName).assertSuccess();
263 helper.checkImage(imageDir, moduleName, res, files);
264 }
265
266 // filter out + Skip debug + compress with filter + sort resources
267 {
268 String[] userOptions2 = {"--compress=2:compress-filter=^/java.base/*",
269 "--strip-debug", "--exclude-resources",
270 "*.jcov, */META-INF/*", "--order-resources",
271 "*/module-info.class,/sortcomposite2/*,*/javax/management/*"};
272 String moduleName = "excludezipfilterskipdebugcomposite2";
273 helper.generateDefaultJModule(moduleName, "composite2");
274 String[] res = {".jcov", "/META-INF/"};
275 Path imageDir = helper.generateDefaultImage(userOptions2, moduleName).assertSuccess();
276 helper.checkImage(imageDir, moduleName, res, null);
277 }
278
279 // default compress
280 {
281 testCompress(helper, "compresscmdcomposite2", "--compress", "2");
282 }
283
284 {
285 testCompress(helper, "compressfiltercmdcomposite2",
286 "--compress=2:filter=^/java.base/java/lang/*");
287 }
288
289 // compress 0
290 {
291 testCompress(helper, "compress0filtercmdcomposite2",
292 "--compress=0:filter=^/java.base/java/lang/*");
293 }
294
295 // compress 1
296 {
297 testCompress(helper, "compress1filtercmdcomposite2",
298 "--compress=1:filter=^/java.base/java/lang/*");
|
26 import java.io.StringWriter;
27 import java.lang.module.ModuleDescriptor;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.spi.ToolProvider;
35 import java.util.stream.Stream;
36
37 import jdk.tools.jlink.plugin.Plugin;
38 import jdk.tools.jlink.internal.PluginRepository;
39 import tests.Helper;
40 import tests.JImageGenerator;
41
42 /*
43 * @test
44 * @summary Test image creation
45 * @bug 8189777
46 * @bug 8194922
47 * @author Jean-Francois Denise
48 * @requires (vm.compMode != "Xcomp" & os.maxMemory >= 2g)
49 * @library ../lib
50 * @modules java.base/jdk.internal.jimage
51 * jdk.jdeps/com.sun.tools.classfile
52 * jdk.jlink/jdk.tools.jlink.internal
53 * jdk.jlink/jdk.tools.jlink.plugin
54 * jdk.jlink/jdk.tools.jimage
55 * jdk.compiler
56 * @build tests.*
57 * @run main/othervm -Xmx1g JLinkTest
58 */
59 public class JLinkTest {
60 static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
61 .orElseThrow(() ->
62 new RuntimeException("jlink tool not found")
63 );
64
65 // number of built-in plugins from jdk.jlink module
66 private static int getNumJlinkPlugins() {
260 helper.generateDefaultJModule(moduleName, "composite2");
261 String[] res = {".jcov", "/META-INF/"};
262 String[] files = {Helper.getDebugSymbolsExtension()};
263 Path imageDir = helper.generateDefaultImage(userOptions, moduleName).assertSuccess();
264 helper.checkImage(imageDir, moduleName, res, files);
265 }
266
267 // filter out + Skip debug + compress with filter + sort resources
268 {
269 String[] userOptions2 = {"--compress=2:compress-filter=^/java.base/*",
270 "--strip-debug", "--exclude-resources",
271 "*.jcov, */META-INF/*", "--order-resources",
272 "*/module-info.class,/sortcomposite2/*,*/javax/management/*"};
273 String moduleName = "excludezipfilterskipdebugcomposite2";
274 helper.generateDefaultJModule(moduleName, "composite2");
275 String[] res = {".jcov", "/META-INF/"};
276 Path imageDir = helper.generateDefaultImage(userOptions2, moduleName).assertSuccess();
277 helper.checkImage(imageDir, moduleName, res, null);
278 }
279
280 // module-info.class should not be excluded
281 {
282 String[] userOptions = { "--exclude-resources", "/jdk_8194922/module-info.class" };
283 String moduleName = "jdk_8194922";
284 helper.generateDefaultJModule(moduleName);
285 helper.generateDefaultImage(userOptions, moduleName).
286 assertFailure("Cannot exclude /jdk_8194922/module-info.class");
287 }
288
289 // default compress
290 {
291 testCompress(helper, "compresscmdcomposite2", "--compress", "2");
292 }
293
294 {
295 testCompress(helper, "compressfiltercmdcomposite2",
296 "--compress=2:filter=^/java.base/java/lang/*");
297 }
298
299 // compress 0
300 {
301 testCompress(helper, "compress0filtercmdcomposite2",
302 "--compress=0:filter=^/java.base/java/lang/*");
303 }
304
305 // compress 1
306 {
307 testCompress(helper, "compress1filtercmdcomposite2",
308 "--compress=1:filter=^/java.base/java/lang/*");
|