lib/scheduler: fix 1s mismatch with underlying cron library
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/30f55595 Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/30f55595 Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/30f55595 Branch: refs/heads/develop Commit: 30f555958404e772a4a6faf40ac67ec0c92db800 Parents: 3330314 Author: Paul Merlin <[email protected]> Authored: Mon Nov 16 18:41:15 2015 +0100 Committer: Paul Merlin <[email protected]> Committed: Mon Nov 16 18:41:15 2015 +0100 ---------------------------------------------------------------------- .../org/apache/zest/library/scheduler/CronSchedule.java | 3 ++- .../apache/zest/library/scheduler/internal/Execution.java | 4 ++-- .../org/apache/zest/library/scheduler/CronScheduleTest.java | 9 +++++---- 3 files changed, 9 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-java/blob/30f55595/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java index 9ee212d..a1414af 100644 --- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java +++ b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/CronSchedule.java @@ -83,7 +83,8 @@ public interface CronSchedule { actualFrom = firstRun; } - Long nextRun = createCron().firstRunAfter( actualFrom ); + // TODO:PM cron "next run" handling mismatch with the underlying cron library + Long nextRun = createCron().firstRunAfter( actualFrom + 1000 ); LOGGER.info( "CronSchedule::nextRun({}) is {}", from, firstRun ); return nextRun; } http://git-wip-us.apache.org/repos/asf/zest-java/blob/30f55595/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java index 5fd4c5e..7eb53ea 100644 --- a/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java +++ b/libraries/scheduler/src/main/java/org/apache/zest/library/scheduler/internal/Execution.java @@ -171,7 +171,7 @@ public interface Execution { submitTaskForExecution( oldScheduleTime ); Schedule schedule = uow.get( Schedule.class, oldScheduleTime.scheduleIdentity() ); - long nextTime = schedule.nextRun( now + 1000 ); + long nextTime = schedule.nextRun( now ); if( nextTime != Long.MIN_VALUE ) { ScheduleTime newScheduleTime = new ScheduleTime( schedule.identity().get(), nextTime ); @@ -207,7 +207,7 @@ public interface Execution public void dispatchForExecution( Schedule schedule ) { long now = System.currentTimeMillis(); - long nextRun = schedule.nextRun( now + 1000 ); + long nextRun = schedule.nextRun( now ); if( nextRun > 0 ) { synchronized( lock ) http://git-wip-us.apache.org/repos/asf/zest-java/blob/30f55595/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java ---------------------------------------------------------------------- diff --git a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java index 8166e32..ed999fd 100644 --- a/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java +++ b/libraries/scheduler/src/test/java/org/apache/zest/library/scheduler/CronScheduleTest.java @@ -29,7 +29,7 @@ import org.apache.zest.test.EntityTestAssembler; import org.joda.time.DateTime; import org.junit.Test; -import static org.hamcrest.number.IsCloseTo.closeTo; +import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class CronScheduleTest extends AbstractZestTest @@ -57,11 +57,12 @@ public class CronScheduleTest extends AbstractZestTest builder.instance().task().set( task ); builder.instance().cronExpression().set( "*/15 * * * * *" ); CronSchedule schedule = builder.newInstance(); - long runAt = schedule.nextRun( System.currentTimeMillis() ); + long nextRun = schedule.nextRun( System.currentTimeMillis() ); for( int i = 0; i < 1000; i++ ) { - long nextRun = schedule.nextRun( runAt + 1000 ); // Needs to push forward one second... - assertThat( "At:" + i, (double) nextRun, closeTo( runAt + 15000, 50 ) ); + long previousRun = nextRun; + nextRun = schedule.nextRun( previousRun ); + assertThat( "nextRun( previousRun + 1s ) @" + i, nextRun, is( previousRun + 15000 ) ); } work.discard(); }
