From 7ff3c59ac3775c4489a78a61a7024a4b57c77bc6 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Thu, 24 Mar 2011 12:24:15 +0000 Subject: [PATCH] [LMS-2159] Unit test for HierarchicalStorageUpdater bug SVN: 20487 --- .../store-root/1/ds1/{original => }/f1.png | Bin .../plugins/HierarchicalStorageUpdater.java | 50 +++++++++--------- .../HierarchicalStorageUpdaterTest.java | 13 +++-- 3 files changed, 32 insertions(+), 31 deletions(-) rename datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/{original => }/f1.png (100%) diff --git a/datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/original/f1.png b/datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/f1.png similarity index 100% rename from datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/original/f1.png rename to datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/f1.png diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java index 841594cee55..094cc2c3713 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java @@ -315,7 +315,7 @@ public class HierarchicalStorageUpdater implements IDataStoreLockingMaintenanceT { toDelete = parent; parent = toDelete.getParentFile(); - toDelete.delete(); + delete(toDelete); } else { break; @@ -326,40 +326,38 @@ public class HierarchicalStorageUpdater implements IDataStoreLockingMaintenanceT private static void deleteWithSymbolicLinks(File toDelete) { - if (FileUtilities.isSymbolicLink(toDelete)) + if (toDelete.isDirectory()) { - toDelete.delete(); - return; + for (File file : toDelete.listFiles()) + { + // all these files should be symbolic links to a dataset directory. + // We cannot delete recursively here, it would remove the original files. + boolean ok = delete(file); + if (ok == false) + { + operationLog.error("Cannot delete the file: " + file.getPath()); + } + } } - if (toDelete.isDirectory() == false) - { - operationLog.error("Directory structure is different than expected. File '" - + toDelete.getPath() + "' should be a directory. It will not be cleared."); - return; - } + delete(toDelete); + } - for (File file : toDelete.listFiles()) + private static boolean delete(File file) + { + if (FileUtilities.isSymbolicLink(file) || file.isDirectory()) { - // all these files should be symbolic links to a dataset directory. - // We cannot delete recursively here, it would remove the original files. - if (false == FileUtilities.isSymbolicLink(file)) - { - operationLog.error(file.getPath() - + " is not a symbolic link and will not be deleted."); - return; - } - boolean ok = file.delete(); - if (ok == false) - { - operationLog.error("Cannot delete the file: " + file.getPath()); - } + operationLog.info("Deleting " + file.getAbsolutePath()); + return file.delete(); + } else + { + operationLog.error(file.getPath() + " is not a symbolic link and will not be deleted."); + return false; } - // delete the folder in the end - toDelete.delete(); } + /** * Creates the soft links for files with paths defined in <code>linkMappings</code> {@link Map}. */ diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java index 1d7b15b4f0d..ac9a216d38d 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java @@ -143,7 +143,7 @@ public class HierarchicalStorageUpdaterTest extends AbstractFileSystemTestCase } - private HierarchicalStorageUpdater createUpdater(boolean linkFromFirstChild) + private HierarchicalStorageUpdater createUpdater(boolean reconfiguredExecution) { final String pluginName = "hierarchical-storage-updater"; final String pluginPrefix = pluginName + "."; @@ -156,10 +156,13 @@ public class HierarchicalStorageUpdaterTest extends AbstractFileSystemTestCase .getAbsolutePath()); Properties properties = new Properties(); - properties.put(HierarchicalStorageUpdater.LINK_SOURCE_SUBFOLDER + "." - + DATASET_TYPE, "original"); - properties.put(HierarchicalStorageUpdater.LINK_FROM_FIRST_CHILD + "." + DATASET_TYPE, "" - + linkFromFirstChild); + if (reconfiguredExecution) + { + properties.put(HierarchicalStorageUpdater.LINK_SOURCE_SUBFOLDER + "." + DATASET_TYPE, + "original"); + properties.put(HierarchicalStorageUpdater.LINK_FROM_FIRST_CHILD + "." + DATASET_TYPE, + "" + true); + } HierarchicalStorageUpdater updater = new HierarchicalStorageUpdater(); updater.setUp(pluginName, properties); -- GitLab