/** * This is more of a test of the core, but make sure the triggers resolve between ourselves. */ @Test public void trigger() throws Exception { Folder f = createFolder(); FreeStyleProject a = f.createProject(FreeStyleProject.class, "a"); FreeStyleProject b = f.createProject(FreeStyleProject.class, "b"); a.getPublishersList().add(new BuildTrigger("b",false)); FreeStyleBuild a1 = r.assertBuildStatusSuccess(a.scheduleBuild2(0)); for (int i=0; i<10 && b.getLastBuild()==null; i++) { Thread.sleep(100); } // make sue that a build of B happens }
private FreeStyleBuild sendCommitTriggerMultipleSvnLocations(FreeStyleProject p, boolean includeRevision) throws Exception { String repoUUID = "71c3de6d-444a-0410-be80-ed276b4c234a"; WebClient wc = r.createWebClient(); WebRequest wr = new WebRequest(new URL(r.getURL() + "subversion/" + repoUUID + "/notifyCommit"), HttpMethod.POST); wr.setRequestBody("A trunk/hudson/test-projects/trivial-ant/build.xml\n" + "M trunk/hudson/test-projects/trivial-maven/src/main/"); wr.setAdditionalHeader("Content-Type", "text/plain;charset=UTF-8"); if (includeRevision) { wr.setAdditionalHeader("X-Hudson-Subversion-Revision", "18075"); } WebConnection conn = wc.getWebConnection(); WebResponse resp = conn.getResponse(wr); assertTrue(r.isGoodHttpStatus(resp.getStatusCode())); Thread.sleep(1000); r.waitUntilNoActivity(); FreeStyleBuild b = p.getLastBuild(); assertNotNull(b); r.assertBuildStatus(Result.SUCCESS,b); return b; }
private FreeStyleBuild sendCommitTrigger(FreeStyleProject p, boolean includeRevision) throws Exception { String repoUUID = "71c3de6d-444a-0410-be80-ed276b4c234a"; WebClient wc = r.createWebClient(); WebRequest wr = new WebRequest(new URL(r.getURL() + "subversion/" + repoUUID + "/notifyCommit"), HttpMethod.POST); wr.setRequestBody("A trunk/hudson/test-projects/trivial-ant/build.xml"); wr.setAdditionalHeader("Content-Type", "text/plain;charset=UTF-8"); if (includeRevision) { wr.setAdditionalHeader("X-Hudson-Subversion-Revision", "13000"); } WebConnection conn = wc.getWebConnection(); WebResponse resp = conn.getResponse(wr); assertTrue(r.isGoodHttpStatus(resp.getStatusCode())); Thread.sleep(1000); r.waitUntilNoActivity(); FreeStyleBuild b = p.getLastBuild(); assertNotNull(b); r.assertBuildStatus(Result.SUCCESS,b); return b; }
@Test public void clean() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(hgInstallation(), repo.getPath(), null, null, null, null, true)); m.hg(repo, "init"); m.touchAndCommit(repo, "f1"); m.buildAndCheck(p, "f1"); FilePath ws = p.getLastBuild().getWorkspace(); ws.child("junk1").write("junk", null); ws.child("junk2").write("junk", null); // from Hg 1.3 changelog: "update: don't unlink added files when -C/--clean is specified" m.hg(new File(ws.getRemote()), "add", "junk2"); m.touchAndCommit(repo, "f2"); m.buildAndCheck(p, "f2"); Set<String> kids = new TreeSet<String>(); for (FilePath kid : ws.list()) { kids.add(kid.getName()); } assertEquals("[.hg, f1, f2]", kids.toString()); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#NONE} setting * for {@link GerritTrigger#commentTextParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.CommentAdded} event. * * @throws Exception if so */ @Test public void testCommentTextParameterModeNone() throws Exception { trigger.setCommentTextParameterMode(GerritTriggerParameters.ParameterMode.NONE); trigger.getTriggerOnEvents().add(new PluginCommentAddedEvent("Code-Review", "1")); String expected = "Triggering comment"; CommentAdded event = Setup.createCommentAdded(); event.setComment(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogNotContains(GerritTriggerParameters.GERRIT_EVENT_COMMENT_TEXT.name(), build); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#PLAIN} setting * for {@link GerritTrigger#commentTextParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.CommentAdded} event. * * @throws Exception if so */ @Test public void testCommentTextParameterModePlain() throws Exception { trigger.setCommentTextParameterMode(GerritTriggerParameters.ParameterMode.PLAIN); trigger.getTriggerOnEvents().add(new PluginCommentAddedEvent("Code-Review", "1")); String expected = "Triggering comment"; CommentAdded event = Setup.createCommentAdded(); event.setComment(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogContains(GerritTriggerParameters.GERRIT_EVENT_COMMENT_TEXT.name() + "=" + expected, build); }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void recursiveEnvironmentVariables() throws Exception { EnvironmentContributor.all().add(new EnvironmentContributor() { @Override public void buildEnvironmentFor(Run run, EnvVars ev, TaskListener tl) throws IOException, InterruptedException { ev.put("TOOL", "ant"); ev.put("ROOT", "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-${TOOL}"); } }); FreeStyleProject p = r.createFreeStyleProject("job-with-envs"); p.setScm(new SubversionSCM("$ROOT")); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0)); assertTrue(p.getLastBuild().getWorkspace().child("build.xml").exists()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION")); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL_1")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION_1")); }
/** * Tests the default {@link GerritTriggerParameters.ParameterMode#PLAIN} * when the build is triggered by a {@link RefUpdated} event. * * @throws Exception if so */ @Test public void testNameAndEmailParameterModeDefaultRefUpdated() throws Exception { assertSame(GerritTriggerParameters.ParameterMode.PLAIN, trigger.getNameAndEmailParameterMode()); trigger.getTriggerOnEvents().add(new PluginRefUpdatedEvent()); Account ac = new Account("Bobby", "rsandell@cloudbees.com"); RefUpdated change = Setup.createRefUpdated(PluginImpl.DEFAULT_SERVER_NAME, "olle", "abc123"); change.setAccount(ac); PluginImpl.getHandler_().triggerEvent(change); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); List<GerritTriggerParameters> params = Arrays.asList(GerritTriggerParameters.GERRIT_EVENT_ACCOUNT); //TODO According to the doc GerritTriggerParameters.GERRIT_SUBMITTER should be set as well but its not? String expected = ac.getNameAndEmail(); for (GerritTriggerParameters param : params) { j.assertLogContains(param.name() + "=" + expected, build); } }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void multiModuleEnvironmentVariables() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); ModuleLocation[] locations = { new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", null), new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven", null) }; p.setScm(new SubversionSCM(Arrays.asList(locations), new CheckoutUpdater(), null, null, null, null, null, null)); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL_1")); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven", builder.getEnvVars().get("SVN_URL_2")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION_1")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven").toString(), builder.getEnvVars().get("SVN_REVISION_2")); }
@Issue("JENKINS-10942") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void multiModuleEnvironmentVariablesWithRevision() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); ModuleLocation[] locations = { new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant@18075", null), new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven@HEAD", null) }; p.setScm(new SubversionSCM(Arrays.asList(locations), new CheckoutUpdater(), null, null, null, null, null, null)); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL_1")); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven", builder.getEnvVars().get("SVN_URL_2")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION_1")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-maven").toString(), builder.getEnvVars().get("SVN_REVISION_2")); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#NONE} setting * for {@link GerritTrigger#changeSubjectParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testChangeSubjectParameterModeNone() throws Exception { trigger.setChangeSubjectParameterMode(GerritTriggerParameters.ParameterMode.NONE); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setSubject(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogNotContains(GerritTriggerParameters.GERRIT_CHANGE_SUBJECT.name(), build); }
@Issue("JENKINS-10942") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void singleModuleEnvironmentVariablesWithRevision() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant@HEAD")); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION")); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#NONE} setting * for {@link GerritTrigger#commitMessageParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testCommitMessageParameterModeNone() throws Exception { trigger.setCommitMessageParameterMode(GerritTriggerParameters.ParameterMode.NONE); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setCommitMessage(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogNotContains(GerritTriggerParameters.GERRIT_CHANGE_COMMIT_MESSAGE.name(), build); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#PLAIN} setting * for {@link GerritTrigger#commitMessageParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testCommitMessageParameterModePlain() throws Exception { trigger.setCommitMessageParameterMode(GerritTriggerParameters.ParameterMode.PLAIN); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setCommitMessage(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogContains(GerritTriggerParameters.GERRIT_CHANGE_COMMIT_MESSAGE.name() + "=" + expected, build); }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void singleModuleEnvironmentVariables() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant")); CaptureEnvironmentBuilder builder = new CaptureEnvironmentBuilder(); p.getBuildersList().add(builder); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); assertEquals("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant", builder.getEnvVars().get("SVN_URL")); assertEquals(getActualRevision(p.getLastBuild(), "https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant").toString(), builder.getEnvVars().get("SVN_REVISION")); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#PLAIN} (default) setting * for {@link GerritTrigger#changeSubjectParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testChangeSubjectParameterModeDefault() throws Exception { assertSame(GerritTriggerParameters.ParameterMode.PLAIN, trigger.getChangeSubjectParameterMode()); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setSubject(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogContains(GerritTriggerParameters.GERRIT_CHANGE_SUBJECT.name() + "=" + expected, build); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#BASE64} setting * for {@link GerritTrigger#changeSubjectParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testChangeSubjectParameterModeBase64() throws Exception { trigger.setChangeSubjectParameterMode(GerritTriggerParameters.ParameterMode.BASE64); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setSubject(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogContains(GerritTriggerParameters.GERRIT_CHANGE_SUBJECT.name() + "=" + GerritTriggerParameters.ParameterMode.encodeBase64(expected), build); }
/** * Tests the {@link GerritTriggerParameters.ParameterMode#BASE64} (default) setting * for {@link GerritTrigger#commitMessageParameterMode} when the build is triggered by a * {@link com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated} event. * * @throws Exception if so */ @Test public void testCommitMessageParameterModeDefault() throws Exception { assertSame(GerritTriggerParameters.ParameterMode.BASE64, trigger.getCommitMessageParameterMode()); String expected = "A new commit has arrived!"; PatchsetCreated event = Setup.createPatchsetCreated(); event.getChange().setCommitMessage(expected); PluginImpl.getHandler_().triggerEvent(event); j.waitUntilNoActivity(); FreeStyleBuild build = job.getLastBuild(); j.assertLogContains(GerritTriggerParameters.GERRIT_CHANGE_COMMIT_MESSAGE.name() + "=" + GerritTriggerParameters.ParameterMode.encodeBase64(expected), build); }
/** * Tests that a new build can be triggered for the old FreeStyleProject. */ @Test @LocalData public void testNewTriggeredBuild() { server.waitForCommand(GERRIT_STREAM_EVENTS, 10000); Item item = j.jenkins.getItem("freestyleJob"); assertThat("Item is not a FreeStyleProject", item, instanceOf(FreeStyleProject.class)); FreeStyleProject project = (FreeStyleProject)item; int number = project.getLastBuild().getNumber() + 1; PluginImpl.getServer_(PluginImpl.DEFAULT_SERVER_NAME).triggerEvent(Setup.createPatchsetCreated()); TestUtils.waitForBuilds(project, number, 20000); //3 old builds + the new one. assertEquals(number, project.getLastCompletedBuild().getNumber()); assertSame(Result.SUCCESS, project.getLastCompletedBuild().getResult()); }
/** * Test {@link GerritItemListener#onLocationChanged(hudson.model.Item, String, String)} do handle renamed job. * * @throws Exception if so. */ @Test @Issue("JENKINS-27651") public void testOnJobRenamed() throws Exception { FreeStyleProject job = j.createFreeStyleProject("MyJob"); GerritHandler handler = PluginImpl.getInstance().getHandler(); ManualPatchsetCreated event = Setup.createManualPatchsetCreated(); GerritEventLifecycleListenerImpl listener = new GerritEventLifecycleListenerImpl(event); subscribeJobToEvent(job, event); int before = handler.getEventListenersCount(); job.renameTo("MyJobRenamed"); assertEquals("We leak some listeners", before, handler.getEventListenersCount()); handler.notifyListeners(event); TestUtils.waitForBuilds(job, 1); assertNotNull(job.getLastBuild()); assertTrue(listener.isAllBuildsCompleted()); }