You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by km...@apache.org on 2008/03/14 22:09:47 UTC
svn commit: r637266 - in
/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests:
harness/MultiTest.java util/TestUtil.java util/ThreadDump.java
util/build.xml util/derby_tests.policy
Author: kmarsden
Date: Fri Mar 14 14:09:45 2008
New Revision: 637266
URL: http://svn.apache.org/viewvc?rev=637266&view=rev
Log:
DERBY-3503 Change stress.multi to dump thread stacks before killing off testers with jdk 1.5 and higher
port from trunk. Had to change ThreadDump.java to build with jdk 1.6 since
we don't have a jdk15.compilepath for 10.3
Added:
db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/ThreadDump.java
- copied unchanged from r635625, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ThreadDump.java
Modified:
db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/harness/MultiTest.java
db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/build.xml
db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/derby_tests.policy
Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/harness/MultiTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/harness/MultiTest.java?rev=637266&r1=637265&r2=637266&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/harness/MultiTest.java (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/harness/MultiTest.java Fri Mar 14 14:09:45 2008
@@ -34,6 +34,8 @@
import org.apache.derby.iapi.tools.i18n.LocalizedResource;
import org.apache.derby.iapi.tools.i18n.LocalizedOutput;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+
/**
* MultiTest is a multiuser test harness. It
@@ -285,7 +287,9 @@
/*
** Now stop everyone that hasn't already stopped.
+ * First get thread dumps for jdk 15.
*/
+ TestUtil.dumpAllStackTracesIfSupported(log);
for (i = 0; i < MAX_WAIT_FOR_COMPLETION && (tg.isDestroyed() == false ); i++)
{
Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java?rev=637266&r1=637265&r2=637266&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java Fri Mar 14 14:09:45 2008
@@ -39,6 +39,7 @@
import org.apache.derby.iapi.reference.JDBC30Translation;
import org.apache.derby.iapi.services.info.JVMInfo;
+import org.apache.derbyTesting.functionTests.harness.JavaVersionHolder;
import org.apache.derbyTesting.functionTests.harness.RunTest;
@@ -914,5 +915,57 @@
return false;
}
+ /**
+ * For JDK 1.5 or higher print all stack traces to the
+ * specified PrintWriter.
+ *
+ * @param log PrintWriter to print to
+ */
+ public static void dumpAllStackTracesIfSupported(PrintWriter log)
+ {
+ try {
+ String version = (String) AccessController.doPrivileged
+ (new java.security.PrivilegedAction(){
+ public Object run(){
+ return System.getProperty("java.version");
+ }
+ }
+ );
+
+ JavaVersionHolder j= new JavaVersionHolder(version);
+
+ if (j.atLeast(1,5)){
+ Class c = Class.forName("org.apache.derbyTesting.functionTests.util.ThreadDump");
+ final Method m = c.getMethod("getStackDumpString",new Class[] {});
+
+ String dump;
+ try {
+ dump = (String) AccessController.doPrivileged
+ (new PrivilegedExceptionAction(){
+ public Object run() throws
+ IllegalArgumentException,
+ IllegalAccessException,
+ InvocationTargetException{
+ return m.invoke(null, null);
+ }
+ }
+ );
+ } catch (PrivilegedActionException e) {
+ throw e.getException();
+ }
+ log.println(dump);
+ }
+ }
+ catch (Exception e){
+ // if we get an exception trying to get a thread dump. Just print it to the log and continue.
+ log.println("Error trying to dump thread stack traces");
+ if (e instanceof InvocationTargetException)
+ ((InvocationTargetException) e).getTargetException().printStackTrace(log);
+ else
+ e.printStackTrace(log);
+ }
+
+ }
}
+
Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/build.xml?rev=637266&r1=637265&r2=637266&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/build.xml (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/build.xml Fri Mar 14 14:09:45 2008
@@ -65,6 +65,7 @@
<include name="${this.dir}/streams/*.java"/>
<include name="${this.dir}/corruptio/*.java"/>
<exclude name="${this.dir}/XATestUtil.java"/>
+ <exclude name="${this.dir}/ThreadDump.java"/>
</javac>
<javac
source="1.4"
@@ -84,6 +85,27 @@
</classpath>
<!--exclude name=""/-->
<include name="${this.dir}/XATestUtil.java"/>
+ </javac>
+
+ <javac
+ source="1.5"
+ target="1.5"
+ fork="yes"
+ executable="${jdk16}/bin/javac"
+ bootclasspath="${empty}"
+ nowarn="on"
+ debug="true"
+ depend="${depend}"
+ deprecation="${deprecation}"
+ optimize="${optimize}"
+ proceed="${proceed}"
+ verbose="${verbose}"
+ srcdir="${derby.testing.src.dir}"
+ destdir="${out.dir}">
+ <classpath>
+ <pathelement path="${java16compile.classpath}"/>
+ </classpath>
+ <include name="${this.dir}/ThreadDump.java"/>
</javac>
</target>
Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/derby_tests.policy
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/derby_tests.policy?rev=637266&r1=637265&r2=637266&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/derby_tests.policy (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/util/derby_tests.policy Fri Mar 14 14:09:45 2008
@@ -157,7 +157,13 @@
// streams. Currently the nist suite runs with useprocess=false.
permission java.lang.RuntimePermission "setSecurityManager";
permission java.security.SecurityPermission "getPolicy";
- permission java.lang.RuntimePermission "setIO";
+ permission java.lang.RuntimePermission "setIO";
+
+ // These permissions are needed by stress.multi to dump the thread stack
+ // traces upon failure.
+ permission java.lang.RuntimePermission "getStackTrace";
+ permission java.lang.RuntimePermission "modifyThreadGroup";
+
};
//
@@ -196,6 +202,12 @@
// streams. Currently the nist suite runs with useprocess=false.
permission java.lang.RuntimePermission "setSecurityManager";
permission java.lang.RuntimePermission "setIO";
+
+ // These permissions are needed by stress.multi to dump the thread stack
+ // traces upon failure.
+ permission java.lang.RuntimePermission "getStackTrace";
+ permission java.lang.RuntimePermission "modifyThreadGroup";
+
};
// JUnit jar file tries to read junit.properties in the user's