test/testlibrary/com/oracle/java/testlibrary/JDKToolFinder.java
Print this page
rev 5217 : 8014905: [TESTBUG] Some hotspot tests should be updated to divide test jdk and compile jdk
Summary: Change JDKToolFinder to look in compile.jdk if the executable cannot be found in test.jdk
Reviewed-by:
*** 21,69 ****
* questions.
*/
package com.oracle.java.testlibrary;
! import java.io.File;
public final class JDKToolFinder {
private JDKToolFinder() {
}
/**
* Returns the full path to an executable in jdk/bin based on System
! * property {@code compile.jdk} (set by jtreg test suite)
*
* @return Full path to an executable in jdk/bin
*/
public static String getJDKTool(String tool) {
! String binPath = System.getProperty("compile.jdk");
! if (binPath == null) {
! throw new RuntimeException("System property 'compile.jdk' not set. "
! + "This property is normally set by jtreg. "
! + "When running test separately, set this property using "
! + "'-Dcompile.jdk=/path/to/jdk'.");
}
- binPath += File.separatorChar + "bin" + File.separatorChar + tool;
! return binPath;
}
/**
! * Returns the full path to an executable in <current jdk>/bin based
! * on System property {@code test.jdk} (set by jtreg test suite)
*
* @return Full path to an executable in jdk/bin
*/
! public static String getCurrentJDKTool(String tool) {
! String binPath = System.getProperty("test.jdk");
! if (binPath == null) {
! throw new RuntimeException("System property 'test.jdk' not set. "
! + "This property is normally set by jtreg. "
! + "When running test separately, set this property using "
! + "'-Dtest.jdk=/path/to/jdk'.");
}
- binPath += File.separatorChar + "bin" + File.separatorChar + tool;
! return binPath;
}
}
--- 21,106 ----
* questions.
*/
package com.oracle.java.testlibrary;
! import java.io.FileNotFoundException;
! import java.nio.file.Path;
! import java.nio.file.Paths;
public final class JDKToolFinder {
private JDKToolFinder() {
}
/**
* Returns the full path to an executable in jdk/bin based on System
! * property {@code test.jdk} or {@code compile.jdk} (both are set by the jtreg test suite)
*
* @return Full path to an executable in jdk/bin
*/
public static String getJDKTool(String tool) {
!
! // First try to find the executable in test.jdk
! try {
! return getTool(tool, "test.jdk");
! } catch (FileNotFoundException e) {
!
! }
!
! // Now see if it's available in compile.jdk
! try {
! return getTool(tool, "compile.jdk");
! } catch (FileNotFoundException e) {
! throw new RuntimeException("Failed to find " + tool +
! ", looked in test.jdk (" + System.getProperty("test.jdk") +
! ") and compile.jdk (" + System.getProperty("compile.jdk") + ")");
! }
}
! /**
! * Returns the full path to an executable in jdk/bin based on System
! * property {@code compile.jdk}
! *
! * @return Full path to an executable in jdk/bin
! */
! public static String getCompileJDKTool(String tool) {
! try {
! return getTool(tool, "compile.jdk");
! } catch (FileNotFoundException e) {
! throw new RuntimeException(e);
}
+ }
+
/**
! * Returns the full path to an executable in jdk/bin based on System
! * property {@code test.jdk}
*
* @return Full path to an executable in jdk/bin
*/
! public static String getTestJDKTool(String tool) {
! try {
! return getTool(tool, "test.jdk");
! } catch (FileNotFoundException e) {
! throw new RuntimeException(e);
! }
! }
!
! private static String getTool(String tool, String property) throws FileNotFoundException {
! String jdkPath = System.getProperty(property);
!
! if (jdkPath == null) {
! throw new RuntimeException(
! "System property '" + property + "' not set. This property is normally set by jtreg. "
! + "When running test separately, set this property using '-D" + property + "=/path/to/jdk'.");
! }
!
! Path toolName = Paths.get("bin", tool + (Platform.isWindows() ? ".exe" : ""));
!
! Path jdkTool = Paths.get(jdkPath, toolName.toString());
! if (!jdkTool.toFile().exists()) {
! throw new FileNotFoundException("Could not find file " + jdkTool.toAbsolutePath());
}
! return jdkTool.toAbsolutePath().toString();
}
}