changeset in /hg/icedtea: Add same jvm dirs support to jtreg.
Mark Wielaard
mark at klomp.org
Thu Dec 4 06:11:22 PST 2008
changeset d1ff3aff9167 in /hg/icedtea
details: http://icedtea.classpath.org/hg/icedtea?cmd=changeset;node=d1ff3aff9167
description:
Add same jvm dirs support to jtreg.
2008-11-23 Mark Wielaard <mark at 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.
diffstat:
4 files changed, 100 insertions(+), 1 deletion(-)
ChangeLog | 19 +++++
test/jtreg/com/sun/javatest/regtest/Main.java | 36 ++++++++++
test/jtreg/com/sun/javatest/regtest/RegressionParameters.java | 20 +++++
test/jtreg/com/sun/javatest/regtest/RegressionScript.java | 26 ++++++-
diffs (200 lines):
diff -r 9aae858397f9 -r d1ff3aff9167 ChangeLog
--- 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-21 Deepak Bhole <dbhole at redhat
+2008-11-23 Mark Wielaard <mark at 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 at redhat.com>
* IcedTeaPlugin.cc: Fix a mistake in previous commit re: integer overflow.
diff -r 9aae858397f9 -r d1ff3aff9167 test/jtreg/com/sun/javatest/regtest/Main.java
--- 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.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.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 @@ public class Main {
if (ignoreKind != null)
rp.setIgnoreKind(ignoreKind);
+ sameJVMSafeDirs = getSameJVMSafeDirs(ts);
+ if (sameJVMSafeDirs != null)
+ rp.setSameJVMSafeDirs(sameJVMSafeDirs);
+
return rp;
} catch (TestSuite.Fault f) {
f.printStackTrace();
@@ -1372,6 +1378,35 @@ public class Main {
} catch (IOException e) {
return file.getAbsoluteFile();
}
+ }
+
+ // 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) {
@@ -1762,6 +1797,7 @@ public class Main {
// these args are jtreg extras
private File baseDirArg;
private boolean sameJVMFlag;
+ private List<String> sameJVMSafeDirs;
private JDK jdk;
private boolean guiFlag;
private boolean reportOnlyFlag;
diff -r 9aae858397f9 -r d1ff3aff9167 test/jtreg/com/sun/javatest/regtest/RegressionParameters.java
--- 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 @@ public class RegressionParameters
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 @@ public class RegressionParameters
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")
@@ -203,6 +208,9 @@ public class RegressionParameters
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 @@ public class RegressionParameters
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");
diff -r 9aae858397f9 -r d1ff3aff9167 test/jtreg/com/sun/javatest/regtest/RegressionScript.java
--- 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 class RegressionScript extends Sc
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 @@ public class RegressionScript extends Sc
}
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 @@ public class RegressionScript extends Sc
private RegressionEnvironment regEnv;
private RegressionParameters params;
+ private String testDirPath;
}
More information about the distro-pkg-dev
mailing list