Author: sgoeschl
Date: Thu Aug 12 18:09:28 2010
New Revision: 984888

URL: http://svn.apache.org/viewvc?rev=984888&view=rev
Log:
[EXEC-42] Applied the patch and updated documentation

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=984888&r1=984887&r2=984888&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
 Thu Aug 12 18:09:28 2010
@@ -627,13 +627,17 @@ public class DefaultExecutorTest extends
      *
      * @throws Exception the test failed
      */
-    public void testExec41() throws Exception {
+    public void testExec41WithStreams() throws Exception {
 
                CommandLine cmdLine = new CommandLine(exec41Script);
                cmdLine.addArgument("10"); // sleep 10 secs
                DefaultExecutor executor = new DefaultExecutor();
                ExecuteWatchdog watchdog = new ExecuteWatchdog(2*1000); // 
allow process no more than 2 secs
+        PumpStreamHandler pumpStreamHandler = new PumpStreamHandler( 
System.out, System.err);
+        pumpStreamHandler.setAlwaysWaitForStreamThreads(false);
+
                executor.setWatchdog(watchdog);
+        executor.setStreamHandler(pumpStreamHandler);
 
                long startTime = System.currentTimeMillis();
 
@@ -652,6 +656,46 @@ public class DefaultExecutorTest extends
                }
 
         assertTrue("The process was killed by the watchdog", 
watchdog.killedProcess());
+        assertTrue("SKipping the Thread.join() did not work", duration < 9000);
     }
 
+    /**
+     * Test EXEC-41 with a disabled PumpStreamHandler to check if we could 
return
+     * immediately after killing the process (no streams implies no blocking
+     * stream pumper threads).
+     *
+     * @throws Exception the test failed
+     */
+    public void testExec41WithoutStreams() throws Exception {
+
+               CommandLine cmdLine = new CommandLine(exec41Script);
+               cmdLine.addArgument("10"); // sleep 10 secs
+               DefaultExecutor executor = new DefaultExecutor();
+               ExecuteWatchdog watchdog = new ExecuteWatchdog(2*1000); // 
allow process no more than 2 secs
+
+        // create a custom "PumpStreamHandler" doing no pumping at all
+        PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(null, 
null, null);
+        
+               executor.setWatchdog(watchdog);
+        executor.setStreamHandler(pumpStreamHandler);
+
+               long startTime = System.currentTimeMillis();
+
+               try {
+                       executor.execute(cmdLine);
+               } catch (ExecuteException e) {
+                       System.out.println(e);
+               }
+
+        long duration = System.currentTimeMillis() - startTime;
+
+               System.out.println("Process completed in " + duration +" 
millis; below is its output");
+
+               if (watchdog.killedProcess()) {
+                       System.out.println("Process timed out and was killed.");
+               }
+
+        assertTrue("The process was killed by the watchdog", 
watchdog.killedProcess());
+        assertTrue("SKipping the Thread.join() did not work", duration < 9000);
+    }
 }


Reply via email to