/** * Returns the time the job did run the last time. This is only useful for periodic jobs, daily jobs * or jobs which were rescheduled. If the job didn't run, yet, then it returns 0. * * @return The last time the rescheduled or periodic job did run. */ public long getLastRun() { return mRequest.getLastRun(); }
@Test public void verifyLastRunIsSet() { TestClock clock = new TestClock(); clock.setTime(13, 0); JobRequest request = verifyExecutionAndSuccessfulReschedule(clock, 0, 1); assertThat(request.getLastRun()).isEqualTo(clock.currentTimeMillis()); }
private void testPeriodicJob(Class<? extends Job> clazz, Job.Result result) throws Exception { int jobId = DummyJobs.createBuilder(clazz) .setPeriodic(TimeUnit.MINUTES.toMillis(15)) .build() .schedule(); assertThat(manager().getJobRequest(jobId).getLastRun()).isEqualTo(0); executeJob(jobId, result); long lastRun = manager().getJobRequest(jobId).getLastRun(); assertThat(lastRun).isGreaterThan(0); Thread.sleep(2L); resetJob(jobId); executeJob(jobId, result); assertThat(manager().getJobRequest(jobId).getLastRun()).isGreaterThan(lastRun); }
@Test public void testUpdateDoesNotCrash() { JobRequest request = DummyJobs.createOneOff(); int jobId = request.schedule(); assertThat(request.getScheduledAt()).isGreaterThan(0L); assertThat(request.getFailureCount()).isEqualTo(0); assertThat(request.getLastRun()).isEqualTo(0); SQLiteDatabase database = mock(SQLiteDatabase.class); when(database.update(anyString(), any(ContentValues.class), nullable(String.class), any(String[].class))).thenThrow(SQLException.class); manager().getJobStorage().injectDatabase(database); request.updateStats(true, true); // updates the database value, but fails in this case assertThat(request.getFailureCount()).isEqualTo(1); // in memory value was updated, keep that assertThat(request.getLastRun()).isGreaterThan(0); // kinda hacky, this removes the request from the cache, but doesn't delete it in the database, // because we're using the mock at the moment manager().getJobStorage().remove(request); manager().getJobStorage().injectDatabase(null); // reset request = manager().getJobRequest(jobId); assertThat(request.getFailureCount()).isEqualTo(0); assertThat(request.getLastRun()).isEqualTo(0); }
assertThat(request.getLastRun()).isEqualTo(0);
/** * Returns the time the job did run the last time. This is only useful for periodic jobs, daily jobs * or jobs which were rescheduled. If the job didn't run, yet, then it returns 0. * * @return The last time the rescheduled or periodic job did run. */ public long getLastRun() { return mRequest.getLastRun(); }