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);
}