< prev index next >

test/jdk/tools/jlink/JLinkTest.java

Print this page




  25 import java.io.PrintWriter;
  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  * @author Jean-Francois Denise
  46  * @library ../lib
  47  * @modules java.base/jdk.internal.jimage
  48  *          jdk.jdeps/com.sun.tools.classfile
  49  *          jdk.jlink/jdk.tools.jlink.internal
  50  *          jdk.jlink/jdk.tools.jlink.plugin
  51  *          jdk.jlink/jdk.tools.jimage
  52  *          jdk.compiler
  53  * @build tests.*
  54  * @run main/othervm -Xmx1g JLinkTest
  55  */
  56 public class JLinkTest {
  57     static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
  58         .orElseThrow(() ->
  59             new RuntimeException("jlink tool not found")
  60         );
  61 
  62     // number of built-in plugins from jdk.jlink module
  63     private static int getNumJlinkPlugins() {
  64         ModuleDescriptor desc = Plugin.class.getModule().getDescriptor();


  89             List<Plugin> builtInPlugins = new ArrayList<>();
  90             builtInPlugins.addAll(PluginRepository.getPlugins(ModuleLayer.boot()));
  91             totalPlugins = builtInPlugins.size();
  92             // actual num. of plugins loaded from jdk.jlink module
  93             int actualJLinkPlugins = 0;
  94             for (Plugin p : builtInPlugins) {
  95                 p.getState();
  96                 p.getType();
  97                 if (isOfJLinkModule(p)) {
  98                     actualJLinkPlugins++;
  99                 }
 100             }
 101             if (expectedJLinkPlugins != actualJLinkPlugins) {
 102                 throw new AssertionError("Actual plugins loaded from jdk.jlink: " +
 103                         actualJLinkPlugins + " which doesn't match expected number : " +
 104                         expectedJLinkPlugins);
 105             }
 106         }
 107 
 108         {






















 109             String moduleName = "bug8134651";
 110             JImageGenerator.getJLinkTask()
 111                     .modulePath(helper.defaultModulePath())
 112                     .output(helper.createNewImageDir(moduleName))
 113                     .addMods("leaf1")
 114                     .call().assertSuccess();
 115             JImageGenerator.getJLinkTask()
 116                     .modulePath(helper.defaultModulePath())
 117                     .addMods("leaf1")
 118                     .option("--output")
 119                     .call().assertFailure("Error: no value given for --output");
 120             JImageGenerator.getJLinkTask()
 121                     .modulePath("")
 122                     .output(helper.createNewImageDir(moduleName))
 123                     .addMods("leaf1")
 124                     .call().assertFailure("Error: no value given for --module-path");











 125         }
 126 
 127         {
 128             String moduleName = "m"; // 8163382
 129             Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 130             JImageGenerator.getJLinkTask()
 131                     .modulePath(helper.defaultModulePath())
 132                     .output(helper.createNewImageDir(moduleName))
 133                     .addMods("m")
 134                     .call().assertSuccess();
 135             moduleName = "mod";
 136             jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 137             JImageGenerator.getJLinkTask()
 138                     .modulePath(helper.defaultModulePath())
 139                     .output(helper.createNewImageDir(moduleName))
 140                     .addMods("m")
 141                     .call().assertSuccess();
 142         }
 143 
 144         {




  25 import java.io.PrintWriter;
  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  * @library ../lib
  48  * @modules java.base/jdk.internal.jimage
  49  *          jdk.jdeps/com.sun.tools.classfile
  50  *          jdk.jlink/jdk.tools.jlink.internal
  51  *          jdk.jlink/jdk.tools.jlink.plugin
  52  *          jdk.jlink/jdk.tools.jimage
  53  *          jdk.compiler
  54  * @build tests.*
  55  * @run main/othervm -Xmx1g JLinkTest
  56  */
  57 public class JLinkTest {
  58     static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
  59         .orElseThrow(() ->
  60             new RuntimeException("jlink tool not found")
  61         );
  62 
  63     // number of built-in plugins from jdk.jlink module
  64     private static int getNumJlinkPlugins() {
  65         ModuleDescriptor desc = Plugin.class.getModule().getDescriptor();


  90             List<Plugin> builtInPlugins = new ArrayList<>();
  91             builtInPlugins.addAll(PluginRepository.getPlugins(ModuleLayer.boot()));
  92             totalPlugins = builtInPlugins.size();
  93             // actual num. of plugins loaded from jdk.jlink module
  94             int actualJLinkPlugins = 0;
  95             for (Plugin p : builtInPlugins) {
  96                 p.getState();
  97                 p.getType();
  98                 if (isOfJLinkModule(p)) {
  99                     actualJLinkPlugins++;
 100                 }
 101             }
 102             if (expectedJLinkPlugins != actualJLinkPlugins) {
 103                 throw new AssertionError("Actual plugins loaded from jdk.jlink: " +
 104                         actualJLinkPlugins + " which doesn't match expected number : " +
 105                         expectedJLinkPlugins);
 106             }
 107         }
 108 
 109         {
 110             // No --module-path specified. $JAVA_HOME/jmods should be assumed.
 111             // The following should succeed as it uses only system modules.
 112             String imageDir = "bug818977-no-modulepath";
 113             JImageGenerator.getJLinkTask()
 114                     .output(helper.createNewImageDir(imageDir))
 115                     .addMods("jdk.scripting.nashorn")
 116                     .call().assertSuccess();
 117         }
 118 
 119         {
 120             // invalid --module-path specified. java.base not found it it.
 121             // $JAVA_HOME/jmods should be added automatically.
 122             // The following should succeed as it uses only system modules.
 123             String imageDir = "bug8189777-invalid-modulepath";
 124             JImageGenerator.getJLinkTask()
 125                     .modulePath("does_not_exist_path")
 126                     .output(helper.createNewImageDir(imageDir))
 127                     .addMods("jdk.scripting.nashorn")
 128                     .call().assertSuccess();
 129         }
 130 
 131         {
 132             String moduleName = "bug8134651";
 133             JImageGenerator.getJLinkTask()
 134                     .modulePath(helper.defaultModulePath())
 135                     .output(helper.createNewImageDir(moduleName))
 136                     .addMods("leaf1")
 137                     .call().assertSuccess();
 138             JImageGenerator.getJLinkTask()
 139                     .modulePath(helper.defaultModulePath())
 140                     .addMods("leaf1")
 141                     .option("--output")
 142                     .call().assertFailure("Error: no value given for --output");
 143             JImageGenerator.getJLinkTask()
 144                     .modulePath("")
 145                     .output(helper.createNewImageDir(moduleName))
 146                     .addMods("leaf1")
 147                     .call().assertFailure("Error: no value given for --module-path");
 148             // do not include standard module path - should be added automatically
 149             JImageGenerator.getJLinkTask()
 150                     .modulePath(helper.defaultModulePath(false))
 151                     .output(helper.createNewImageDir(moduleName))
 152                     .addMods("leaf1")
 153                     .call().assertSuccess();
 154             // no --module-path. default sys mod path is assumed - but that won't contain 'leaf1' module
 155             JImageGenerator.getJLinkTask()
 156                     .output(helper.createNewImageDir(moduleName))
 157                     .addMods("leaf1")
 158                     .call().assertFailure("Error: Module leaf1 not found");
 159         }
 160 
 161         {
 162             String moduleName = "m"; // 8163382
 163             Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 164             JImageGenerator.getJLinkTask()
 165                     .modulePath(helper.defaultModulePath())
 166                     .output(helper.createNewImageDir(moduleName))
 167                     .addMods("m")
 168                     .call().assertSuccess();
 169             moduleName = "mod";
 170             jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 171             JImageGenerator.getJLinkTask()
 172                     .modulePath(helper.defaultModulePath())
 173                     .output(helper.createNewImageDir(moduleName))
 174                     .addMods("m")
 175                     .call().assertSuccess();
 176         }
 177 
 178         {


< prev index next >