You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sg...@apache.org on 2010/10/24 22:29:47 UTC
svn commit: r1026881 -
/commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java
Author: sgoeschl
Date: Sun Oct 24 20:29:47 2010
New Revision: 1026881
URL: http://svn.apache.org/viewvc?rev=1026881&view=rev
Log:
[EXEC-34] Added a test case waiting for an asnchronous process using DefaultExecuteResultHandler instead of "Watchdog.isWaiting".
Modified:
commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java
Modified: commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java?rev=1026881&r1=1026880&r2=1026881&view=diff
==============================================================================
--- commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java (original)
+++ commons/proper/exec/trunk/src/test/java/org/apache/commons/exec/DefaultExecutorTest.java Sun Oct 24 20:29:47 2010
@@ -65,9 +65,9 @@ public class DefaultExecutorTest extends
// turn on debug mode and throw an exception for each encountered problem
System.setProperty("org.apache.commons.exec.lenient", "false");
- System.setProperty("org.apache.commons.exec.debug", "true");
+ System.setProperty("org.apache.commons.exec.debug", "true");
}
-
+
protected void setUp() throws Exception {
System.out.println(">>> Executing " + getName() + " ...");
@@ -104,7 +104,7 @@ public class DefaultExecutorTest extends
int exitValue = exec.execute(cl);
assertEquals("FOO..", baos.toString().trim());
assertFalse(exec.isFailure(exitValue));
- assertEquals(new File("."), exec.getWorkingDirectory());
+ assertEquals(new File("."), exec.getWorkingDirectory());
}
public void testExecuteWithWorkingDirectory() throws Exception {
@@ -132,7 +132,7 @@ public class DefaultExecutorTest extends
public void testExecuteWithError() throws Exception {
CommandLine cl = new CommandLine(errorTestScript);
-
+
try{
exec.execute(cl);
fail("Must throw ExecuteException");
@@ -174,7 +174,7 @@ public class DefaultExecutorTest extends
*/
public void testExecuteAsync() throws Exception {
CommandLine cl = new CommandLine(testScript);
- DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
+ DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
exec.execute(cl, resultHandler);
resultHandler.waitFor(2000);
assertTrue(resultHandler.hasResult());
@@ -204,7 +204,7 @@ public class DefaultExecutorTest extends
* Start a asynchronous process and terminate it manually before the
* watchdog timeout occurs.
*
- * @throws Exception the test failed
+ * @throws Exception the test failed
*/
public void testExecuteAsyncWithTimelyUserTermination() throws Exception {
CommandLine cl = new CommandLine(foreverTestScript);
@@ -287,7 +287,7 @@ public class DefaultExecutorTest extends
return;
}
catch(Throwable t) {
- fail(t.getMessage());
+ fail(t.getMessage());
}
assertTrue("Killed process should be true", executor.getWatchdog().killedProcess() );
@@ -398,10 +398,10 @@ public class DefaultExecutorTest extends
CommandLine cl = new CommandLine(testScript);
ShutdownHookProcessDestroyer processDestroyer = new ShutdownHookProcessDestroyer();
exec.setProcessDestroyer(processDestroyer);
-
+
assertTrue(processDestroyer.size() == 0);
assertTrue(processDestroyer.isAddedAsShutdownHook() == false);
-
+
int exitValue = exec.execute(cl);
assertEquals("FOO..", baos.toString().trim());
@@ -409,7 +409,7 @@ public class DefaultExecutorTest extends
assertTrue(processDestroyer.size() == 0);
assertTrue(processDestroyer.isAddedAsShutdownHook() == false);
}
-
+
/**
* Test the proper handling of ProcessDestroyer for an asynchronous process.
* Since we do not terminate the process it will be terminated in the
@@ -590,7 +590,7 @@ public class DefaultExecutorTest extends
}
/**
- * Call a script to dump the environment variables of the subprocess.
+ * Call a script to dump the environment variables of the subprocess.
*
* @throws Exception the test failed
*/
@@ -656,11 +656,11 @@ public class DefaultExecutorTest extends
*
* Race condition prevent watchdog working using ExecuteStreamHandler.
* The test fails because when watchdog.destroyProcess() is invoked the
- * external process is not bound to the watchdog yet
+ * external process is not bound to the watchdog yet.
*
* @throws Exception the test failed
*/
- public void testExec34() throws Exception {
+ public void testExec34_1() throws Exception {
CommandLine cmdLine = new CommandLine(pingScript);
cmdLine.addArgument("10"); // sleep 10 secs
@@ -679,6 +679,30 @@ public class DefaultExecutorTest extends
}
/**
+ * EXEC-34 https://issues.apache.org/jira/browse/EXEC-34
+ *
+ * Some user waited for an asynchronous process using watchdog.isWatching() which
+ * is now properly implemented using <code>DefaultExecuteResultHandler</code>.
+ *
+ * @throws Exception the test failed
+ */
+ public void testExec34_2() throws Exception {
+
+ CommandLine cmdLine = new CommandLine(pingScript);
+ cmdLine.addArgument("10"); // sleep 10 secs
+
+ ExecuteWatchdog watchdog = new ExecuteWatchdog(5000);
+ DefaultExecuteResultHandler handler = new DefaultExecuteResultHandler();
+ exec.setWatchdog(watchdog);
+ exec.execute(cmdLine, handler);
+ handler.waitFor();
+ assertTrue("Process has exited", handler.hasResult());
+ assertNotNull("Process was aborted", handler.getException());
+ assertTrue("Watchdog should have killed the process", watchdog.killedProcess());
+ assertFalse("Watchdog is no longer watching the process", watchdog.isWatching());
+ }
+
+ /**
* Test EXEC-36 see https://issues.apache.org/jira/browse/EXEC-36
*
* Original example from Kai Hu which only can be tested on Unix
@@ -757,7 +781,7 @@ public class DefaultExecutorTest extends
System.err.println("The test 'testExec36_3' does not support the following OS : " + System.getProperty("os.name"));
return;
}
-
+
CommandLine cmdl;
File file = new File("/Documents and Settings/myusername/Local Settings/Temp/netfx.log");
Map map = new HashMap();
@@ -847,7 +871,7 @@ public class DefaultExecutorTest extends
* For this test we are using the batch file - under Windows the 'ping'
* process can't be killed (not supported by Win32) and will happily
* run the given time (e.g. 10 seconds) even hwen the batch file is already
- * killed.
+ * killed.
*
* @throws Exception the test failed
*/
@@ -860,7 +884,7 @@ public class DefaultExecutorTest extends
// create a custom "PumpStreamHandler" doing no pumping at all
PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(null, null, null);
-
+
executor.setWatchdog(watchdog);
executor.setStreamHandler(pumpStreamHandler);