From 1ce350449d0d6a99efd5d268c4251264917d031c Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 14 Mar 2013 12:42:02 +0000
Subject: [PATCH] use time limit as time limit of the task.

SVN: 28613
---
 .../path/PathInfoDatabaseFeedingTask.java      | 18 ++++++++++--------
 .../path/PathInfoDatabaseFeedingTaskTest.java  |  9 +++++----
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
index a1fc6b3eef1..43ed9c3913f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTask.java
@@ -31,6 +31,8 @@ import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.maintenance.IMaintenanceTask;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
 import ch.systemsx.cisd.common.time.DateTimeUtils;
+import ch.systemsx.cisd.common.utilities.ITimeProvider;
+import ch.systemsx.cisd.common.utilities.SystemTimeProvider;
 import ch.systemsx.cisd.etlserver.postregistration.ICleanupTask;
 import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTask;
 import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTaskExecutor;
@@ -93,6 +95,8 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
 
     private IDataSetDirectoryProvider directoryProvider;
 
+    private ITimeProvider timeProvider;
+    
     private IPathsInfoDAO dao;
 
     private IHierarchicalContentFactory hierarchicalContentFactory; // filesystem based
@@ -112,19 +116,20 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
     public PathInfoDatabaseFeedingTask(Properties properties, IEncapsulatedOpenBISService service)
     {
         this(service, getDirectoryProvider(), createDAO(), createContentFactory(),
-                getComputeChecksumFlag(properties), 0, 0, 0);
+                SystemTimeProvider.SYSTEM_TIME_PROVIDER, getComputeChecksumFlag(properties), 0, 0, 0);
     }
 
     @Private
     PathInfoDatabaseFeedingTask(IEncapsulatedOpenBISService service,
             IDataSetDirectoryProvider directoryProvider, IPathsInfoDAO dao,
-            IHierarchicalContentFactory hierarchicalContentFactory, boolean computeChecksum,
+            IHierarchicalContentFactory hierarchicalContentFactory, ITimeProvider timeProvider, boolean computeChecksum,
             int chunkSize, int maxNumberOfChunks, long timeLimit)
     {
         this.service = service;
         this.directoryProvider = directoryProvider;
         this.dao = dao;
         this.hierarchicalContentFactory = hierarchicalContentFactory;
+        this.timeProvider = timeProvider;
         this.computeChecksum = computeChecksum;
         this.chunkSize = chunkSize;
         maxNumerOfChunks = maxNumberOfChunks;
@@ -142,6 +147,7 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
     {
         service = ServiceProvider.getOpenBISService();
         directoryProvider = getDirectoryProvider();
+        timeProvider = SystemTimeProvider.SYSTEM_TIME_PROVIDER;
         dao = createDAO();
         hierarchicalContentFactory = createContentFactory();
         computeChecksum = getComputeChecksumFlag(properties);
@@ -329,22 +335,18 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
     {
         return new IStopCondition()
             {
-                private long minimum = Long.MAX_VALUE;
+                private long startTime = timeProvider.getTimeInMilliseconds();
 
-                private long maximum = Long.MIN_VALUE;
 
                 @Override
                 public void handle(SimpleDataSetInformationDTO dataSet)
                 {
-                    long time = dataSet.getRegistrationTimestamp().getTime();
-                    minimum = Math.min(minimum, time);
-                    maximum = Math.max(maximum, time);
                 }
 
                 @Override
                 public boolean fulfilled()
                 {
-                    return maximum - minimum > timeLimit;
+                    return timeProvider.getTimeInMilliseconds() - startTime > timeLimit;
                 }
             };
     }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
index 3e75d204fd8..d9cba71a42c 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/path/PathInfoDatabaseFeedingTaskTest.java
@@ -34,6 +34,7 @@ import org.testng.annotations.Test;
 import ch.rinn.restrictions.Friend;
 import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
 import ch.systemsx.cisd.common.logging.LogInitializer;
+import ch.systemsx.cisd.common.utilities.MockTimeProvider;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.IHierarchicalContentFactory;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode;
@@ -139,7 +140,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
     }
     
     @Test
-    public void testAsMaintenanceTaskWithFinitNumberOfChunks()
+    public void testAsMaintenanceTaskWithFiniteNumberOfChunks()
     {
         final SimpleDataSetInformationDTO ds1 = dataSet(1000);
         final SimpleDataSetInformationDTO ds2 = dataSet(2000);
@@ -188,7 +189,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
     }
     
     @Test
-    public void testAsMaintenanceTaskWithFinitTimeLimit()
+    public void testAsMaintenanceTaskWithFiniteTimeLimit()
     {
         final SimpleDataSetInformationDTO ds1 = dataSet(1000);
         final SimpleDataSetInformationDTO ds2 = dataSet(2000);
@@ -222,7 +223,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
         prepareCreateLastFeedingEvent(ds2.getRegistrationTimestamp());
         prepareCreateLastFeedingEvent(ds4.getRegistrationTimestamp());
 
-        createTask(2, 0, 2000).execute();
+        createTask(2, 0, 1500).execute();
     }
 
     @Test
@@ -453,7 +454,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
             long timeLimite)
     {
         return new PathInfoDatabaseFeedingTask(service, directoryProvider, dao, contentFactory,
-                true, chunkSize, maxNumberOfChunks, timeLimite);
+                new MockTimeProvider(0, 1000), true, chunkSize, maxNumberOfChunks, timeLimite);
     }
 
 }
-- 
GitLab