These files need a standard block comment. Regards, Tim
[EMAIL PROTECTED] wrote: > Author: gshimansky > Date: Mon Sep 24 08:13:36 2007 > New Revision: 578848 > > URL: http://svn.apache.org/viewvc?rev=578848&view=rev > Log: > Added a regression test from HARMONY-4706 > > > Added: > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java (with > props) > > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java > (with props) > > Added: harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java?rev=578848&view=auto > ============================================================================== > --- harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java (added) > +++ harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java Mon Sep > 24 08:13:36 2007 > @@ -0,0 +1,71 @@ > +package org.apache.harmony.drlvm.tests.regression.h4706; > + > +import java.io.File; > +import java.io.InputStreamReader; > +import java.io.BufferedReader; > +import junit.framework.TestCase; > + > +/** > + * Runs VM in child process for the 'TestClass' and checks that it doesn't > + * crash and returns zero exitValue. > + * Child process for the test application is required because the crash > doesn't > + * reproduce in junit test. > + */ > +public class Test extends TestCase { > + > + final static String testClass = > + > "org.apache.harmony.drlvm.tests.regression.h4706.ThreadArrayInterrupt"; > + > + public static void main(String[] args) { > + (new Test()).test(); > + } > + > + public void test() { > + ProcessBuilder pb = new ProcessBuilder( > + System.getProperty("java.home") + File.separator + "bin" + > + File.separator+"java", > + "-XX:vm.assert_dialog=false", > + "-cp", > + System.getProperty("java.class.path"), > + testClass > + ); > + > + // merge stderr adn stdout for child VM process > + pb.redirectErrorStream(true); > + > + System.out.println("Command line for child VM:"); > + > + for (String arg : pb.command()) { > + System.out.println(" " + arg); > + } > + > + int exitValue = -1; > + > + try { > + System.out.println("Launching child VM..."); > + Process p = pb.start(); > + System.out.println("Child VM started."); > + > + BufferedReader childOut = new BufferedReader(new > InputStreamReader( > + p.getInputStream())); > + > + BufferedReader childErr = new BufferedReader(new > InputStreamReader( > + p.getErrorStream())); > + > + String outLine; > + > + while (null != (outLine = childOut.readLine())) { > + System.out.println("child-out> " + outLine); > + } > + > + System.out.println("Waiting for child VM process to finish..."); > + > + exitValue = p.waitFor(); > + System.out.println("Child VM finished. Exit value = " + > exitValue); > + } catch (Throwable exc) { > + exc.printStackTrace(); > + } > + > + assertTrue(exitValue == 0); > + } > +} > > Propchange: harmony/enhanced/drlvm/trunk/src/test/regression/H4706/Test.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Added: > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java?rev=578848&view=auto > ============================================================================== > --- > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java > (added) > +++ > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java > Mon Sep 24 08:13:36 2007 > @@ -0,0 +1,52 @@ > +package org.apache.harmony.drlvm.tests.regression.h4706; > + > +/** > + * Checks that interruption of several threads doesn't cause VM crash due to > + * race condition in thread manager implementation for thread interrupting. > + * First main thread creates and starts a number of test threads. > + * Second main thead interrupts all of the test threads. > + * Each of the test threads waits on the same monitor. > + */ > +public class ThreadArrayInterrupt { > + > + static final int threadNum = 32; > + static Object barrier = new Object(); > + > + public static void main(String[] args) { > + Thread[] threads = new Thread[threadNum]; > + > + synchronized (barrier) { > + System.out.println("starting threads..."); > + > + for (int i = 0; i < threadNum; i++) { > + threads[i] = new TestThread("Thread-" + i); > + threads[i].start(); > + } > + > + System.out.println("all threads started"); > + } > + > + System.out.println("Interrupting all threads..."); > + > + for (int i = 0; i < threadNum; i++) { > + threads[i].interrupt(); > + } > + } > + > + static class TestThread extends Thread { > + > + TestThread(String name) { > + super(name); > + } > + > + public void run() { > + synchronized (barrier) { > + try { > + barrier.wait(); > + } catch (InterruptedException e) { > + System.out.println("Interrupted: " + getName()); > + } > + } > + } > + } > +} > > Propchange: > harmony/enhanced/drlvm/trunk/src/test/regression/H4706/ThreadArrayInterrupt.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > >
