package hudson.util;
import hudson.model.FreeStyleProject;
import hudson.model.FreeStyleBuild;
import hudson.tasks.Maven;
import org.easymock.EasyMock;
import org.jvnet.hudson.test.ExtractResourceSCM;
import org.jvnet.hudson.test.HudsonTestCase;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
public class ProcessTreeKillerTest extends HudsonTestCase {
public void testManualAbortProcess() throws Exception {
ProcessTree.enabled = true;
FreeStyleProject project = createFreeStyleProject();
// this contains a maven project with a single test that sleeps 5s.
project.setScm(new ExtractResourceSCM(getClass().getResource(
"ProcessTreeKiller-test-project.jar")));
project.getBuildersList().add(new Maven("install", "maven"));
// build the project, wait until tests are running, then cancel.
project.scheduleBuild(0);
Thread.sleep(2000);
FreeStyleBuild b = project.getLastBuild();
b.doStop(
EasyMock.createNiceMock(StaplerRequest.class),
EasyMock.createNiceMock(StaplerResponse.class));
Thread.sleep(1000);
// will fail (at least on windows) if test process is still running
b.getWorkspace().deleteRecursive();
}
}