public JobStateTransitions getTransitions() { return instance.getTransitions(); }
public JobStateTransitions stateTransitions() { final JobStateTransitions transitions = new JobStateTransitions(); for (JobInstance job : this) { transitions.addAll(job.getTransitions()); } return transitions; }
private void assignIdsToAllTransitions(JobInstance job) { for (JobStateTransition jobStateTransition : job.getTransitions()) { jobStateTransition.setId(++nextId); } }
@Test public void shouldCreateATransitionOnStateChange() throws Exception { JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); instance.completing(JobResult.Passed); final JobStateTransition scheduledState = new JobStateTransition(JobState.Scheduled, new Date()); final JobStateTransition completedState = new JobStateTransition(JobState.Completing, new Date()); assertThat(instance.getTransitions(), hasItem(scheduledState)); assertThat(instance.getTransitions(), hasItem(completedState)); assertThat(instance.getTransitions().first(), not(isTransitionWithState(JobState.Preparing))); }
@Test public void shouldNotCreateATransitionWhenPreviousStateIsTheSame() throws Exception { JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); instance.changeState(JobState.Scheduled); final JobStateTransition scheduledState = new JobStateTransition(JobState.Scheduled, new Date()); assertThat(instance.getTransitions(), hasItem(scheduledState)); assertThat(instance.getTransitions(), iterableWithSize(1)); assertThat(instance.getTransitions().first(), not(isTransitionWithState(JobState.Preparing))); }
private void saveBuildTransition(JobInstance instance) { for (JobStateTransition transition : instance.getTransitions()) { propertyDao.save(instance.getId(), new Property(getTransitionKey(transition.getCurrentState()), formatISO8601(transition.getStateChangeTime()))); } }
private void assertCopiedJob(JobInstance newJava, final long originalId) { assertThat(newJava.getId(), is(-1l)); assertThat(newJava.getTransitions().isEmpty(), is(false)); assertThat(newJava.getResult(), is(Passed)); assertThat(newJava.getState(), is(Completed)); assertThat(newJava.getTransitions().byState(Scheduled).getId(), is(-1l)); assertThat(newJava.getTransitions().byState(Completed).getId(), is(-1l)); assertThat(newJava.getOriginalJobId(), is(originalId)); assertThat(newJava.isRerun(), is(false)); assertThat(newJava.isCopy(), is(true)); }
@Test public void shouldReturnMostRecentCompletedTransitionAsCompletedDateIfLatestTransitionIdIsNot() { firstJob.assign("AGENT-1", time1.toDate()); firstJob.completing(JobResult.Passed, time2.toDate()); firstJob.completed(time2.toDate()); secondJob.assign("AGENT-2", time3.toDate()); secondJob.completing(JobResult.Passed, time4.toDate()); secondJob.completed(time4.toDate()); secondJob.getTransitions().byState(JobState.Completed).setId(1); stage.calculateResult(); assertThat(stage.completedDate(), is(time4.toDate())); }
private JobStateTransition assertNewJob(JobInstance newRails) { assertThat(newRails.getId(), is(-1l)); assertThat(newRails.getTransitions().size(), is(1)); JobStateTransition newSchedulingTransition = newRails.getTransitions().byState(JobState.Scheduled); assertThat(newSchedulingTransition.getId(), is(-1l)); assertThat(newRails.getResult(), is(Unknown)); assertThat(newRails.getState(), is(Scheduled)); assertThat(newRails.isRerun(), is(true)); return newSchedulingTransition; }
@Test public void shouldChangeStatus() throws Exception { JobInstance instance = JobInstanceMother.scheduled("jobConfig1"); instance.assign("1234", timeProvider.currentTime()); assertThat(instance.getState(), is(JobState.Assigned)); assertThat(instance.getTransitions().byState(JobState.Assigned), not(nullValue())); }
private void saveTransitions(JobInstance jobInstance) { for (JobStateTransition transition : jobInstance.getTransitions()) { if (!transition.hasId()) { saveTransition(jobInstance, transition); } } if (jobInstance.getIdentifier() != null) { String pipelineName = jobInstance.getIdentifier().getPipelineName(); String stageName = jobInstance.getIdentifier().getStageName(); cache.flushEntry(jobInstance.getBuildDurationKey(pipelineName, stageName)); } }
private JobInstance passJob(Date date, int id, int transitionIdStart, JobInstance jobInstance) { jobInstance.setId(id); jobInstance.changeState(JobState.Completed, date); for (JobStateTransition jobStateTransition : jobInstance.getTransitions()) { jobStateTransition.setId(++transitionIdStart); } jobInstance.setResult(JobResult.Passed); return jobInstance; }
public static JobInstance completed(String jobConfigName, JobResult result, Date completedDate, Date startbuilding) { JobInstance instance = new JobInstance(jobConfigName); instance.completing(result, completedDate); instance.completed(completedDate); instance.getTransitions().add(new JobStateTransition(JobState.Building, startbuilding)); return instance; }
public static Stage stageWithNBuildsHavingEndState(JobState endState, JobResult result, String stageName, List<String> buildNames) { JobInstances builds = new JobInstances(); for (String buildName : buildNames) { builds.add(JobInstanceMother.buildEndingWithState(endState, result, buildName)); } Stage stage = new Stage(stageName, builds, DEFAULT_APPROVED_BY, null, null, new TimeProvider()); stage.calculateResult(); stage.setCompletedByTransitionId(stage.getJobInstances().last().getTransitions().latestTransitionId()); return stage; }
public static void toJSON(OutputWriter jsonWriter, JobInstance jobInstance) { jsonWriter.add("id", jobInstance.getId()); jsonWriter.add("name", jobInstance.getName()); if (jobInstance.getState() != null) { jsonWriter.add("state", jobInstance.getState().toString()); } if (jobInstance.getResult() != null) { jsonWriter.add("result", jobInstance.getResult().toString()); } if (jobInstance.getScheduledDate() != null) { jsonWriter.add("scheduled_date", jobInstance.getScheduledDate().getTime()); } jsonWriter.add("rerun", jobInstance.isRerun()); if (jobInstance.getOriginalJobId() == null) { jsonWriter.add("original_job_id", (String) null); } else { jsonWriter.add("original_job_id", jobInstance.getOriginalJobId()); } jsonWriter.addWithDefaultIfBlank("agent_uuid", jobInstance.getAgentUuid(), (String) null); jsonWriter.add("pipeline_name", (String) null); jsonWriter.add("pipeline_counter", (String) null); jsonWriter.add("stage_name", (String) null); jsonWriter.add("stage_counter", (String) null); jsonWriter.addChildList("job_state_transitions", jobStateTransitionsWriter -> jobInstance.getTransitions().forEach( jobStateTransition -> jobStateTransitionsWriter.addChild( jobStateTransitionWriter -> JobStateTransitionRepresenter.toJSON(jobStateTransitionWriter, jobStateTransition)))); } }