commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tino Schöllhorn <t.schoellh...@plattform-gmbh.de>
Subject Re: [commons-exec] Watchdog
Date Wed, 23 Apr 2008 14:08:16 GMT
Hi Siegfried,

I found that bug to and I think it is here the case as I am starting the 
processes with "cmd.exe /c ..."

Perhaps you have an idea how to solve that issue - at lease one could 
remark in the documentation this kind of issue.

Tino

Siegfried Goeschl schrieb:
> Hi Tino,
> 
> +) I have a look at it tonight ....
> +) in general you won't be able to kill the 'ping' process anyway under 
> Windows - see  
> http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=4770092
> 
> Cheers,
> 
> Siegfried Goeschl
> 
> Tino Schöllhorn wrote:
>> Hi,
>>
>> I have a problem concerning commons-exec when using the timeouts with 
>> a watchdog. The test-cases are running fine (Windows Vista, JDK 1.5.x)
>>
>> I tried to simplify the usage of commons-exec because in our use-case 
>> we often need a very simple case.
>>
>> So I have a class ExecUtils which tries to hide the complexity of many 
>> (necessary) details. It mainly has a static method 
>> ExecUtils.exec(String cmd, int timeout) which should run an command in 
>> a shell and terminate the command if necessary.
>>
>> But - in my simple test-case the timout does not occur. What am I 
>> missing?
>>
>> I am glad for your help.
>>
>> Cheers
>> Tino
>>
>>
>>
>> ----------------------
>> --- TEST
>> ----------------------
>> public void testTimeoutCommand() {
>>     System.out.println("*** testTimeoutCommand.begin");
>>            // 100 Pings senden, aber nach 5 Sekunden abbrechen.
>>            String cmd = "ping localhost -n 10000 -w 1000";
>>                ExecUtils.Result r = ExecUtils.exec(cmd, 5000);
>>                assertTrue("Es muss ein Timeout auftreten!", 
>> r.hasTimeout());
>>            System.err.println("result: " + r);
>>                   System.out.println("*** testTimeoutCommand.end");
>> }
>>
>>
>>
>>
>> ----------------------
>> --- Code of ExecUtils
>> ----------------------
>>
>> public class ExecUtils {
>>     public static class Result {
>>     private String out;
>>     private String err;
>>     private int exitValue;
>>     private boolean timeout;
>>     private Exception exception;
>>            public String getStdOut() {
>>         return out;
>>     }
>>            public String getStdErr() {
>>         return err;
>>     }
>>            public int getExitValue() {
>>         return exitValue;
>>     }
>>            public boolean hasTimeout() {
>>         return timeout;
>>     }
>>            public Exception getException() {
>>         return exception;
>>     }
>>                }
>>         public static Result exec(String cmdLine) {
>>         return exec(cmdLine, Integer.MAX_VALUE);
>>     }
>>         public static Result exec(String cmdLine, int timeout) {
>>         DefaultExecutor executor = new DefaultExecutor();
>>                ExecuteWatchdog watchdog = new ExecuteWatchdog(timeout);
>>         executor.setWatchdog(watchdog);
>>                ByteArrayOutputStream baosOut = new 
>> ByteArrayOutputStream();
>>         ByteArrayOutputStream baosErr = new ByteArrayOutputStream();
>>
>>         PumpStreamHandler streamHandler = new 
>> PumpStreamHandler(baosOut, baosErr);
>>         //PumpStreamHandler streamHandler = new PumpStreamHandler();
>>         executor.setStreamHandler(streamHandler);
>>                // this is simplified
>>         CommandLine commandLine = "cmd.exe /c " + cmdLine;
>>                Result res = new Result();
>>         try {
>>                        res.exitValue = executor.execute(commandLine);
>>                    } catch (Exception x) {
>>             res.exception = x;
>>         } finally {
>>             res.out = new String(baosOut.toByteArray());
>>             res.err = new String(baosErr.toByteArray());
>>             res.timeout = watchdog.killedProcess();
>>         }
>>             return res;
>>     }
>> }
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message