[exec] Watchdog test cases and argument quotation fix
-----------------------------------------------------
Key: SANDBOX-192
URL: https://issues.apache.org/jira/browse/SANDBOX-192
Project: Commons Sandbox
Issue Type: Bug
Components: Exec
Affects Versions: Nightly Builds
Environment: apache commons exec trunk/head; M$ Windows XP
Reporter: Reinhold Füreder
Fix For: Nightly Builds
Attachments: ProcessTest.java
Please find attached a patch for apache commons exec with respect to two issues
(note that I have only tested them under M$ Windows yet, but I am very
confident that these changes should work under *nix too):
---
(1) ExecuteWatchdog test cases (DefaultExecutorTest.java): one for synchronous
and one for asynchronous execution including the required test scripts
(watchdog.bat, watchdog.sh) and test app (JavaApp.java). Whereas the one for
asynchronous is a bit more elaborated and kind of "more correct", please note
the hint on the well-known Java "bug"/issue under M$ Windows with respect to
the Process.destroy() method in the asynchronous test case code.
---
(2) Add a method to CommandLine (CommandLine.java) to add arguments without
quoting, i.e. pre-quoted arguments, because default quoting may not be correct
in all cases. Note that I have not tried to find out if the default quoting can
be changed accordingly. And also that maybe this problem is only M$ Windows
specific, but I don't know (yet). The encountered problem was:
I want to start an executable (runMemorySud.cmd) with a list of JVM GC options
that in turn will then start a Java application utilising these JVM GC options.
I failed to find an accepted way of specifying the following:
runMemorySud.cmd -XX:+UseParallelGC -XX:ParallelGCThreads=2
After quite some time I found out that the default quoting of apache commons
exec is causing the problem, and with default pure standard Java it works as
expected by using (see attached ProcessTest.java example):
Process p = new ProcessBuilder("runMemorySud.cmd", "10", "30",
"-XX:+UseParallelGC", "\"-XX:ParallelGCThreads=2\"").start();
However, as I said, I found no way of being able to "propagate this to the
ProcessBuilder through apache commons exec". Thus, the need for adding a
so-called pre-quoted argument addArgument() method.
---
Would you mind applying these patches? Thanks.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]