test/tools/launcher/ExecutionEnvironment.java

Print this page

        

*** 46,56 **** * b. LD_LIBRARY_PATH32 is ignored if set * 5. no extra symlink exists on Solaris ie. * jre/lib/$arch/libjvm.so -> client/libjvm.so * 6. Since 32-bit Solaris is no longer supported we continue to ensure that * the appropriate paths are ignored or used, additionally we also test to ! * ensure the 64-bit isadir exists and contains appopriate links. * TODO: * a. perhaps we need to add a test to audit all environment variables are * in pristine condition after the launch, there may be a few that the * launcher may add as implementation details. * b. add a pldd for solaris to ensure only one libjvm.so is linked --- 46,56 ---- * b. LD_LIBRARY_PATH32 is ignored if set * 5. no extra symlink exists on Solaris ie. * jre/lib/$arch/libjvm.so -> client/libjvm.so * 6. Since 32-bit Solaris is no longer supported we continue to ensure that * the appropriate paths are ignored or used, additionally we also test to ! * ensure the 64-bit isadir exists and contains appropriate links. * TODO: * a. perhaps we need to add a test to audit all environment variables are * in pristine condition after the launch, there may be a few that the * launcher may add as implementation details. * b. add a pldd for solaris to ensure only one libjvm.so is linked
*** 64,73 **** --- 64,74 ---- import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static java.nio.file.LinkOption.*; + import java.util.regex.Pattern; public class ExecutionEnvironment extends TestHelper { static final String LD_LIBRARY_PATH = TestHelper.isMacOSX ? "DYLD_LIBRARY_PATH"
*** 282,307 **** if (!isSolaris) return; verifySymLinks(JAVA_BIN); verifySymLinks(JAVA_JRE_BIN); } private void verifySymLinks(String bindir) throws IOException { File binDir = new File(bindir); System.err.println("verifying links in: " + bindir); File isaDir = new File(binDir, getArch()).getAbsoluteFile(); if (!isaDir.exists()) { throw new RuntimeException("dir: " + isaDir + " does not exist"); } try (DirectoryStream<Path> ds = Files.newDirectoryStream(binDir.toPath())) { for (Path p : ds) { ! if (Files.isDirectory(p, NOFOLLOW_LINKS)) continue; Path link = new File(isaDir, p.getFileName().toString()).toPath(); if (Files.isSymbolicLink(link)) { Path target = Files.readSymbolicLink(link); ! if (target.startsWith("..") && p.endsWith(target.getFileName())) continue; System.err.println("target:" + target); System.err.println("file:" + p); } throw new RuntimeException("could not find link to " + p); } --- 283,315 ---- if (!isSolaris) return; verifySymLinks(JAVA_BIN); verifySymLinks(JAVA_JRE_BIN); } + // exclude non-consequential binaries or scripts co-packaged in install + private Pattern symlinkExcludes = Pattern.compile(".*jvisualvm.*"); + private void verifySymLinks(String bindir) throws IOException { File binDir = new File(bindir); System.err.println("verifying links in: " + bindir); File isaDir = new File(binDir, getArch()).getAbsoluteFile(); if (!isaDir.exists()) { throw new RuntimeException("dir: " + isaDir + " does not exist"); } try (DirectoryStream<Path> ds = Files.newDirectoryStream(binDir.toPath())) { for (Path p : ds) { ! if (symlinkExcludes.matcher(p.toString()).matches() || ! Files.isDirectory(p, NOFOLLOW_LINKS)) { continue; + } Path link = new File(isaDir, p.getFileName().toString()).toPath(); if (Files.isSymbolicLink(link)) { Path target = Files.readSymbolicLink(link); ! if (target.startsWith("..") && p.endsWith(target.getFileName())) { ! // System.out.println(target + " OK"); continue; + } System.err.println("target:" + target); System.err.println("file:" + p); } throw new RuntimeException("could not find link to " + p); }