package org.pitest.coverage.execute;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.List;
import org.pitest.coverage.CoverageResult;
import org.pitest.functional.SideEffect1;
import org.pitest.process.ProcessArgs;
import org.pitest.process.WrappingProcess;
import org.pitest.util.ExitCode;
public class CoverageProcess {
private final WrappingProcess process;
private final CoverageCommunicationThread crt;
public CoverageProcess(final ProcessArgs processArgs,
final CoverageOptions arguments, final ServerSocket socket,
final List<String> testClases, final SideEffect1<CoverageResult> handler)
throws IOException {
this.process = new WrappingProcess(socket.getLocalPort(), processArgs,
CoverageMinion.class);
this.crt = new CoverageCommunicationThread(socket, arguments, testClases,
handler);
}
public void start() throws IOException, InterruptedException {
this.crt.start();
this.process.start();
}
public ExitCode waitToDie() throws InterruptedException {
try {
return this.crt.waitToFinish();
} finally {
this.process.destroy();
}
}
}