Skip to content
Snippets Groups Projects
Commit 721bc60c authored by felmer's avatar felmer
Browse files

SSDM-1010: Add archiving status attribute to SimpleDataSetInformationDTO. Use...

SSDM-1010: Add archiving status attribute to SimpleDataSetInformationDTO. Use it in SegmentedStoreUtils.freeSpace() to filter out the unavailable data sets in unarchiving scratch share.

SVN: 32732
parent c75ab69c
No related branches found
No related tags found
No related merge requests found
......@@ -269,7 +269,7 @@ public class SegmentedStoreUtils
}
List<DatasetDescription> filteredDataSets = new ArrayList<DatasetDescription>(dataSets);
List<SimpleDataSetInformationDTO> filteredDataSetsInShare =
new ArrayList<SimpleDataSetInformationDTO>(unarchivingScratchShare.getDataSetsOrderedBySize());
getAvailableDataSetsInUnarchivingScratchShare(unarchivingScratchShare);
removeCommonDataSets(filteredDataSets, filteredDataSetsInShare);
long requestedSpace = calculateTotalSizeOfDataSetsToKeep(filteredDataSets);
......@@ -299,6 +299,20 @@ public class SegmentedStoreUtils
+ FileUtilities.byteCountToDisplaySize(requestedSpace));
}
private static List<SimpleDataSetInformationDTO> getAvailableDataSetsInUnarchivingScratchShare(Share unarchivingScratchShare)
{
List<SimpleDataSetInformationDTO> availableDataSets = new ArrayList<SimpleDataSetInformationDTO>();
List<SimpleDataSetInformationDTO> dataSets = unarchivingScratchShare.getDataSetsOrderedBySize();
for (SimpleDataSetInformationDTO dataSet : dataSets)
{
if (dataSet.getStatus().isAvailable())
{
availableDataSets.add(dataSet);
}
}
return availableDataSets;
}
/**
* Remove common data sets from both lists
*/
......
......@@ -16,6 +16,9 @@
package ch.systemsx.cisd.openbis.dss.generic.shared.utils;
import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus.ARCHIVED;
import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus.AVAILABLE;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
......@@ -137,7 +140,7 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
@Test
public void testFreeSpaceForAShareWhichIsNotAnUnarchivingScratchShare()
{
SimpleDataSetInformationDTO ds1 = dataSet(1, 11 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds1 = dataSet(1, 11 * FileUtils.ONE_GB, AVAILABLE);
Share share = new Share(shareFolder, 0, freeSpaceProvider);
try
......@@ -157,7 +160,7 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
@Test
public void testFreeSpaceNothingToDo()
{
SimpleDataSetInformationDTO ds1 = dataSet(1, 11 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds1 = dataSet(1, 11 * FileUtils.ONE_GB, AVAILABLE);
Share share = new Share(shareFolder, 0, freeSpaceProvider);
share.setUnarchivingScratchShare(true);
RecordingMatcher<HostAwareFile> recordingFileMatcher = prepareFreeSpace(12 * FileUtils.ONE_GB);
......@@ -173,11 +176,11 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
@Test
public void testFreeSpaceRemovingOneDataSet()
{
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB, AVAILABLE);
Share share = new Share(shareFolder, 0, freeSpaceProvider);
share.setUnarchivingScratchShare(true);
share.addDataSet(ds5);
......@@ -210,13 +213,15 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
@Test
public void testFreeSpaceForThreeDataSetsOneAlreadyInShare()
{
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds0 = dataSet(0, 19 * FileUtils.ONE_GB, ARCHIVED);
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB, AVAILABLE);
Share share = new Share(shareFolder, 0, freeSpaceProvider);
share.setUnarchivingScratchShare(true);
share.addDataSet(ds0);
share.addDataSet(ds5);
share.addDataSet(ds3);
share.addDataSet(ds1);
......@@ -247,11 +252,11 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
@Test
public void testFreeSpaceRemovingDataSetsButStillNotEnoughFreeSpace()
{
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB);
SimpleDataSetInformationDTO ds1 = dataSet(1, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds2 = dataSet(2, 10 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds3 = dataSet(3, 12 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds4 = dataSet(4, 11 * FileUtils.ONE_GB, AVAILABLE);
SimpleDataSetInformationDTO ds5 = dataSet(5, 14 * FileUtils.ONE_GB, AVAILABLE);
Share share = new Share(shareFolder, 0, freeSpaceProvider);
share.setUnarchivingScratchShare(true);
share.addDataSet(ds3);
......@@ -841,12 +846,14 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase
return result;
}
private SimpleDataSetInformationDTO dataSet(int id, long size)
private SimpleDataSetInformationDTO dataSet(int id, long size, DataSetArchivingStatus status)
{
File dsFile = new File(shareFolder, "abc/ds-" + id);
dsFile.mkdirs();
FileUtilities.writeToFile(new File(dsFile, "read.me"), id + " nice works!");
return dataSet(dsFile, DATA_STORE_CODE, size);
SimpleDataSetInformationDTO dataSet = dataSet(dsFile, DATA_STORE_CODE, size);
dataSet.setStatus(status);
return dataSet;
}
private SimpleDataSetInformationDTO dataSet(File dataSetFile, String dataStoreCode, Long size)
......
......@@ -21,6 +21,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
......@@ -40,6 +41,8 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati
private String dataSetShareId;
private String dataSetLocation;
private DataSetArchivingStatus status;
private Date registrationTimestamp;
......@@ -128,6 +131,16 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati
this.dataSetLocation = dataSetLocation;
}
public DataSetArchivingStatus getStatus()
{
return status;
}
public void setStatus(DataSetArchivingStatus status)
{
this.status = status;
}
public Date getRegistrationTimestamp()
{
return registrationTimestamp;
......
......@@ -64,6 +64,7 @@ public class SimpleDataSetHelper
result.setSpeedHint(data.getSpeedHint());
result.setDataSetShareId(data.getShareId());
result.setDataSetLocation(data.getLocation());
result.setStatus(data.getStatus());
result.setDataSetSize(data.getSize());
result.setDatabaseInstanceCode(data.getExperiment().getProject().getSpace().getInstance()
.getCode());
......
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