diff --git a/build.xml b/build.xml
index 46b60596f..593503c94 100644
--- a/build.xml
+++ b/build.xml
@@ -433,6 +433,7 @@
+
+
+
+
+
+
+
+
+
+
+ offline=${offline}
+
+
-
+
-
-
+
+
0){
- System.err.println("ERROR:");
- System.err.println(err);
- }
- }
- return retcode;
- }
-
- public void testNoTimeOut() throws Exception {
- Process process = getProcess(TIME_OUT/2);
- watchdog.start(process);
- int retCode = waitForEnd(process);
- assertTrue("process should not have been killed", !watchdog.killedProcess());
- assertEquals(0, retCode);
- }
-
- // test that the watchdog ends the process
- public void testTimeOut() throws Exception {
- Process process = getProcess(TIME_OUT*2);
- long now = System.currentTimeMillis();
- watchdog.start(process);
- int retCode = process.waitFor();
- long elapsed = System.currentTimeMillis() - now;
- assertTrue("process should have been killed", watchdog.killedProcess());
- // assertTrue("return code is invalid: " + retCode, retCode!=0);
- assertTrue("elapse time of "+elapsed+" ms is less than timeout value of "+TIME_OUT_TEST+" ms", elapsed >= TIME_OUT_TEST);
- assertTrue("elapse time of "+elapsed+" ms is greater than run value of "+(TIME_OUT*2)+" ms", elapsed < TIME_OUT*2);
- }
-
- // test a process that runs and failed
- public void testFailed() throws Exception {
- Process process = getProcess(-1); // process should abort
- watchdog.start(process);
- int retCode = process.waitFor();
- assertTrue("process should not have been killed", !watchdog.killedProcess());
- assertTrue("return code is invalid: " + retCode, retCode!=0);
- }
-
- public void testManualStop() throws Exception {
- final Process process = getProcess(TIME_OUT*2);
- watchdog.start(process);
-
- // I assume that starting this takes less than TIME_OUT/2 ms...
- Thread thread = new Thread(){
- public void run(){
- try {
- process.waitFor();
- } catch(InterruptedException e){
- // not very nice but will do the job
- fail("process interrupted in thread");
- }
- }
- };
- thread.start();
-
- // wait for TIME_OUT/2, there should be about TIME_OUT/2 ms remaining before timeout
- thread.join(TIME_OUT/2);
-
- // now stop the watchdog.
- watchdog.stop();
-
- // wait for the thread to die, should be the end of the process
- thread.join();
-
- // process should be dead and well finished
- assertEquals(0, process.exitValue());
- assertTrue("process should not have been killed", !watchdog.killedProcess());
- }
-
- public static class TimeProcess {
- public static void main(String[] args) throws Exception {
- int time = Integer.parseInt(args[0]);
- if (time < 1) {
- throw new IllegalArgumentException("Invalid time: " + time);
- }
- Thread.sleep(time);
- }
- }
+ return classpath;
+ }
+
+ private Process getProcess(int timetorun) throws Exception {
+ String[] cmdArray = {
+ "java", "-classpath", TEST_CLASSPATH,
+ TimeProcess.class.getName(), String.valueOf(timetorun)
+ };
+ //System.out.println("Testing with classpath: " + System.getProperty("java.class.path"));
+ return Runtime.getRuntime().exec(cmdArray);
+ }
+
+ private String getErrorOutput(Process p) throws Exception {
+ BufferedReader err = new BufferedReader( new InputStreamReader(p.getErrorStream()) );
+ StringBuffer buf = new StringBuffer();
+ String line;
+ while ( (line = err.readLine()) != null){
+ buf.append(line);
+ }
+ return buf.toString();
+ }
+
+ private int waitForEnd(Process p) throws Exception {
+ int retcode = p.waitFor();
+ if (retcode != 0){
+ String err = getErrorOutput(p);
+ if (err.length() > 0){
+ System.err.println("ERROR:");
+ System.err.println(err);
+ }
+ }
+ return retcode;
+ }
+
+ public void testNoTimeOut() throws Exception {
+ Process process = getProcess(TIME_OUT/2);
+ watchdog.start(process);
+ int retCode = waitForEnd(process);
+ assertTrue("process should not have been killed", !watchdog.killedProcess());
+ assertEquals(0, retCode);
+ }
+
+ // test that the watchdog ends the process
+ public void testTimeOut() throws Exception {
+ Process process = getProcess(TIME_OUT*2);
+ long now = System.currentTimeMillis();
+ watchdog.start(process);
+ int retCode = process.waitFor();
+ long elapsed = System.currentTimeMillis() - now;
+ assertTrue("process should have been killed", watchdog.killedProcess());
+ // assertTrue("return code is invalid: " + retCode, retCode!=0);
+ assertTrue("elapse time of "+elapsed+" ms is less than timeout value of "+TIME_OUT_TEST+" ms", elapsed >= TIME_OUT_TEST);
+ assertTrue("elapse time of "+elapsed+" ms is greater than run value of "+(TIME_OUT*2)+" ms", elapsed < TIME_OUT*2);
+ }
+
+ // test a process that runs and failed
+ public void testFailed() throws Exception {
+ Process process = getProcess(-1); // process should abort
+ watchdog.start(process);
+ int retCode = process.waitFor();
+ assertTrue("process should not have been killed", !watchdog.killedProcess());
+ assertTrue("return code is invalid: " + retCode, retCode!=0);
+ }
+
+ public void testManualStop() throws Exception {
+ final Process process = getProcess(TIME_OUT*2);
+ watchdog.start(process);
+
+ // I assume that starting this takes less than TIME_OUT/2 ms...
+ Thread thread = new Thread(){
+ public void run(){
+ try {
+ process.waitFor();
+ } catch(InterruptedException e){
+ // not very nice but will do the job
+ fail("process interrupted in thread");
+ }
+ }
+ };
+ thread.start();
+
+ // wait for TIME_OUT/2, there should be about TIME_OUT/2 ms remaining before timeout
+ thread.join(TIME_OUT/2);
+
+ // now stop the watchdog.
+ watchdog.stop();
+
+ // wait for the thread to die, should be the end of the process
+ thread.join();
+
+ // process should be dead and well finished
+ assertEquals(0, process.exitValue());
+ assertTrue("process should not have been killed", !watchdog.killedProcess());
+ }
+
+ public static class TimeProcess {
+ public static void main(String[] args) throws Exception {
+ int time = Integer.parseInt(args[0]);
+ if (time < 1) {
+ throw new IllegalArgumentException("Invalid time: " + time);
+ }
+ Thread.sleep(time);
+ }
+ }
}