From 8a201554ecccf44e737b7b7930f59fe546dbb03e Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Thu, 7 Mar 2013 10:17:34 +0000 Subject: [PATCH] SP-528, BIS-345: Implemented and tested. SVN: 28550 --- .../ShareFactoryTest/share-2/share.properties | 3 +- .../shared/utils/SegmentedStoreUtils.java | 5 ++- .../dss/generic/shared/utils/Share.java | 12 ++++++ .../generic/shared/utils/ShareFactory.java | 6 +++ .../shared/utils/SegmentedStoreUtilsTest.java | 37 ++++++++++++++++++- .../shared/utils/ShareFactoryTest.java | 3 ++ 6 files changed, 63 insertions(+), 3 deletions(-) diff --git a/datastore_server/resource/test-data/ShareFactoryTest/share-2/share.properties b/datastore_server/resource/test-data/ShareFactoryTest/share-2/share.properties index fa4469b777f..84b30490d94 100644 --- a/datastore_server/resource/test-data/ShareFactoryTest/share-2/share.properties +++ b/datastore_server/resource/test-data/ShareFactoryTest/share-2/share.properties @@ -1,2 +1,3 @@ shuffle-priority=MOVE_TO_EXTENSION -withdraw-share = true \ No newline at end of file +withdraw-share = true +ignored-for-shuffling = true \ No newline at end of file diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java index cb8e083787e..79e2cb1b1a3 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java @@ -224,7 +224,10 @@ public class SegmentedStoreUtils { final Share share = new ShareFactory().createShare(sharesHolder, file, freeSpaceProvider, log); - shares.put(share.getShareId(), share); + if (share.isIgnoredForShuffling() == false) + { + shares.put(share.getShareId(), share); + } } return shares; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Share.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Share.java index f810068fdcb..272d6fc947a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Share.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/Share.java @@ -88,6 +88,8 @@ public final class Share private ShufflePriority shufflePriority = ShufflePriority.SPEED; private boolean withdrawShare; + + private boolean ignoredForShuffling; private Set<String> experimentIdentifiers; @@ -226,4 +228,14 @@ public final class Share { this.withdrawShare = withdrawShare; } + + public boolean isIgnoredForShuffling() + { + return ignoredForShuffling; + } + + public void setIgnoredForShuffling(boolean ignoredForShuffling) + { + this.ignoredForShuffling = ignoredForShuffling; + } } \ No newline at end of file diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactory.java index 150281ed50b..756e8867486 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactory.java @@ -59,6 +59,8 @@ public class ShareFactory static final String SHUFFLE_PRIORITY_PROP = "shuffle-priority"; public static final String WITHDRAW_SHARE_PROP = "withdraw-share"; + + public static final String IGNORED_FOR_SHUFFLING_PROP = "ignored-for-shuffling"; public static final String EXPERIMENTS_PROP = "experiments"; @@ -68,6 +70,8 @@ public class ShareFactory private boolean withdrawShare; + private boolean ignoredForShuffling; + private Set<String> experimentIdentifiers = Collections.emptySet(); Share createShare(final SharesHolder sharesHolder, File shareRoot, @@ -78,6 +82,7 @@ public class ShareFactory Share share = new Share(sharesHolder, shareRoot, speed, freeSpaceProvider); share.setShufflePriority(shufflePriority); share.setWithdrawShare(withdrawShare); + share.setIgnoredForShuffling(ignoredForShuffling); share.setExperimentIdentifiers(experimentIdentifiers); return share; @@ -143,6 +148,7 @@ public class ShareFactory } withdrawShare = PropertyUtils.getBoolean(props, WITHDRAW_SHARE_PROP, false); + ignoredForShuffling = PropertyUtils.getBoolean(props, IGNORED_FOR_SHUFFLING_PROP, false); experimentIdentifiers = new HashSet<String>(Arrays.asList(PropertyParametersUtil.parseItemisedProperty( props.getProperty(EXPERIMENTS_PROP, ""), EXPERIMENTS_PROP))); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtilsTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtilsTest.java index 7b6057d25df..e08fe0e180a 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtilsTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtilsTest.java @@ -458,7 +458,8 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase incomingFolder.mkdirs(); File share1 = new File(store, "1"); share1.mkdirs(); - FileUtilities.writeToFile(new File(share1, "share.properties"), "withdraw-share = true"); + FileUtilities.writeToFile(new File(share1, "share.properties"), + ShareFactory.WITHDRAW_SHARE_PROP + " = true"); String share = SegmentedStoreUtils.findIncomingShare(incomingFolder, store, log); @@ -470,6 +471,40 @@ public class SegmentedStoreUtilsTest extends AbstractFileSystemTestCase + "withdraw-share is set to true.\n", log.toString()); } + @Test + public void testFindIncomingShareToBeIgnoredInShuffling() + { + File incomingFolder = new File(workingDirectory, "incoming"); + incomingFolder.mkdirs(); + File share1 = new File(store, "1"); + share1.mkdirs(); + FileUtilities.writeToFile(new File(share1, "share.properties"), + ShareFactory.IGNORED_FOR_SHUFFLING_PROP + " = true"); + + String share = SegmentedStoreUtils.findIncomingShare(incomingFolder, store, log); + + assertEquals("1", share); + assertEquals("", log.toString()); + } + + @Test + public void testGetShares() + { + File share1 = new File(store, "1"); + share1.mkdirs(); + FileUtilities.writeToFile(new File(share1, "share.properties"), + ShareFactory.IGNORED_FOR_SHUFFLING_PROP + " = true"); + File share2 = new File(store, "2"); + share2.mkdirs(); + + List<Share> shares = + SegmentedStoreUtils.getSharesWithDataSets(store, DATA_STORE_CODE, + freeSpaceProvider, service, log, timeProvider); + + assertEquals("2", shares.get(0).getShareId()); + assertEquals(1, shares.size()); + } + private File dataSetFile(String shareId, boolean empty) { File share = new File(store, shareId); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactoryTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactoryTest.java index 765b3bb37b8..858949a91a0 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactoryTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/ShareFactoryTest.java @@ -41,6 +41,7 @@ public class ShareFactoryTest extends AssertJUnit assertEquals(70, share.getSpeed()); assertEquals(ShufflePriority.SPEED, share.getShufflePriority()); assertEquals(false, share.isWithdrawShare()); + assertEquals(false, share.isIgnoredForShuffling()); } @Test @@ -50,6 +51,7 @@ public class ShareFactoryTest extends AssertJUnit assertEquals(12, share.getSpeed()); assertEquals(ShufflePriority.MOVE_TO_EXTENSION, share.getShufflePriority()); assertEquals(true, share.isWithdrawShare()); + assertEquals(true, share.isIgnoredForShuffling()); assertEquals(0, share.getExperimentIdentifiers().size()); } @@ -72,6 +74,7 @@ public class ShareFactoryTest extends AssertJUnit assertEquals(12, share.getSpeed()); assertEquals(ShufflePriority.SPEED, share.getShufflePriority()); assertEquals(false, share.isWithdrawShare()); + assertEquals(false, share.isIgnoredForShuffling()); assertEquals(0, share.getExperimentIdentifiers().size()); } -- GitLab