changeset in /hg/icedtea6: Add same jvm dirs support to jtreg.

Mark Wielaard mark at klomp.org
Sun Nov 23 09:17:46 PST 2008


changeset d1ff3aff9167 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?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