You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2006/08/15 22:38:48 UTC
svn commit: r431697 -
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java
Author: djd
Date: Tue Aug 15 13:38:48 2006
New Revision: 431697
URL: http://svn.apache.org/viewvc?rev=431697&view=rev
Log:
DERBY-1694 Cleanup derbynet/testProperties so that it always handles the output from the processes it forks.
Not handling the output can lead to hangs according to the javadoc for java.lang.Process.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java?rev=431697&r1=431696&r2=431697&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java Tue Aug 15 13:38:48 2006
@@ -23,6 +23,7 @@
import java.sql.*;
import java.util.Vector;
import java.util.Properties;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
@@ -111,27 +112,43 @@
"-p",
"1527"};
/**
- * Execute the given command and dump the results to standard out
+ * Execute the given command and optionally wait and dump the results to standard out
*
* @param args command and arguments
- * @param wait true =wait for completion
+ * @param wait true =wait for completion and dump output, false don't wait and
+ * ignore the output.
* @exception Exception
*/
- private static void execCmdDumpResults (String[] args) throws Exception
+ private static void execCmdDumpResults (String[] args, boolean wait) throws Exception
{
// We need the process inputstream and errorstream
ProcessStreamResult prout = null;
ProcessStreamResult prerr = null;
+ System.out.flush();
+ bos.flush();
+
+ BufferedOutputStream _bos = bos;
+ if (!wait) {
+ // not interested in the output, don't expect a huge amount.
+ // information will just be written to the byte array in
+ // memory and never used.
+ _bos = new BufferedOutputStream(new ByteArrayOutputStream());
+ }
// Start a process to run the command
Process pr = execCmd(args);
- prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
- prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+ prout = new ProcessStreamResult(pr.getInputStream(), _bos, null);
+ prerr = new ProcessStreamResult(pr.getErrorStream(), _bos, null);
+
+ if (!wait)
+ return;
// wait until all the results have been processed
prout.Wait();
prerr.Wait();
+ _bos.flush();
+ System.out.flush();
}
@@ -182,10 +199,8 @@
{portString,"org.apache.derby.drda.NetworkServerControl", cmd};
else
cmdArr = new String[] {"org.apache.derby.drda.NetworkServerControl", cmd,"-p", portString};
- if (!wait)
- execCmd(cmdArr);
- else
- execCmdDumpResults(cmdArr);
+
+ execCmdDumpResults(cmdArr, wait);
}
private static void waitForStart(String portString, int timeToWait) throws Exception
@@ -278,23 +293,23 @@
//Shutdown the server started by test
derbyServerCmd("shutdown","1527");
- execCmd(startServerCmd);
+ execCmdDumpResults(startServerCmd, false);
waitForStart("1527",15000);
//check that default properties are used
listProperties("1527");
//Test trace and logconnections commands
- execCmdDumpResults(cmdTraceOn);
- execCmdDumpResults(cmdLogconnectionsOn);
+ execCmdDumpResults(cmdTraceOn, true);
+ execCmdDumpResults(cmdLogconnectionsOn, true);
listProperties("1527");
- execCmdDumpResults(cmdTraceOff);
+ execCmdDumpResults(cmdTraceOff, true);
listProperties("1527");
derbyServerCmd("shutdown","1527");
//Test error conditions in command-line
- execCmdDumpResults(cmdWithoutArgs);
- execCmdDumpResults(cmdUnknown);
- execCmdDumpResults(cmdWithWrongArgNum);
+ execCmdDumpResults(cmdWithoutArgs, true);
+ execCmdDumpResults(cmdUnknown, true);
+ execCmdDumpResults(cmdWithWrongArgNum, true);
System.out.println("End test");
bos.close();