Skip to content
Snippets Groups Projects
Commit 1ce35044 authored by felmer's avatar felmer
Browse files

use time limit as time limit of the task.

SVN: 28613
parent ee518dda
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,8 @@ import ch.systemsx.cisd.common.logging.LogFactory; ...@@ -31,6 +31,8 @@ import ch.systemsx.cisd.common.logging.LogFactory;
import ch.systemsx.cisd.common.maintenance.IMaintenanceTask; import ch.systemsx.cisd.common.maintenance.IMaintenanceTask;
import ch.systemsx.cisd.common.properties.PropertyUtils; import ch.systemsx.cisd.common.properties.PropertyUtils;
import ch.systemsx.cisd.common.time.DateTimeUtils; 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.ICleanupTask;
import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTask; import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTask;
import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTaskExecutor; import ch.systemsx.cisd.etlserver.postregistration.IPostRegistrationTaskExecutor;
...@@ -93,6 +95,8 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis ...@@ -93,6 +95,8 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
private IDataSetDirectoryProvider directoryProvider; private IDataSetDirectoryProvider directoryProvider;
private ITimeProvider timeProvider;
private IPathsInfoDAO dao; private IPathsInfoDAO dao;
private IHierarchicalContentFactory hierarchicalContentFactory; // filesystem based private IHierarchicalContentFactory hierarchicalContentFactory; // filesystem based
...@@ -112,19 +116,20 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis ...@@ -112,19 +116,20 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
public PathInfoDatabaseFeedingTask(Properties properties, IEncapsulatedOpenBISService service) public PathInfoDatabaseFeedingTask(Properties properties, IEncapsulatedOpenBISService service)
{ {
this(service, getDirectoryProvider(), createDAO(), createContentFactory(), this(service, getDirectoryProvider(), createDAO(), createContentFactory(),
getComputeChecksumFlag(properties), 0, 0, 0); SystemTimeProvider.SYSTEM_TIME_PROVIDER, getComputeChecksumFlag(properties), 0, 0, 0);
} }
@Private @Private
PathInfoDatabaseFeedingTask(IEncapsulatedOpenBISService service, PathInfoDatabaseFeedingTask(IEncapsulatedOpenBISService service,
IDataSetDirectoryProvider directoryProvider, IPathsInfoDAO dao, IDataSetDirectoryProvider directoryProvider, IPathsInfoDAO dao,
IHierarchicalContentFactory hierarchicalContentFactory, boolean computeChecksum, IHierarchicalContentFactory hierarchicalContentFactory, ITimeProvider timeProvider, boolean computeChecksum,
int chunkSize, int maxNumberOfChunks, long timeLimit) int chunkSize, int maxNumberOfChunks, long timeLimit)
{ {
this.service = service; this.service = service;
this.directoryProvider = directoryProvider; this.directoryProvider = directoryProvider;
this.dao = dao; this.dao = dao;
this.hierarchicalContentFactory = hierarchicalContentFactory; this.hierarchicalContentFactory = hierarchicalContentFactory;
this.timeProvider = timeProvider;
this.computeChecksum = computeChecksum; this.computeChecksum = computeChecksum;
this.chunkSize = chunkSize; this.chunkSize = chunkSize;
maxNumerOfChunks = maxNumberOfChunks; maxNumerOfChunks = maxNumberOfChunks;
...@@ -142,6 +147,7 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis ...@@ -142,6 +147,7 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
{ {
service = ServiceProvider.getOpenBISService(); service = ServiceProvider.getOpenBISService();
directoryProvider = getDirectoryProvider(); directoryProvider = getDirectoryProvider();
timeProvider = SystemTimeProvider.SYSTEM_TIME_PROVIDER;
dao = createDAO(); dao = createDAO();
hierarchicalContentFactory = createContentFactory(); hierarchicalContentFactory = createContentFactory();
computeChecksum = getComputeChecksumFlag(properties); computeChecksum = getComputeChecksumFlag(properties);
...@@ -329,22 +335,18 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis ...@@ -329,22 +335,18 @@ public class PathInfoDatabaseFeedingTask implements IMaintenanceTask, IPostRegis
{ {
return new IStopCondition() return new IStopCondition()
{ {
private long minimum = Long.MAX_VALUE; private long startTime = timeProvider.getTimeInMilliseconds();
private long maximum = Long.MIN_VALUE;
@Override @Override
public void handle(SimpleDataSetInformationDTO dataSet) public void handle(SimpleDataSetInformationDTO dataSet)
{ {
long time = dataSet.getRegistrationTimestamp().getTime();
minimum = Math.min(minimum, time);
maximum = Math.max(maximum, time);
} }
@Override @Override
public boolean fulfilled() public boolean fulfilled()
{ {
return maximum - minimum > timeLimit; return timeProvider.getTimeInMilliseconds() - startTime > timeLimit;
} }
}; };
} }
......
...@@ -34,6 +34,7 @@ import org.testng.annotations.Test; ...@@ -34,6 +34,7 @@ import org.testng.annotations.Test;
import ch.rinn.restrictions.Friend; import ch.rinn.restrictions.Friend;
import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase;
import ch.systemsx.cisd.common.logging.LogInitializer; 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.IHierarchicalContentFactory;
import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent; import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode; import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode;
...@@ -139,7 +140,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase ...@@ -139,7 +140,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
} }
@Test @Test
public void testAsMaintenanceTaskWithFinitNumberOfChunks() public void testAsMaintenanceTaskWithFiniteNumberOfChunks()
{ {
final SimpleDataSetInformationDTO ds1 = dataSet(1000); final SimpleDataSetInformationDTO ds1 = dataSet(1000);
final SimpleDataSetInformationDTO ds2 = dataSet(2000); final SimpleDataSetInformationDTO ds2 = dataSet(2000);
...@@ -188,7 +189,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase ...@@ -188,7 +189,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
} }
@Test @Test
public void testAsMaintenanceTaskWithFinitTimeLimit() public void testAsMaintenanceTaskWithFiniteTimeLimit()
{ {
final SimpleDataSetInformationDTO ds1 = dataSet(1000); final SimpleDataSetInformationDTO ds1 = dataSet(1000);
final SimpleDataSetInformationDTO ds2 = dataSet(2000); final SimpleDataSetInformationDTO ds2 = dataSet(2000);
...@@ -222,7 +223,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase ...@@ -222,7 +223,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
prepareCreateLastFeedingEvent(ds2.getRegistrationTimestamp()); prepareCreateLastFeedingEvent(ds2.getRegistrationTimestamp());
prepareCreateLastFeedingEvent(ds4.getRegistrationTimestamp()); prepareCreateLastFeedingEvent(ds4.getRegistrationTimestamp());
createTask(2, 0, 2000).execute(); createTask(2, 0, 1500).execute();
} }
@Test @Test
...@@ -453,7 +454,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase ...@@ -453,7 +454,7 @@ public class PathInfoDatabaseFeedingTaskTest extends AbstractFileSystemTestCase
long timeLimite) long timeLimite)
{ {
return new PathInfoDatabaseFeedingTask(service, directoryProvider, dao, contentFactory, return new PathInfoDatabaseFeedingTask(service, directoryProvider, dao, contentFactory,
true, chunkSize, maxNumberOfChunks, timeLimite); new MockTimeProvider(0, 1000), true, chunkSize, maxNumberOfChunks, timeLimite);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment