You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2015/11/16 18:41:30 UTC

[2/2] zest-java git commit: lib/scheduler: fix 1s mismatch with underlying cron library

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 <pa...@apache.org>
Authored: Mon Nov 16 18:41:15 2015 +0100
Committer: Paul Merlin <pa...@apache.org>
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();
     }