< prev index next >

test/hotspot/jtreg/vmTestbase/ExecDriver.java

Print this page




  85         if (java) {
  86             String[] oldArgs = args;
  87             String[] testJavaOpts = Utils.getTestJavaOpts();
  88             if (testJavaOpts.length > 0) {
  89                 args = new String[args.length + testJavaOpts.length];
  90                 // bin/java goes before options
  91                 args[0] = oldArgs[0];
  92                 // then external java options
  93                 System.arraycopy(testJavaOpts, 0, args, 1, testJavaOpts.length);
  94                 // and then options and args from a test
  95                 System.arraycopy(oldArgs, 1, args, 1 + testJavaOpts.length, oldArgs.length - 1);
  96             }
  97         }
  98         String command = Arrays.toString(args);
  99         System.out.println("exec " + command);
 100 
 101         ProcessBuilder pb = new ProcessBuilder(args);
 102         // adding jvm.so to library path
 103         if (launcher) {
 104             Path dir = Paths.get(Utils.TEST_JDK);

 105             String name;
 106             if (Platform.isWindows()) {
 107                 dir = dir.resolve("bin")
 108                          .resolve(variant())
 109                          .toAbsolutePath();





 110                 name = "PATH";
 111             } else {
 112                 dir = dir.resolve("lib")
 113                          .resolve(variant())
 114                          .toAbsolutePath();

 115                 name = Platform.isOSX() ? "DYLD_LIBRARY_PATH" : "LD_LIBRARY_PATH";
 116             }
 117 
 118             System.out.println("  with " + name + " = " +
 119                     pb.environment()
 120                       .merge(name, dir.toString(), (x, y) -> y + File.pathSeparator + x));
 121             System.out.println("  with CLASSPATH = " +
 122                     pb.environment()
 123                       .put("CLASSPATH", Utils.TEST_CLASS_PATH));
 124         }
 125         Process p = pb.start();
 126         // inheritIO does not work as expected for @run driver
 127         new Thread(() -> copy(p.getInputStream(), System.out)).start();
 128         new Thread(() -> copy(p.getErrorStream(), System.out)).start();
 129         int exitCode = p.waitFor();
 130 
 131         if (exitCode != 0 && (!java || exitCode != 95)) {
 132             throw new AssertionError(command + " exit code is " + exitCode);
 133         }
 134     }
 135 
 136     private static String variant() {
 137         if (Platform.isServer()) {
 138             return "server";
 139         } else if (Platform.isClient()) {
 140             return "client";




  85         if (java) {
  86             String[] oldArgs = args;
  87             String[] testJavaOpts = Utils.getTestJavaOpts();
  88             if (testJavaOpts.length > 0) {
  89                 args = new String[args.length + testJavaOpts.length];
  90                 // bin/java goes before options
  91                 args[0] = oldArgs[0];
  92                 // then external java options
  93                 System.arraycopy(testJavaOpts, 0, args, 1, testJavaOpts.length);
  94                 // and then options and args from a test
  95                 System.arraycopy(oldArgs, 1, args, 1 + testJavaOpts.length, oldArgs.length - 1);
  96             }
  97         }
  98         String command = Arrays.toString(args);
  99         System.out.println("exec " + command);
 100 
 101         ProcessBuilder pb = new ProcessBuilder(args);
 102         // adding jvm.so to library path
 103         if (launcher) {
 104             Path dir = Paths.get(Utils.TEST_JDK);
 105             String value;
 106             String name;
 107             if (Platform.isWindows()) {
 108                 value = dir.resolve("bin")
 109                            .resolve(variant())
 110                            .toAbsolutePath()
 111                            .toString();
 112                 value += File.pathSeparator;
 113                 value += dir.resolve("bin")
 114                             .toAbsolutePath()
 115                             .toString();
 116                 name = "PATH";
 117             } else {
 118                 value = dir.resolve("lib")
 119                            .resolve(variant())
 120                            .toAbsolutePath()
 121                            .toString();
 122                 name = Platform.isOSX() ? "DYLD_LIBRARY_PATH" : "LD_LIBRARY_PATH";
 123             }
 124 
 125             System.out.println("  with " + name + " = " +
 126                     pb.environment()
 127                       .merge(name, value, (x, y) -> y + File.pathSeparator + x));
 128             System.out.println("  with CLASSPATH = " +
 129                     pb.environment()
 130                       .put("CLASSPATH", Utils.TEST_CLASS_PATH));
 131         }
 132         Process p = pb.start();
 133         // inheritIO does not work as expected for @run driver
 134         new Thread(() -> copy(p.getInputStream(), System.out)).start();
 135         new Thread(() -> copy(p.getErrorStream(), System.out)).start();
 136         int exitCode = p.waitFor();
 137 
 138         if (exitCode != 0 && (!java || exitCode != 95)) {
 139             throw new AssertionError(command + " exit code is " + exitCode);
 140         }
 141     }
 142 
 143     private static String variant() {
 144         if (Platform.isServer()) {
 145             return "server";
 146         } else if (Platform.isClient()) {
 147             return "client";


< prev index next >