package hudson.drools;
import hudson.model.Hudson;
import hudson.model.Job;
import hudson.model.Result;
import hudson.model.Run;
import java.io.IOException;
import junit.framework.Assert;
import org.apache.commons.io.IOUtils;
import org.jvnet.hudson.test.HudsonTestCase;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public abstract class DroolsTestCase extends HudsonTestCase {
@Override
protected void setUp() throws Exception {
System.setProperty("hudson.bundled.plugins", "");
super.setUp();
new PluginImpl().start();
}
public DroolsProject createProject(String projectName, String resource)
throws IOException {
DroolsProject result = hudson.createProject(DroolsProject.class,
projectName);
String processXML = IOUtils.toString(getClass().getResourceAsStream(
resource));
result.set(null, processXML, null);
return result;
}
public void assertBuildResult(Job<?, ?> job, Result result, int number) {
for (int i = 0; i < 50; i++) {
Run<?, ?> build = job.getBuildByNumber(number);
if (build != null && !build.isBuilding()) {
if (result != build.getResult()) {
try {
System.out.println(build.getLog());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Assert.assertEquals(result, build.getResult());
System.out.println(build.getDisplayName() + " completed with " + result);
return;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
}
Run<?, ?> build = job.getBuildByNumber(number);
if (build == null) {
Assert.fail("No build for " + job.getDisplayName() + " after 10s");
} else {
Assert.fail(build.getDisplayName() + " not completed after 10s");
}
}
public void assertBuildResult(DroolsProject job, Result result, int number) {
for (int i = 0; i < 50; i++) {
DroolsRun build = job.getBuildByNumber(number);
if (build != null && !build.isBuilding()) {
Assert.assertEquals(result, build.getResult());
return;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
}
Assert.fail("No build for " + job.getDisplayName() + " after 10s");
}
public void waitForWorkflowComplete(DroolsProject job, int number) {
for (int i = 0; i < 50; i++) {
DroolsRun build = job.getBuildByNumber(number);
if (build != null && build.getStatus() != DroolsRun.Status.STARTED) {
return;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
}
Assert.fail("No build for " + job.getDisplayName() + " after 10s");
}
public HtmlForm getFormByAction(HtmlPage page, String action) {
return (HtmlForm) page.getFirstByXPath("//form[@action='" + action
+ "']");
}
public HtmlPage submitForm(HtmlForm form) throws IOException {
HtmlButton button = (HtmlButton) form.getFirstByXPath("//button");
return (HtmlPage) form.submit(button);
}
}