Repository: jclouds Updated Branches: refs/heads/2.1.x b0b9a4380 -> 9ede9d3dd
Removed unneeded check for prefix in clearContainer Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9ede9d3d Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9ede9d3d Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9ede9d3d Branch: refs/heads/2.1.x Commit: 9ede9d3ddc9ac4aa175bf9c364b83a161bc93294 Parents: b0b9a43 Author: Joe Meiring <[email protected]> Authored: Thu Nov 1 17:01:50 2018 -0500 Committer: Andrew Gaul <[email protected]> Committed: Fri Nov 2 12:19:59 2018 -0700 ---------------------------------------------------------------------- .../strategy/internal/DeleteAllKeysInList.java | 3 -- .../internal/BaseBlobStoreIntegrationTest.java | 16 ++++++ .../internal/BaseContainerIntegrationTest.java | 57 ++++++++++++++++++++ 3 files changed, 73 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/9ede9d3d/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java ---------------------------------------------------------------------- diff --git a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java index 49cfe20..85b19eb 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/DeleteAllKeysInList.java @@ -380,9 +380,6 @@ public class DeleteAllKeysInList implements ClearListStrategy, ClearContainerStr public void execute(final String containerName, ListContainerOptions listOptions) { - if (listOptions.getDelimiter() != null || listOptions.getPrefix() != null) { - throw new IllegalArgumentException("Prefix and delimiter support has not yet been added"); - } final AtomicBoolean deleteFailure = new AtomicBoolean(); int retries = maxErrors; http://git-wip-us.apache.org/repos/asf/jclouds/blob/9ede9d3d/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java ---------------------------------------------------------------------- diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java index 7aae5a4..009e8fc 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java @@ -80,6 +80,14 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont String.format(XML_STRING_FORMAT, "candy"), "path/4", String.format(XML_STRING_FORMAT, "dogma"), "path/5", String.format(XML_STRING_FORMAT, "emma")); + private static final Map<String, String> FILE_NESTED_STRINGS = ImmutableMap.of( + "path/1/a", String.format(XML_STRING_FORMAT, "apple"), + "path/1/2/b", String.format(XML_STRING_FORMAT, "bear"), + "path/1/2/3/c", String.format(XML_STRING_FORMAT, "candy"), + "path/1/2/3/4/d", String.format(XML_STRING_FORMAT, "dog"), + "path/1/2/3/5/e", String.format(XML_STRING_FORMAT, "echo") + ); + public static long INCONSISTENCY_WINDOW = 10000; protected static final AtomicInteger containerIndex = new AtomicInteger(0); @@ -282,6 +290,14 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont } } + protected void add5NestedBlobsToContainer(String sourceContainer) { + for (Entry<String, String> entry : FILE_NESTED_STRINGS.entrySet()) { + Blob sourceObject = view.getBlobStore().blobBuilder(entry.getKey()).payload(entry.getValue()) + .contentType("text/xml").build(); + addBlobToContainer(sourceContainer, sourceObject); + } + } + protected String addBlobToContainer(String sourceContainer, Blob object) { return view.getBlobStore().putBlob(sourceContainer, object); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9ede9d3d/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java index abbaba7..6364c98 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java @@ -177,6 +177,63 @@ public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest { } @Test(groups = { "integration", "live" }) + public void testClearWithOptions() throws InterruptedException { + String containerName = getContainerName(); + try { + ListContainerOptions options; + + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/"); + options.recursive(); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 0); + + view.getBlobStore().clearContainer(containerName); + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/2/3"); + options.recursive(); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 2); + + view.getBlobStore().clearContainer(containerName); + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/2/3/4/"); + options.recursive(); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 4); + + // non-recursive, should not clear anything, as prefix does not match + view.getBlobStore().clearContainer(containerName); + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/2/3"); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 5); + + // non-recursive, should only clear path/1/2/3/c + view.getBlobStore().clearContainer(containerName); + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/2/3/"); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 4); + + // non-recursive, should only clear path/1/2/3/c + view.getBlobStore().clearContainer(containerName); + add5NestedBlobsToContainer(containerName); + options = new ListContainerOptions(); + options.prefix("path/1/2/3/c"); + view.getBlobStore().clearContainer(containerName, options); + assertConsistencyAwareContainerSize(containerName, 4); + } finally { + returnContainer(containerName); + } + } + + @Test(groups = { "integration", "live" }) public void testListContainerMarker() throws InterruptedException { String containerName = getContainerName(); try {
