@Test public void shouldFindTheLatestJobWhenJobStatusIsRequested() throws Exception { JobInstance job = JobInstanceMother.buildEndingWithState(JobState.Rescheduled, JobResult.Unknown, "config"); job.assign("agent", new Date()); JobInstance newJob = JobInstanceMother.buildEndingWithState( JobState.Building, JobResult.Unknown, "another_config"); newJob.setId(2); newJob.assign("another_agent", new Date()); String pipelineName = job.getPipelineName(); String stageName = job.getStageName(); when(jobInstanceService.buildByIdWithTransitions(job.getId())).thenReturn(job); when(jobDetailService.findMostRecentBuild(job.getIdentifier())).thenReturn(newJob); when(stageService.getBuildDuration(pipelineName, stageName, newJob)) .thenReturn(new DurationBean(newJob.getId(), 5l)); ModelAndView modelAndView = jobController.handleRequest(pipelineName, stageName, job.getId(), response); verify(jobInstanceService).buildByIdWithTransitions(job.getId()); verify(jobDetailService).findMostRecentBuild(job.getIdentifier()); verify(stageService).getBuildDuration(pipelineName, stageName, newJob); JsonValue json = from(((JsonList) modelAndView.getModel().get("json")).getJsonMap(0)); JsonValue buildingInfo = json.getObject("building_info"); assertThat(buildingInfo.getString("id"), is("2")); assertThat(buildingInfo.getString("last_build_duration"), is("5")); }
public Stage saveBuildingStage(Stage stage) { for (JobInstance jobInstance : stage.getJobInstances()) { JobInstanceMother.setBuildingState(jobInstance); jobInstance.setAgentUuid(AGENT_UUID); jobInstanceDao.updateAssignedInfo(jobInstance); } return stage; }
@Test public void buildByIdWithTransitions_shouldCacheWhenQueriedFor() { jobInstanceDao.setSqlMapClientTemplate(mockTemplate); JobInstance job = JobInstanceMother.assigned("job"); job.setId(1L); when(mockTemplate.queryForObject("buildByIdWithTransitions", 1L)).thenReturn(job); JobInstance actual = jobInstanceDao.buildByIdWithTransitions(1L); assertThat(actual, is(job)); assertThat(actual == job, is(false)); jobInstanceDao.buildByIdWithTransitions(1L); verify(mockTemplate, times(1)).queryForObject("buildByIdWithTransitions", 1L); }
@Test public void buildByIdWithTransitions_shouldClearFromCacheOnUpdateStatusOfJob() { jobInstanceDao.setSqlMapClientTemplate(mockTemplate); JobInstance job = JobInstanceMother.assigned("job"); job.setId(1L); when(mockTemplate.queryForObject("buildByIdWithTransitions", 1L)).thenReturn(job); JobInstance actual = jobInstanceDao.buildByIdWithTransitions(1L); assertThat(actual, is(job)); assertThat(actual == job, is(false)); jobInstanceDao.updateStateAndResult(job); // Must clear cahced job instance jobInstanceDao.buildByIdWithTransitions(1L); verify(mockTemplate, times(2)).queryForObject("buildByIdWithTransitions", 1L); }
@Test public void shouldEncodeBuildLocator() throws Exception { JobInstance job = JobInstanceMother.assigned("job-%"); Stage stage1 = new Stage( "stage-c%d", new JobInstances(job), GoConstants.DEFAULT_APPROVED_BY, "manual", new TimeProvider()); stage1.setIdentifier(new StageIdentifier("pipeline-a%b", 1, "label-1", "stage-c%d", "1")); job.setIdentifier( new JobIdentifier("pipeline-a%b", 1, "label-1", "stage-c%d", "1", "job-%", 0L)); StageJsonPresentationModel presenter = new StageJsonPresentationModel(pipeline, stage1, null, new Agents()); Map json = presenter.toJson(); assertThat( JsonUtils.from(json).getString("builds", 0, "buildLocator"), is("pipeline-a%25b/1/stage-c%25d/1/job-%25")); }
public StageResult completeAllJobs(Stage stage, JobResult jobResult) { for (JobInstance job : stage.getJobInstances()) { JobInstanceMother.setBuildingState(job); job.setAgentUuid(AGENT_UUID); job.completing(jobResult); job.completed(new DateTime().plusMinutes(5).toDate()); jobInstanceDao.updateAssignedInfo(job); } StageResult stageResult; switch (jobResult) { case Failed: stageResult = StageResult.Failed; break; case Cancelled: stageResult = StageResult.Cancelled; break; default: stageResult = StageResult.Passed; } stage.calculateResult(); return stageResult; }
private JobInstance instance(long id) { JobInstance instance = JobInstanceMother.jobInstance("first", "resource"); instance.setId(id); return instance; }