< prev index next >

jdk/test/java/lang/ClassLoader/EndorsedDirs.java

Print this page

        

*** 21,62 **** * questions. */ /* * @test ! * @bug 8060206 * @summary Endorsed standards and override mechanism is removed */ import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; public class EndorsedDirs { ! public static void main(String arg[]) throws Exception { String value = System.getProperty("java.endorsed.dirs"); if (value != null) { throw new RuntimeException("java.endorsed.dirs not removed: " + value); } ! fatalError("-Djava.endorsed.dirs=foo"); } ! static void fatalError(String... args) throws Exception { List<String> commands = new ArrayList<>(); String java = System.getProperty("java.home") + "/bin/java"; commands.add(java); for (String s : args) { commands.add(s); } String cpath = System.getProperty("test.classes", "."); commands.add("-cp"); commands.add(cpath); commands.add("EndorsedDirs"); ! ProcessBuilder processBuilder = new ProcessBuilder(commands); ! final Process process = processBuilder.start(); BufferedReader errorStream = new BufferedReader( new InputStreamReader(process.getErrorStream())); BufferedReader outStream = new BufferedReader( new InputStreamReader(process.getInputStream())); String errorLine; --- 21,98 ---- * questions. */ /* * @test ! * @bug 8060206 8067366 * @summary Endorsed standards and override mechanism is removed */ import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; + import java.util.stream.Collectors; public class EndorsedDirs { ! private static String[] VALUES = new String[] { ! null, ! "", ! "\"\"" ! }; ! public static void main(String... args) throws Exception { String value = System.getProperty("java.endorsed.dirs"); + System.out.format("java.endorsed.dirs = '%s'%n", value); + if (args.length > 0) { + int index = Integer.valueOf(args[0]); + String expectedValue = VALUES[index]; + if (!(expectedValue == value || + (value != null && value.isEmpty()) || + (expectedValue != null & expectedValue.equals(value)))) { + throw new RuntimeException("java.endorsed.dirs (" + + value + ") != " + expectedValue); + } + // launched by subprocess. + return; + } + if (value != null) { throw new RuntimeException("java.endorsed.dirs not removed: " + value); } ! fatalError(0, "-Djava.endorsed.dirs=foo"); ! start(0); ! start(1, "-Djava.endorsed.dirs="); ! start(2, "-Djava.endorsed.dirs=\"\""); } ! static ProcessBuilder newProcessBuilder(int testParam, String... args) throws Exception { List<String> commands = new ArrayList<>(); String java = System.getProperty("java.home") + "/bin/java"; commands.add(java); for (String s : args) { commands.add(s); } String cpath = System.getProperty("test.classes", "."); commands.add("-cp"); commands.add(cpath); commands.add("EndorsedDirs"); + commands.add(String.valueOf(testParam)); + + System.out.println("Testing " + commands.stream().collect(Collectors.joining(" "))); + return new ProcessBuilder(commands); + } ! static void start(int testParam, String... args) throws Exception { ! start(newProcessBuilder(testParam, args), false); ! } ! ! static void fatalError(int testParam, String... args) throws Exception { ! start(newProcessBuilder(testParam, args), true); ! } ! ! static void start(ProcessBuilder pb, boolean fatalError) throws Exception { ! final Process process = pb.start(); BufferedReader errorStream = new BufferedReader( new InputStreamReader(process.getErrorStream())); BufferedReader outStream = new BufferedReader( new InputStreamReader(process.getInputStream())); String errorLine;
*** 70,82 **** } errorLine = errors.toString(); System.err.println(errorLine); process.waitFor(1000, TimeUnit.MILLISECONDS); int exitStatus = process.exitValue(); if (exitStatus == 0) { ! throw new RuntimeException("Expect fatal error"); } if (!errorLine.contains("Could not create the Java Virtual Machine")) { throw new RuntimeException(errorLine); } } } --- 106,122 ---- } errorLine = errors.toString(); System.err.println(errorLine); process.waitFor(1000, TimeUnit.MILLISECONDS); int exitStatus = process.exitValue(); + if (fatalError) { if (exitStatus == 0) { ! throw new RuntimeException("Expected fatal error"); } if (!errorLine.contains("Could not create the Java Virtual Machine")) { throw new RuntimeException(errorLine); } + } else if (exitStatus != 0) { + throw new RuntimeException("Failed: " + errorLine); + } } }
< prev index next >