return schedule(baseBuilder, true, startMs, endMs, false);
@Override public void run() { try { int jobId = schedule(baseBuilder, startMs, endMs); callback.onJobScheduled(jobId, baseBuilder.mTag, null); } catch (Exception e) { callback.onJobScheduled(JobRequest.JobScheduledCallback.JOB_ID_ERROR, baseBuilder.mTag, e); } } });
@Test(expected = IllegalArgumentException.class) public void verifyTooLargeValue() { long start = TimeUnit.HOURS.toMillis(24); long end = 1L; DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), start, end); }
private void verifyScheduleInNextHour(Clock clock) { JobConfig.setClock(clock); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(clock.currentTimeMillis()); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); long start = TimeUnit.HOURS.toMillis(hour + 1) + TimeUnit.MINUTES.toMillis(minute); long end = start + TimeUnit.HOURS.toMillis(1); DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), start, end); assertThat(manager().getAllJobRequests()).hasSize(1); JobRequest request = manager().getAllJobRequests().iterator().next(); assertThat(request.getStartMs()).isEqualTo(TimeUnit.HOURS.toMillis(1)); assertThat(request.getEndMs()).isEqualTo(TimeUnit.HOURS.toMillis(2)); }
@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); }
@SuppressWarnings("ConstantConditions") @Test public void verifyEarlyExecution() { TestClock clock = new TestClock(); clock.setTime(13, 0); JobRequest request = verifyExecutionAndSuccessfulReschedule(clock, TimeUnit.HOURS.toMillis(14), TimeUnit.HOURS.toMillis(15)); assertThat(request.getStartMs()).isEqualTo(TimeUnit.HOURS.toMillis(25)); assertThat(request.getEndMs()).isEqualTo(TimeUnit.HOURS.toMillis(26)); int id = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessDailyJob.class), TimeUnit.HOURS.toMillis(14), TimeUnit.HOURS.toMillis(15)); request = manager().getJobRequest(id); assertThat(request.getStartMs()).isEqualTo(TimeUnit.HOURS.toMillis(1)); assertThat(request.getEndMs()).isEqualTo(TimeUnit.HOURS.toMillis(2)); }
@Test public void verifyDailyJobIsNotExact() { long time = 1L; int jobId = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), time, time); JobRequest request = manager().getJobRequest(jobId); assertThat(request).isNotNull(); assertThat(request.isExact()).isFalse(); }
private void verifyScheduleOverMidnight(Clock clock) { JobConfig.setClock(clock); long start = TimeUnit.HOURS.toMillis(24) - 1L; long end = 1L; DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), start, end); assertThat(manager().getAllJobRequests()).hasSize(1); JobRequest request = manager().getAllJobRequests().iterator().next(); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(clock.currentTimeMillis()); int hour = calendar.get(Calendar.HOUR_OF_DAY); long maxStart = TimeUnit.HOURS.toMillis(24 - hour); assertThat(request.getStartMs()).isLessThan(maxStart); assertThat(request.getEndMs()).isLessThan(maxStart + 3); }
@Test public void verifyHasExtras() { long start = 0; long end = 1L; int jobId = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class), start, end); JobRequest request = manager().getJobRequest(jobId); assertThat(request).isNotNull(); assertThat(request.getExtras().getLong(DailyJob.EXTRA_START_MS, -1)).isEqualTo(0L); assertThat(request.getExtras().getLong(DailyJob.EXTRA_END_MS, -1)).isEqualTo(1L); assertThat(request.getExtras().size()).isEqualTo(2); }
@Test public void verifyNotFoundJobCanceledDailyJob() { final String tag = "something"; int jobId = DailyJob.schedule(new JobRequest.Builder(tag), TimeUnit.HOURS.toMillis(5), TimeUnit.HOURS.toMillis(6)); assertThat(manager().getAllJobRequestsForTag(tag)).hasSize(1); executeJob(jobId, Job.Result.FAILURE); assertThat(manager().getAllJobRequestsForTag(tag)).isEmpty(); }
@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 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); } }
int newJobId = schedule(request.createBuilder(), false, extras.getLong(EXTRA_START_MS, 0) % DAY, extras.getLong(EXTRA_END_MS, 0L) % DAY, true);
@Test public void verifyExtraValuesAreOverwritten() { long start = 0; long end = 1L; PersistableBundleCompat extras = new PersistableBundleCompat(); extras.putLong("something", 9L); // make sure this value is not overwritten extras.putLong(DailyJob.EXTRA_START_MS, 9L); // make sure they're overwritten extras.putLong(DailyJob.EXTRA_END_MS, 9L); int jobId = DailyJob.schedule(DummyJobs.createBuilder(DummyJobs.SuccessJob.class).setExtras(extras), start, end); JobRequest request = manager().getJobRequest(jobId); assertThat(request).isNotNull(); assertThat(request.getExtras().getLong(DailyJob.EXTRA_START_MS, -1)).isEqualTo(0L); assertThat(request.getExtras().getLong(DailyJob.EXTRA_END_MS, -1)).isEqualTo(1L); assertThat(request.getExtras().size()).isEqualTo(3); }
@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(); }
int jobId = DailyJob.schedule(new JobRequest.Builder("any").setRequiresCharging(true).setRequirementsEnforced(true), time, time); assertThat(manager().getAllJobRequests()).hasSize(1); jobId = DailyJob.schedule(new JobRequest.Builder("any").setRequiresCharging(false).setRequirementsEnforced(true), time, time); assertThat(manager().getAllJobRequests()).hasSize(1);
return schedule(baseBuilder, true, startMs, endMs, false);
@Override public void run() { try { int jobId = schedule(baseBuilder, startMs, endMs); callback.onJobScheduled(jobId, baseBuilder.mTag, null); } catch (Exception e) { callback.onJobScheduled(JobRequest.JobScheduledCallback.JOB_ID_ERROR, baseBuilder.mTag, e); } } });
int newJobId = schedule(request.createBuilder(), false, extras.getLong(EXTRA_START_MS, 0) % DAY, extras.getLong(EXTRA_END_MS, 0L) % DAY, true);