/** * @param tag The tag of the pending requests. * @return A duplicate {@link Set} containing all pending JobRequests associated with this * {@code tag} or an empty set. Never returns {@code null}. The set may be modified without * direct effects to the actual backing store. */ public Set<JobRequest> getAllJobRequestsForTag(@NonNull String tag) { return getAllJobRequests(tag, false, true); }
/** * @return A duplicate {@link Set} containing all pending JobRequests or an empty set. * Never returns {@code null}. The set may be modified without direct effects to the actual * backing store. * @see #getJobRequest(int) */ @NonNull public Set<JobRequest> getAllJobRequests() { return getAllJobRequests(null, false, true); }
@SuppressWarnings("UnusedReturnValue") /*package*/ int rescheduleJobs(JobManager manager) { return rescheduleJobs(manager, manager.getAllJobRequests(null, true, true)); }
@Test @Config(sdk = Build.VERSION_CODES.M) public void verifyPeriodicNotRescheduledMSwap() { runJobAndCancelAllDuringExecution(false, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.KITKAT) public void verifyPeriodicNotRescheduledKSwap() { runJobAndCancelAllDuringExecution(false, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.N) public void verifyPeriodicFlexNotRescheduledNSwap() { runJobAndCancelAllDuringExecution(true, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.N) public void verifyPeriodicNotRescheduledNSwao() { runJobAndCancelAllDuringExecution(false, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.KITKAT) public void verifyPeriodicFlexNotRescheduledK() { runJobAndCancelAllDuringExecution(true, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.M) public void verifyPeriodicFlexNotRescheduledM() { runJobAndCancelAllDuringExecution(true, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.M) public void verifyPeriodicNotRescheduledM() { runJobAndCancelAllDuringExecution(false, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.KITKAT) public void verifyPeriodicNotRescheduledK() { runJobAndCancelAllDuringExecution(false, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.KITKAT) public void verifyPeriodicFlexNotRescheduledKSwap() { runJobAndCancelAllDuringExecution(true, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.N) public void verifyPeriodicFlexNotRescheduledN() { runJobAndCancelAllDuringExecution(true, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.N) public void verifyPeriodicNotRescheduledN() { runJobAndCancelAllDuringExecution(false, false); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test @Config(sdk = Build.VERSION_CODES.M) public void verifyPeriodicFlexNotRescheduledMSwap() { runJobAndCancelAllDuringExecution(true, true); assertThat(manager().getAllJobRequests()).isEmpty(); }
@Test public void verifyScheduledTwiceOverridesExisting() { long time = 1L; DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), time, time); DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), time, time); Set<JobRequest> requests = manager().getAllJobRequests(); assertThat(requests).hasSize(1); assertThat(requests.iterator().next().getTag()).isEqualTo(DummyJobs.SuccessJob.TAG); }
@Test public void verifyScheduledAtMidnight() { long start = 0; long end = 1L; DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), start, end); assertThat(manager().getAllJobRequests()).hasSize(1); }
private JobRequest verifyExecutionAndSuccessfulReschedule(Clock clock, long start, long end) { JobConfig.setClock(clock); int jobId = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessDailyJob.class), start, end); assertThat(jobId).isEqualTo(1); executeJob(jobId, Job.Result.SUCCESS); assertThat(manager().getAllJobRequests()).hasSize(1); JobRequest newRequest = manager().getJobRequest(jobId + 1); assertThat(newRequest).isNotNull(); return newRequest; }
@Test public void verifyImmediateExecution() { long time = 1L; int nowJobId = DailyJob.startNowOnce(DummyJobs.createBuilder(DummyJobs.SuccessJob.class)); int normalJobId = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), time, time); assertThat(manager().getAllJobRequests()).hasSize(2); executeJob(nowJobId, Job.Result.SUCCESS); assertThat(manager().getAllJobRequests()).hasSize(1); assertThat(manager().getJobRequest(normalJobId)).isNotNull(); }
@Test public void verifyScheduledImmediatelyIsNotOverridden() { long time = 1L; DailyJob.startNowOnce(DummyJobs.createBuilder(DummyJobs.SuccessJob.class)); DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), time, time); Set<JobRequest> requests = manager().getAllJobRequests(); assertThat(requests).hasSize(2); for (JobRequest request : requests) { assertThat(request.getTag()).isEqualTo(DummyJobs.SuccessJob.TAG); } }