Mercurial > hg > release > icedtea7-2.0
changeset 1448:d1ff3aff9167
Add same jvm dirs support to jtreg.
2008-11-23 Mark Wielaard <mark@klomp.org>
* test/jtreg/com/sun/javatest/regtest/Main.java
(createParameters): Set same jvm safe dirs when non-null.
(getSameJVMSafeDirs): New method that reads samejvmsafe property
from TEST.ROOT.
(sameJVMSafeDirs): New private field.
* test/jtreg/com/sun/javatest/regtest/RegressionParameters.java
(SAME_JVM_SAFE_DIRS): New static final field.
(load): Read same jvm safe dirs.
(save0): Write same jvm safe dirs.
(getSameJVMSafeDirs): New method.
(setSameJVMSafeDirs): New method.
* test/jtreg/com/sun/javatest/regtest/RegressionScript.java
(run): Set testDirPath.
(isOtherJVM): Take same jvm safe into account.
(isSameJVMSafe): New method.
(testDirPath): New private field.
author | Mark Wielaard <mark@klomp.org> |
---|---|
date | Sun, 23 Nov 2008 17:12:40 +0100 |
parents | 9aae858397f9 |
children | b7ce0d293432 |
files | ChangeLog test/jtreg/com/sun/javatest/regtest/Main.java test/jtreg/com/sun/javatest/regtest/RegressionParameters.java test/jtreg/com/sun/javatest/regtest/RegressionScript.java |
diffstat | 4 files changed, 100 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Nov 21 18:35:27 2008 -0500 +++ b/ChangeLog Sun Nov 23 17:12:40 2008 +0100 @@ -1,3 +1,22 @@ +2008-11-23 Mark Wielaard <mark@klomp.org> + + * test/jtreg/com/sun/javatest/regtest/Main.java + (createParameters): Set same jvm safe dirs when non-null. + (getSameJVMSafeDirs): New method that reads samejvmsafe property + from TEST.ROOT. + (sameJVMSafeDirs): New private field. + * test/jtreg/com/sun/javatest/regtest/RegressionParameters.java + (SAME_JVM_SAFE_DIRS): New static final field. + (load): Read same jvm safe dirs. + (save0): Write same jvm safe dirs. + (getSameJVMSafeDirs): New method. + (setSameJVMSafeDirs): New method. + * test/jtreg/com/sun/javatest/regtest/RegressionScript.java + (run): Set testDirPath. + (isOtherJVM): Take same jvm safe into account. + (isSameJVMSafe): New method. + (testDirPath): New private field. + 2008-11-21 Deepak Bhole <dbhole@redhat.com> * IcedTeaPlugin.cc: Fix a mistake in previous commit re: integer overflow.
--- a/test/jtreg/com/sun/javatest/regtest/Main.java Fri Nov 21 18:35:27 2008 -0500 +++ b/test/jtreg/com/sun/javatest/regtest/Main.java Sun Nov 23 17:12:40 2008 +0100 @@ -29,6 +29,7 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; @@ -52,6 +53,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.TreeMap; import com.sun.javatest.CompositeFilter; @@ -1354,6 +1356,10 @@ if (ignoreKind != null) rp.setIgnoreKind(ignoreKind); + sameJVMSafeDirs = getSameJVMSafeDirs(ts); + if (sameJVMSafeDirs != null) + rp.setSameJVMSafeDirs(sameJVMSafeDirs); + return rp; } catch (TestSuite.Fault f) { f.printStackTrace(); @@ -1374,6 +1380,35 @@ } } + // Returns directory (prefix) for tests that are same jvm safe + // read from amejvmsafe property in TEST.ROOT file. Returning null + // means all tests are considered same jvm safe. null is returned + // when there is no samejvmsafe property, or there was a problem + // reading it, and when anything else than the test root was given + // as test file argument. Meaning that this only returns something + // non-null if anything was actually specified as same jvm safe and + // the whole test suite is being tested. + private List<String> getSameJVMSafeDirs(File testRoot) { + // Only use the same jvm safe dirs when running from the root. + if (testFileArgs.size() != 1 + || !canon(testFileArgs.iterator().next()).equals(canon(testRoot))) + return null; + + try { + File file = new File(testRoot, "TEST.ROOT"); + if (file.exists()) { + Properties testRootProps = new Properties(); + testRootProps.load(new FileInputStream(file)); + String safedirs = testRootProps.getProperty("samejvmsafe"); + if ((safedirs != null) && (safedirs.trim().length() > 0)) + return Arrays.asList(StringArray.splitWS(safedirs)); + } + } catch (IOException ioe) { + // Bah, then just assume everything is safe. + } + return null; + } + private String getRelativePath(File base, File f) { StringBuilder sb = new StringBuilder(); for ( ; f != null; f = f.getParentFile()) { @@ -1762,6 +1797,7 @@ // these args are jtreg extras private File baseDirArg; private boolean sameJVMFlag; + private List<String> sameJVMSafeDirs; private JDK jdk; private boolean guiFlag; private boolean reportOnlyFlag;
--- a/test/jtreg/com/sun/javatest/regtest/RegressionParameters.java Fri Nov 21 18:35:27 2008 -0500 +++ b/test/jtreg/com/sun/javatest/regtest/RegressionParameters.java Sun Nov 23 17:12:40 2008 +0100 @@ -139,6 +139,7 @@ private static final String TEST_JAVA_OPTIONS = ".testJavaOpts"; private static final String IGNORE = ".ignore"; private static final String RETAIN_ARGS = ".retain"; + private static final String SAME_JVM_SAFE_DIRS = ".samejvmsafedirs"; @Override public void load(Map data, boolean checkChecksum) throws Interview.Fault { @@ -182,6 +183,10 @@ v = (String) data.get(prefix + RETAIN_ARGS); if (v != null) setRetainArgs(Arrays.asList(StringArray.splitSeparator("\n", v))); + + v = (String) data.get(prefix + SAME_JVM_SAFE_DIRS); + if (v != null) + setSameJVMSafeDirs(Arrays.asList(StringArray.splitSeparator("\n", v))); } @SuppressWarnings("unchecked") @@ -204,6 +209,9 @@ if (jdk != null) data.put(prefix + JDK, jdk.getPath()); + if (sameJVMSafeDirs != null) + data.put(prefix + SAME_JVM_SAFE_DIRS, StringUtils.join(sameJVMSafeDirs, "\n")); + if (retainArgs != null) data.put(prefix + RETAIN_ARGS, StringUtils.join(retainArgs, "\n")); @@ -592,6 +600,18 @@ private Pattern retainFilesPattern; //--------------------------------------------------------------------- + + List<String> getSameJVMSafeDirs() { + return sameJVMSafeDirs; + } + + void setSameJVMSafeDirs(List<String> sameJVMSafeDirs) { + this.sameJVMSafeDirs= sameJVMSafeDirs; + } + + private List<String> sameJVMSafeDirs; + + //--------------------------------------------------------------------- private static final String PATHSEP = System.getProperty("path.separator"); private static final String LINESEP = System.getProperty("line.separator");
--- a/test/jtreg/com/sun/javatest/regtest/RegressionScript.java Fri Nov 21 18:35:27 2008 -0500 +++ b/test/jtreg/com/sun/javatest/regtest/RegressionScript.java Sun Nov 23 17:12:40 2008 +0100 @@ -69,6 +69,10 @@ public Status run(String[] argv, TestDescription td, TestEnvironment env) { if (!(env instanceof RegressionEnvironment)) throw new AssertionError(); + + String testFilePath = td.getRootRelativePath(); + int lastSlash = testFilePath.lastIndexOf('/'); + testDirPath = testFilePath.substring(0, lastSlash); regEnv = (RegressionEnvironment) env; params = regEnv.params; @@ -833,7 +837,26 @@ } boolean isOtherJVM() { - return params.isOtherJVM(); + boolean samevm = !params.isOtherJVM(); + if (samevm) + return !isSameJVMSafe(); + else + return true; + } + + // Whether the actions of this script can safely run in the same jvm. + // No same jvm safe dirs given means they are all assumed safe. + // If our actions come from a file in a subdir of a safe dir that is ok. + boolean isSameJVMSafe() { + List<String> dirs = params.getSameJVMSafeDirs(); + if (dirs == null) + return true; + + for (String dir : dirs) + if (testDirPath.startsWith(dir)) + return true; + + return false; } String getJavaProg() { @@ -921,5 +944,6 @@ private RegressionEnvironment regEnv; private RegressionParameters params; + private String testDirPath; }