Methods Summary |
---|
private java.lang.String | getErrorOutput(java.lang.Process p)
BufferedReader err = new BufferedReader( new InputStreamReader(p.getErrorStream()) );
StringBuffer buf = new StringBuffer();
String line;
while ( (line = err.readLine()) != null){
buf.append(line);
}
return buf.toString();
|
private java.lang.Process | getProcess(long timetorun)
String[] cmdArray = {
JavaEnvUtils.getJreExecutable("java"), "-classpath", TEST_CLASSPATH,
TimeProcess.class.getName(), String.valueOf(timetorun)
};
//System.out.println("Testing with classpath: " + System.getProperty("java.class.path"));
return Runtime.getRuntime().exec(cmdArray);
|
private static java.lang.String | getTestClassPath()Dangerous method to obtain the classpath for the test. This is
severely tighted to the build.xml properties.
String classpath = System.getProperty("build.tests");
if (classpath == null) {
System.err.println("WARNING: 'build.tests' property is not available !");
classpath = System.getProperty("java.class.path");
}
return classpath;
|
protected void | setUp()
watchdog = new ExecuteWatchdog(TIME_OUT);
|
public void | testFailed()
Process process = getProcess(-1); // process should abort
watchdog.start(process);
int retCode = process.waitFor();
assertTrue("process should not have been killed", !watchdog.killedProcess());
assertTrue("return code is invalid: " + retCode, retCode!=0);
|
public void | testManualStop()
final Process process = getProcess(TIME_OUT*2);
watchdog.start(process);
// I assume that starting this takes less than TIME_OUT/2 ms...
Thread thread = new Thread(){
public void run(){
try {
process.waitFor();
} catch(InterruptedException e){
// not very nice but will do the job
fail("process interrupted in thread");
}
}
};
thread.start();
// wait for TIME_OUT/2, there should be about TIME_OUT/2 ms remaining before timeout
thread.join(TIME_OUT/2);
// now stop the watchdog.
watchdog.stop();
// wait for the thread to die, should be the end of the process
thread.join();
// process should be dead and well finished
assertEquals(0, process.exitValue());
assertTrue("process should not have been killed", !watchdog.killedProcess());
|
public void | testNoTimeOut()
Process process = getProcess(TIME_OUT/2);
watchdog.start(process);
int retCode = waitForEnd(process);
assertTrue("process should not have been killed", !watchdog.killedProcess());
assertFalse(Execute.isFailure(retCode));
|
public void | testTimeOut()
Process process = getProcess(TIME_OUT*2);
long now = System.currentTimeMillis();
watchdog.start(process);
int retCode = process.waitFor();
long elapsed = System.currentTimeMillis() - now;
assertTrue("process should have been killed", watchdog.killedProcess());
// assertTrue("return code is invalid: " + retCode, retCode!=0);
assertTrue("elapse time of "+elapsed+" ms is less than timeout value of "+TIME_OUT_TEST+" ms", elapsed >= TIME_OUT_TEST);
assertTrue("elapse time of "+elapsed+" ms is greater than run value of "+(TIME_OUT*2)+" ms", elapsed < TIME_OUT*2);
|
private int | waitForEnd(java.lang.Process p)
int retcode = p.waitFor();
if (retcode != 0){
String err = getErrorOutput(p);
if (err.length() > 0){
System.err.println("ERROR:");
System.err.println(err);
}
}
return retcode;
|