}
public void testExecute() throws Exception {
Project project = new Project();
ProcessTester server = new ProcessTester();
XhExecBgTask task = new XhExecBgTask();
task.setProject(project);
task.setExecutable(JVM);
task.createArg().setValue("-cp");
task.createArg().setPath(new Path(project, getClassPath()));
task.createArg().setLine(ProcessTester.class.getName());
task.createArg().setLine("-p " + server.getPort());
task.createArg().setLine("-s user.dir");
task.createArg().setLine("-t 60");
task.setProcessName(PROC_NAME);
try {
ProcessRegistry.getProcess(PROC_NAME);
fail("Expected BuildException");
} catch (BuildException be) {
assertEquals("Wrong message",
"Process " + PROC_NAME + " not registered.",
be.getMessage());
}
task.execute();
assertEquals("Process not registered", task, ProcessRegistry.getProcess(PROC_NAME));
assertTrue("Process is not running", task.isRunning());
assertTrue("Server has not passed", server.passed());
assertEquals("Wrong user dir", System.getProperty("user.dir"), server.getReceivedData());
server.getSocket().close();
// wait 1sec for process to terminate
Thread.sleep(1000);
assertTrue("Process is still running", !task.isRunning());
try {
ProcessRegistry.getProcess(PROC_NAME);