< 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             // No --module-path specified. --add-modules ALL-MODULE-PATH specified.
 133             String imageDir = "bug8189777-all-module-path";
 134             JImageGenerator.getJLinkTask()
 135                     .output(helper.createNewImageDir(imageDir))
 136                     .addMods("ALL-MODULE-PATH")
 137                     .call().assertSuccess();
 138         }
 139 
 140         {
 141             String moduleName = "bug8134651";
 142             JImageGenerator.getJLinkTask()
 143                     .modulePath(helper.defaultModulePath())
 144                     .output(helper.createNewImageDir(moduleName))
 145                     .addMods("leaf1")
 146                     .call().assertSuccess();
 147             JImageGenerator.getJLinkTask()
 148                     .modulePath(helper.defaultModulePath())
 149                     .addMods("leaf1")
 150                     .option("--output")
 151                     .call().assertFailure("Error: no value given for --output");
 152             JImageGenerator.getJLinkTask()
 153                     .modulePath("")
 154                     .output(helper.createNewImageDir(moduleName))
 155                     .addMods("leaf1")
 156                     .call().assertFailure("Error: no value given for --module-path");
 157             // do not include standard module path - should be added automatically
 158             JImageGenerator.getJLinkTask()
 159                     .modulePath(helper.defaultModulePath(false))
 160                     .output(helper.createNewImageDir(moduleName))
 161                     .addMods("leaf1")
 162                     .call().assertSuccess();
 163             // no --module-path. default sys mod path is assumed - but that won't contain 'leaf1' module
 164             JImageGenerator.getJLinkTask()
 165                     .output(helper.createNewImageDir(moduleName))
 166                     .addMods("leaf1")
 167                     .call().assertFailure("Error: Module leaf1 not found");
 168         }
 169 
 170         {
 171             String moduleName = "m"; // 8163382
 172             Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 173             JImageGenerator.getJLinkTask()
 174                     .modulePath(helper.defaultModulePath())
 175                     .output(helper.createNewImageDir(moduleName))
 176                     .addMods("m")
 177                     .call().assertSuccess();
 178             moduleName = "mod";
 179             jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
 180             JImageGenerator.getJLinkTask()
 181                     .modulePath(helper.defaultModulePath())
 182                     .output(helper.createNewImageDir(moduleName))
 183                     .addMods("m")
 184                     .call().assertSuccess();
 185         }
 186 
 187         {


< prev index next >