use of org.jenkinsci.test.acceptance.po.WorkflowJob in project acceptance-test-harness by jenkinsci.
the class ConfigFileProviderTest method createPipelineAndGetConsole.
private String createPipelineAndGetConsole(final CustomConfig customConfig) {
final WorkflowJob job = jenkins.jobs.create(WorkflowJob.class);
job.script.set(String.format("node {\n" + " configFileProvider(\n" + " [configFile(fileId: '%s', variable: 'CUSTOM_SETTINGS')]) {\n" + " \n" + " sh 'cat $CUSTOM_SETTINGS '\n" + " }\n" + "}", customConfig.id()));
job.save();
final Build b = job.startBuild().shouldSucceed();
return b.getConsole();
}
use of org.jenkinsci.test.acceptance.po.WorkflowJob in project acceptance-test-harness by jenkinsci.
the class WorkflowPluginTest method grapeLibrary.
@WithPlugins({ "workflow-cps-global-lib@2.3", "workflow-basic-steps@2.1", "workflow-job@2.5" })
@Issue("JENKINS-26192")
@Test
public void grapeLibrary() throws Exception {
assumeThat("TODO otherwise we would need to set up SSH access to push via Git, which seems an awful hassle", controller, instanceOf(LocalController.class));
File workflowLibs = /* WorkflowLibRepository.workspace() */
new File(((LocalController) controller).getJenkinsHome(), "workflow-libs");
// Cf. GrapeTest.useBinary using JenkinsRule:
FileUtils.write(new File(workflowLibs, "src/pkg/Lists.groovy"), "package pkg\n" + "@Grab('commons-primitives:commons-primitives:1.0')\n" + "import org.apache.commons.collections.primitives.ArrayIntList\n" + "static def arrayInt() {new ArrayIntList()}");
WorkflowJob job = jenkins.jobs.create(WorkflowJob.class);
job.script.set("echo(/got ${pkg.Lists.arrayInt()}/)");
job.sandbox.check();
job.save();
assertThat(job.startBuild().shouldSucceed().getConsole(), containsString("got []"));
}
use of org.jenkinsci.test.acceptance.po.WorkflowJob in project acceptance-test-harness by jenkinsci.
the class WorkflowPluginTest method parallelTests.
@WithPlugins({ "workflow-job", "workflow-cps@2.10", "workflow-basic-steps@2.1", "workflow-durable-task-step", "parallel-test-executor@1.11", "junit@1.18", "git@2.3" })
@Native("mvn")
@Test
public void parallelTests() throws Exception {
for (int i = 0; i < 3; i++) {
slaveController.install(jenkins);
}
WorkflowJob job = jenkins.jobs.create(WorkflowJob.class);
job.script.set("node('built-in || master') {\n" + // TODO could be switched to multibranch, in which case this initial `node` is unnecessary, and each branch can just `checkout scm`
" git 'https://github.com/jenkinsci/parallel-test-executor-plugin-sample.git'\n" + " stash 'sources'\n" + "}\n" + "def splits = splitTests parallelism: count(3), estimateTestsFromFiles: true\n" + "def branches = [:]\n" + "for (int i = 0; i < splits.size(); i++) {\n" + " def exclusions = splits.get(i);\n" + " branches[\"split${i}\"] = {\n" + " node('!master') {\n" + " sh 'rm -rf *'\n" + " unstash 'sources'\n" + " writeFile file: 'exclusions.txt', text: exclusions.join(\"\\n\")\n" + // TODO would be useful for ToolInstallation to support the URL installer, hosting the tool ZIP ourselves somewhere cached.
" sh 'mvn -B -Dmaven.test.failure.ignore test'\n" + " junit 'target/surefire-reports/*.xml'\n" + " }\n" + " }\n" + "}\n" + "parallel branches");
job.sandbox.check();
job.save();
Build build = job.startBuild();
try {
build.shouldSucceed();
} catch (AssertionError x) {
// cf. linearFlow
build.shouldBeUnstable();
}
assertThat(build.getConsole(), containsString("No record available"));
build = job.startBuild();
try {
build.shouldSucceed();
} catch (AssertionError x) {
build.shouldBeUnstable();
}
assertThat(build.getConsole(), containsString("divided into 3 sets"));
}
use of org.jenkinsci.test.acceptance.po.WorkflowJob in project acceptance-test-harness by jenkinsci.
the class WorkflowPluginTest method configureJob.
private WorkflowJob configureJob() {
WorkflowJob job = jenkins.jobs.create(WorkflowJob.class);
job.script.set("@Library('" + SHARED_LIBRARY_NAME + "@master') _\n" + "\n" + "otherGreeting('" + NAME + "')");
job.sandbox.check();
job.save();
return job;
}
use of org.jenkinsci.test.acceptance.po.WorkflowJob in project acceptance-test-harness by jenkinsci.
the class WorkflowPluginTest method linearFlow.
@WithPlugins({ "workflow-job", "workflow-cps@2.10", "workflow-basic-steps@2.1", "workflow-durable-task-step", "pipeline-input-step", "junit@1.18", "git@2.3" })
@Test
public void linearFlow() throws Exception {
assumeTrue("This test requires a restartable Jenkins", jenkins.canRestart());
MavenInstallation.installMaven(jenkins, "M3", "3.5.0");
final DumbSlave slave = (DumbSlave) slaveController.install(jenkins).get();
slave.configure(() -> slave.labels.set("remote"));
WorkflowJob job = jenkins.jobs.create(WorkflowJob.class);
job.script.set("node('remote') {\n" + " git 'https://github.com/jglick/simple-maven-project-with-tests.git'\n" + " def v = version()\n" + " if (v) {\n" + " echo(/Building version $v/)\n" + " }\n" + " def mvnHome = tool 'M3'\n" + " withEnv([\"PATH+MAVEN=$mvnHome/bin\", \"M2_HOME=$mvnHome\"]) {\n" + " sh 'mvn -B -Dmaven.test.failure.ignore verify'\n" + " }\n" + " input 'Ready to go?'\n" + " archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true\n" + " junit '**/target/surefire-reports/TEST-*.xml'\n" + "}\n" + "def version() {\n" + " def matcher = readFile('pom.xml') =~ '<version>(.+)</version>'\n" + " matcher ? matcher[0][1] : null\n" + "}");
job.sandbox.check();
job.save();
final Build build = job.startBuild();
waitFor().until(new Wait.Predicate<Boolean>() {
@Override
public Boolean apply() throws Exception {
return build.getConsole().contains("Ready to go?");
}
@Override
public String diagnose(Throwable lastException, String message) {
return "Console output:\n" + build.getConsole() + "\n";
}
});
assertThat(build.getConsole(), containsString("Building version 1.0-SNAPSHOT"));
jenkins.restart();
// Default 120s timeout of Build.waitUntilFinished sometimes expires waiting for RetentionStrategy.Always to tick (after initial failure of CommandLauncher.launch: EOFException: unexpected stream termination):
// TODO rather wait for build output: "Ready to run"
slave.waitUntilOnline();
visit(build.getConsoleUrl());
clickLink("Proceed");
try {
build.shouldSucceed();
} catch (AssertionError x) {
// Tests in this project are currently designed to fail at random, so either status is OK.
// TODO if resultIs were public and there were a disjunction combinator for Matcher we could use it here.
build.shouldBeUnstable();
}
new Artifact(build, "target/simple-maven-project-with-tests-1.0-SNAPSHOT.jar").assertThatExists(true);
build.open();
clickLink("Test Result");
assertThat(driver, hasContent("All Tests"));
}
Aggregations