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