@Test public void shouldFindAllJobsOfSpecificType() throws Exception { // Given final String type = "TEST"; final String otherType = "OTHERTEST"; repository.createOrUpdate(builder() .setJobId("1") .setJobType(type) .setStarted(now(fixed(Instant.now().minusSeconds(10), systemDefault()))) .setStopped(now(fixed(Instant.now().minusSeconds(7), systemDefault()))) .setHostname("localhost") .setStatus(JobStatus.OK) .build()); repository.createOrUpdate(newJobInfo("2", otherType, systemDefaultZone(), "localhost")); repository.createOrUpdate(newJobInfo("3", type, systemDefaultZone(), "localhost")); // When final List<JobInfo> jobsType1 = repository.findByType(type); final List<JobInfo> jobsType2 = repository.findByType(otherType); // Then assertThat(jobsType1.size(), is(2)); assertThat(jobsType1.stream().anyMatch(job -> job.getJobId().equals("1")), is(true)); assertThat(jobsType1.stream().anyMatch(job -> job.getJobId().equals("3")), is(true)); assertThat(jobsType2.size(), is(1)); assertThat(jobsType2.stream().anyMatch(job -> job.getJobId().equals("2")), is(true)); }
@Test public void shouldClearJobInfos() throws Exception { //Given JobInfo stoppedJob = builder() .setJobId("some/job/stopped") .setJobType("test") .setStarted(now(fixed(Instant.now().minusSeconds(10), systemDefault()))) .setStopped(now(fixed(Instant.now().minusSeconds(7), systemDefault()))) .setHostname("localhost") .setStatus(JobStatus.OK) .build(); repository.createOrUpdate(stoppedJob); //When repository.deleteAll(); //Then assertThat(repository.findAll(), is(emptyList())); }
@Test public void shouldRemoveJob() throws Exception { JobInfo stoppedJob = builder() .setJobId("some/job/stopped") .setJobType("test") .setStarted(now(fixed(Instant.now().minusSeconds(10), systemDefault()))) .setStopped(now(fixed(Instant.now().minusSeconds(7), systemDefault()))) .setHostname("localhost") .setStatus(JobStatus.OK) .build(); repository.createOrUpdate(stoppedJob); repository.createOrUpdate(stoppedJob); repository.removeIfStopped(stoppedJob.getJobId()); assertThat(repository.size(), is(0L)); }
@Test public void shouldKeepNJobsOfEachTypePresentAndNotRemoveRunningJobs() { // given JobInfo stoppedJob = builder() .setJobId("foo1") .setJobType("TYPE1") .setStarted(now(now)) .setStopped(now(now)) .setHostname("localhost") .setStatus(OK) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(stoppedJob); createOrUpdate(stoppedJob.copy().setJobId("foo2").setStopped(now(muchEarlier)).setStarted(now(muchEarlier)).build()); createOrUpdate(stoppedJob.copy().setJobId("foo3").setStopped(now(evenEarlier)).setStarted(now(evenEarlier)).build()); createOrUpdate(stoppedJob.copy().setJobId("bar1").setJobType("TYPE2").setStopped(now(earlier)).setStarted(now(earlier)).build()); createOrUpdate(stoppedJob.copy().setJobId("bar2").setJobType("TYPE2").setStopped(now(muchEarlier)).setStarted(now(muchEarlier)).build()); createOrUpdate(stoppedJob.copy().setJobId("bar3").setJobType("TYPE2").setStopped(now(evenEarlier)).setStarted(now(evenEarlier)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 2); // when strategy.doCleanUp(); // then assertThat(repository.size(), is(4L)); assertThat(repository.findByType("TYPE1"), hasSize(2)); assertThat(repository.findByType("TYPE2"), hasSize(2)); }
@Test public void shouldKeepAtLeastOneSuccessfulJob() { // given JobInfo job = builder() .setJobId("foobar") .setJobType("TYPE") .setStarted(now(muchEarlier)) .setStopped(now(now)) .setHostname("localhost") .setStatus(ERROR) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(job.copy().setStatus(OK).build()); createOrUpdate(job.copy().setStarted(now(now)).setJobId("foo").build()); createOrUpdate(job.copy().setJobId("bar").setStarted(now(earlier)).build()); createOrUpdate(job.copy().setJobId("barzig").setStarted(now(evenEarlier)).build()); createOrUpdate(job.copy().setJobId("foozification").setStarted(now(evenEarlier)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 2); // when strategy.doCleanUp(); // then assertThat(repository.size(), is(3L)); assertThat(repository.findOne("foo"), isPresent()); assertThat(repository.findOne("bar"), isPresent()); assertThat(repository.findOne("barzig"), isAbsent()); assertThat(repository.findOne("foobar"), isPresent()); assertThat(repository.findOne("foozification"), isAbsent()); }
@Test public void shouldOnlyRemoveStoppedJobs() { // given JobInfo job = builder() .setJobId("foo") .setJobType("TYPE") .setHostname("localhost") .setStatus(SKIPPED) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(job.copy().setStarted(now(now)).setStopped(now(now)).build()); createOrUpdate(job.copy().setStarted(now(earlier)).setJobId("foobar").setStarted(now(earlier)).build()); createOrUpdate(job.copy().setStarted(now(muchEarlier)).setJobId("bar").setStopped(now(now)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 1); // when strategy.doCleanUp(); // then assertThat(repository.findOne("foo"), isPresent()); assertThat(repository.findOne("foobar"), isPresent()); assertThat(repository.findOne("bar"), isAbsent()); assertThat(repository.size(), is(2L)); } }
@Test public void shouldOnlyRemoveStoppedJobs() { // given JobInfo job = builder() .setJobId("foo") .setJobType("TYPE") .setHostname("localhost") .setStatus(OK) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(job.copy().setStarted(now(now)).setStopped(now(now)).build()); createOrUpdate(job.copy().setStarted(now(earlier)).setJobId("foobar").setStarted(now(earlier)).build()); createOrUpdate(job.copy().setStarted(now(muchEarlier)).setJobId("bar").setStopped(now(now)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 1); // when strategy.doCleanUp(); // then assertThat(repository.findOne("foo"), isPresent()); assertThat(repository.findOne("foobar"), isPresent()); assertThat(repository.findOne("bar"), isAbsent()); assertThat(repository.size(), is(2L)); }
@Test public void shouldRemoveOldestJobs() { // given JobInfo job = builder() .setJobId("foo") .setJobType("TYPE") .setStarted(now(now)) .setStopped(now(now)) .setHostname("localhost") .setStatus(OK) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(job); createOrUpdate(job.copy().setJobId("foobar").setStarted(now(earlier)).build()); createOrUpdate(job.copy().setJobId("bar").setStarted(now(muchEarlier)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 2); // when strategy.doCleanUp(); // then assertThat(repository.size(), is(2L)); assertThat(repository.findOne("bar"), isAbsent()); }
@Test public void shouldRemoveOldestJobs() { // given JobInfo job = builder() .setJobId("foo") .setJobType("TYPE") .setStarted(now(now)) .setStopped(now(now)) .setHostname("localhost") .setStatus(SKIPPED) .build(); JobRepository repository = new InMemJobRepository() {{ createOrUpdate(job); createOrUpdate(job.copy().setJobId("foobar").setStarted(now(earlier)).build()); createOrUpdate(job.copy().setJobId("bar").setStarted(now(muchEarlier)).build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 2); // when strategy.doCleanUp(); // then assertThat(repository.size(), is(2L)); assertThat(repository.findOne("bar"), isAbsent()); }
@Test public void shouldBeOkToKeepAllJobs() { // given JobRepository repository = new InMemJobRepository() {{ createOrUpdate(builder() .setJobId("foo1") .setJobType("TYPE1") .setStarted(now(now)) .setStopped(now(now)) .setHostname("localhost") .setStatus(OK) .build()); }}; KeepLastJobs strategy = new KeepLastJobs(repository, 2); // when strategy.doCleanUp(); // then assertThat(repository.size(), is(1L)); } }