From b8c41bd0293901e3f0283d61bcfaddef62086d34 Mon Sep 17 00:00:00 2001
From: pkupczyk <pkupczyk>
Date: Mon, 17 Mar 2014 08:56:25 +0000
Subject: [PATCH] SP-1240 / BIS-677 : Data Set Size Filling Maintenance Task -
 more tests

SVN: 31152
---
 ...isDBFromPathInfoDBMaintenanceTaskTest.java | 95 ++++++++++++++++++-
 1 file changed, 94 insertions(+), 1 deletion(-)

diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java
index a0f5913054a..d2b1ba13f0c 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest.java
@@ -74,10 +74,14 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
 
     private SimpleDataSetInformationDTO dataSet3;
 
+    private SimpleDataSetInformationDTO dataSet4;
+
     private PathEntryDTO entry1;
 
     private PathEntryDTO entry2;
 
+    private PathEntryDTO entry4;
+
     private BufferedAppender logRecorder;
 
     @BeforeMethod
@@ -98,6 +102,8 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
         dataSet2.setDataSetCode("DS_2");
         dataSet3 = new SimpleDataSetInformationDTO();
         dataSet3.setDataSetCode("DS_3");
+        dataSet4 = new SimpleDataSetInformationDTO();
+        dataSet4.setDataSetCode("DS_4");
 
         entry1 = new PathEntryDTO();
         entry1.setDataSetCode("DS_1");
@@ -106,6 +112,10 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
         entry2 = new PathEntryDTO();
         entry2.setDataSetCode("DS_2");
 
+        entry4 = new PathEntryDTO();
+        entry4.setDataSetCode("DS_4");
+        entry4.setSizeInBytes(234L);
+
         File storeRoot = getStoreRoot();
 
         if (storeRoot.exists())
@@ -479,7 +489,7 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
     }
 
     @Test
-    public void testExecuteWhenAllDataSetsGetFixed()
+    public void testExecuteWhenAllDataSetsGetFixedInOneChunk()
     {
         context.checking(new Expectations()
             {
@@ -508,6 +518,89 @@ public class FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTaskTest
         assertLogThatAllDataSetsHaveBeenFixed();
     }
 
+    @Test
+    public void testExecuteWhenAllDataSetsGetFixedInMultipleChunks()
+    {
+        final int chunkSize = 1;
+
+        context.checking(new Expectations()
+            {
+                {
+                    allowing(timeProvider).getTimeInMilliseconds();
+                    will(returnValue(0L));
+
+                    one(service).listPhysicalDataSetsWithUnknownSize(chunkSize, null);
+                    will(returnValue(Arrays.asList(dataSet1)));
+
+                    one(dao).listDataSetsSize(new String[] { dataSet1.getDataSetCode() });
+                    will(returnValue(Arrays.asList(entry1)));
+
+                    Map<String, Long> sizeMap = new HashedMap<String, Long>();
+                    sizeMap.put(dataSet1.getDataSetCode(), entry1.getSizeInBytes());
+
+                    one(service).updatePhysicalDataSetsSize(sizeMap);
+
+                    one(service).listPhysicalDataSetsWithUnknownSize(chunkSize, dataSet1.getDataSetCode());
+                    will(returnValue(Arrays.asList(dataSet4)));
+
+                    one(dao).listDataSetsSize(new String[] { dataSet4.getDataSetCode() });
+                    will(returnValue(Arrays.asList(entry4)));
+
+                    sizeMap = new HashedMap<String, Long>();
+                    sizeMap.put(dataSet4.getDataSetCode(), entry4.getSizeInBytes());
+
+                    one(service).updatePhysicalDataSetsSize(sizeMap);
+
+                    one(service).listPhysicalDataSetsWithUnknownSize(chunkSize, dataSet4.getDataSetCode());
+                    will(returnValue(Collections.emptyList()));
+                }
+            });
+
+        execute(null, chunkSize, null, null);
+
+        assertLogThatAllDataSetsHaveBeenFixed();
+    }
+
+    @Test
+    public void testExecuteWhenAllDataSetsGetFixedStartingFromTheLastSeen()
+    {
+        TestResources resources = new TestResources(getClass());
+
+        final long lastSeenCreationTime = System.currentTimeMillis();
+        final File lastSeenFile = resources.getResourceFile("correctLastSeenFile");
+
+        LastSeenDataSetFileContent lastSeenContent = new LastSeenDataSetFileContent();
+        lastSeenContent.setFileCreationTime(lastSeenCreationTime);
+        lastSeenContent.setLastSeenDataSetCode(dataSet1.getDataSetCode());
+        lastSeenContent.writeToFile(lastSeenFile);
+
+        context.checking(new Expectations()
+            {
+                {
+                    allowing(timeProvider).getTimeInMilliseconds();
+                    will(returnValue(0L));
+
+                    one(service).listPhysicalDataSetsWithUnknownSize(CHUNK_SIZE_DEFAULT, dataSet1.getDataSetCode());
+                    will(returnValue(Arrays.asList(dataSet4)));
+
+                    one(dao).listDataSetsSize(new String[] { dataSet4.getDataSetCode() });
+                    will(returnValue(Arrays.asList(entry4)));
+
+                    Map<String, Long> sizeMap = new HashedMap<String, Long>();
+                    sizeMap.put(dataSet4.getDataSetCode(), entry4.getSizeInBytes());
+
+                    one(service).updatePhysicalDataSetsSize(sizeMap);
+
+                    one(service).listPhysicalDataSetsWithUnknownSize(CHUNK_SIZE_DEFAULT, dataSet4.getDataSetCode());
+                    will(returnValue(Collections.emptyList()));
+                }
+            });
+
+        execute(null, null, lastSeenFile, null);
+
+        assertLogThatSomeDataSetsHaveNotBeenFixedYet();
+    }
+
     private void execute(Long timeLimit, Integer chunkSize, File lastSeenFile, Long deleteLastSeenFileInterval)
     {
         FillUnknownDataSetSizeInOpenbisDBFromPathInfoDBMaintenanceTask task =
-- 
GitLab