Move tests to test the file system API.

Move the prefix and delimiter tests from BaseContainerLiveTest to
BaseContainerIntegrationTest, as that class is subclassed in
Filesystem integration tests. This will make sure the file system blob
store will not regress.

The ListContainerTest is updated to _not_ use a file separator
character, as that leads to a possible creation of directories.
Instead, "-" is used as the delimiter for the delimiter option tests.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/e4161a59
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/e4161a59
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/e4161a59

Branch: refs/heads/master
Commit: e4161a59bbfd84e834081b0efe85d5b938798a86
Parents: 613b6bf
Author: Timur Alperovich <[email protected]>
Authored: Mon Jul 13 17:20:50 2015 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Tue Jul 14 14:11:34 2015 -0700

----------------------------------------------------------------------
 .../AtmosContainerIntegrationLiveTest.java      | 10 ++++
 .../integration/AtmosContainerLiveTest.java     | 11 ----
 .../integration/SwiftContainerLiveTest.java     | 11 ----
 .../internal/BaseContainerIntegrationTest.java  | 55 +++++++++++++++++
 .../internal/BaseContainerLiveTest.java         | 62 +-------------------
 .../strategy/internal/ListContainerTest.java    | 18 +++---
 ...jectStorageContainerIntegrationLiveTest.java |  6 ++
 .../HPCloudObjectStorageContainerLiveTest.java  |  6 --
 8 files changed, 81 insertions(+), 98 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
index 9963451..4db5244 100644
--- 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
+++ 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerIntegrationLiveTest.java
@@ -50,4 +50,14 @@ public class AtmosContainerIntegrationLiveTest extends 
BaseContainerIntegrationT
    public void testListContainerWithZeroMaxResults() throws Exception {
       throw new SkipException("Atmos requires a positive integer for max 
results");
    }
+
+   @Override
+   public void testContainerListWithPrefix() {
+      throw new SkipException("Prefix option has not been plumbed down to 
Atmos");
+   }
+
+   @Override
+   public void testDelimiterList() {
+      throw new SkipException("Delimiter support is not yet implemented");
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerLiveTest.java
 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerLiveTest.java
index 7c9e0b1..8c45388 100644
--- 
a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerLiveTest.java
+++ 
b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosContainerLiveTest.java
@@ -17,7 +17,6 @@
 package org.jclouds.atmos.blobstore.integration;
 
 import org.jclouds.blobstore.integration.internal.BaseContainerLiveTest;
-import org.testng.SkipException;
 import org.testng.annotations.Test;
 
 @Test(groups = { "live" })
@@ -25,14 +24,4 @@ public class AtmosContainerLiveTest extends 
BaseContainerLiveTest {
    public AtmosContainerLiveTest() {
       provider = "atmos";
    }
-
-   @Override
-   public void testContainerListWithPrefix() {
-      throw new SkipException("Prefix option has not been plumbed down to 
Atmos");
-   }
-
-   @Override
-   public void testDelimiterList() {
-      throw new SkipException("Delimiter support is not yet implemented");
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftContainerLiveTest.java
----------------------------------------------------------------------
diff --git 
a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftContainerLiveTest.java
 
b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftContainerLiveTest.java
index 6569b4c..7291e5a 100644
--- 
a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftContainerLiveTest.java
+++ 
b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftContainerLiveTest.java
@@ -22,7 +22,6 @@ import java.util.Properties;
 
 import org.jclouds.blobstore.integration.internal.BaseContainerLiveTest;
 import org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties;
-import org.testng.SkipException;
 import org.testng.annotations.Test;
 
 @Test(groups = "live", testName = "SwiftContainerLiveTest" )
@@ -53,14 +52,4 @@ public class SwiftContainerLiveTest extends 
BaseContainerLiveTest {
             IOException {
       super.testPublicAccessInNonDefaultLocationWithBigBlob();
    }
-
-   @Override
-   public void testContainerListWithPrefix() {
-      throw new SkipException("Prefix option has not been plumbed down to 
Swift");
-   }
-
-   @Override
-   public void testDelimiterList() {
-      throw new SkipException("The test fails as the path parameter elides 
subdirectories");
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/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 66f3274..832848d 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
@@ -30,6 +30,7 @@ import static org.testng.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
@@ -49,6 +50,7 @@ import org.jclouds.blobstore.options.ListContainerOptions;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.Uninterruptibles;
 
@@ -516,6 +518,59 @@ public class BaseContainerIntegrationTest extends 
BaseBlobStoreIntegrationTest {
       }
    }
 
+   @Test(groups = {"integration", "live"})
+   public void testContainerListWithPrefix() throws InterruptedException {
+      final String containerName = getContainerName();
+      BlobStore blobStore = view.getBlobStore();
+      String prefix = "blob";
+      try {
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder(prefix).payload("").build());
+         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"foo").payload("").build());
+         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"bar").payload("").build());
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("foo").payload("").build());
+         checkEqualNames(ImmutableSet.of(prefix, prefix + "foo", prefix + 
"bar"),
+               blobStore.list(containerName, 
ListContainerOptions.Builder.prefix(prefix)));
+      }
+      finally {
+         returnContainer(containerName);
+      }
+   }
+
+   @Test(groups = {"integration", "live"})
+   public void testDelimiterList() throws InterruptedException {
+      final String containerName = getContainerName();
+      BlobStore blobStore = view.getBlobStore();
+      String payload = "foo";
+      try {
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test-foo-foo").payload(payload).build());
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test-bar-foo").payload(payload).build());
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("foo").payload(payload).build());
+         // NOTE: the test does not work if we use a file separator character 
("/" or "\"), as the file system blob
+         // store will create directories when putting such a blob. When 
listing results, these directories will also
+         // show up in the result set.
+         checkEqualNames(ImmutableSet.of("foo", "test-"), 
blobStore.list(containerName,
+               ListContainerOptions.Builder.delimiter("-")));
+         checkEqualNames(ImmutableSet.of("test-foo-foo", "test-bar-foo", 
"foo"),
+               blobStore.list(containerName, 
ListContainerOptions.Builder.delimiter(".")));
+
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar").payload(payload).build());
+         blobStore.putBlob(containerName, 
blobStore.blobBuilder("bazar").payload(payload).build());
+         checkEqualNames(ImmutableSet.of("bar", "baza"), 
blobStore.list(containerName,
+               ListContainerOptions.Builder.delimiter("a").prefix("ba")));
+      } finally {
+         returnContainer(containerName);
+      }
+   }
+
+   private void checkEqualNames(ImmutableSet<String> expectedSet, PageSet<? 
extends StorageMetadata> results) {
+      Set<String> names = new HashSet<String>();
+      for (StorageMetadata sm : results) {
+         names.add(sm.getName());
+      }
+
+      assertThat(names).containsOnlyElementsOf(expectedSet);
+   }
+
    protected void addAlphabetUnderRoot(String containerName) throws 
InterruptedException {
       for (char letter = 'a'; letter <= 'z'; letter++) {
          view.getBlobStore().putBlob(containerName,

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
 
b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
index 9a9c5e9..cd234cd 100644
--- 
a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
+++ 
b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
@@ -18,7 +18,6 @@ package org.jclouds.blobstore.integration.internal;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
-import static org.assertj.core.api.Assertions.assertThat;
 import static 
org.jclouds.blobstore.options.CreateContainerOptions.Builder.publicRead;
 import static org.jclouds.util.Predicates2.retry;
 import static org.testng.Assert.assertEquals;
@@ -28,17 +27,12 @@ import static org.testng.Assert.assertTrue;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 import java.util.logging.Logger;
 
-import com.google.common.net.HostAndPort;
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.domain.BlobMetadata;
-import org.jclouds.blobstore.domain.PageSet;
 import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.options.ListContainerOptions;
 import org.jclouds.domain.Location;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.predicates.SocketOpen;
@@ -49,9 +43,9 @@ import org.testng.annotations.Test;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
+import com.google.common.net.HostAndPort;
 
 public class BaseContainerLiveTest extends BaseBlobStoreIntegrationTest {
 
@@ -121,60 +115,6 @@ public class BaseContainerLiveTest extends 
BaseBlobStoreIntegrationTest {
       runCreateContainerInLocation(payload, nonDefault);
    }
 
-   @Test(groups = "live")
-   public void testContainerListWithPrefix() throws InterruptedException {
-      final String containerName = getContainerName();
-      BlobStore blobStore = view.getBlobStore();
-      String prefix = "blob";
-      try {
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder(prefix).payload("").build());
-         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"foo").payload("").build());
-         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"bar").payload("").build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("foo").payload("").build());
-         checkEqualNames(ImmutableSet.of(prefix, prefix + "foo", prefix + 
"bar"),
-               blobStore.list(containerName, 
ListContainerOptions.Builder.prefix(prefix)));
-      }
-      finally {
-         returnContainer(containerName);
-      }
-   }
-
-   @Test(groups = "live")
-   public void testDelimiterList() throws InterruptedException {
-      final String containerName = getContainerName();
-      BlobStore blobStore = view.getBlobStore();
-      String payload = "foo";
-      try {
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test/foo/foo").payload(payload).build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test/bar/foo").payload(payload).build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("foo").payload(payload).build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test-foo").payload(payload).build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("test-bar").payload(payload).build());
-         checkEqualNames(ImmutableSet.of("foo", "test/", "test-foo", 
"test-bar"), blobStore.list(
-               containerName, ListContainerOptions.Builder.delimiter("/")));
-         checkEqualNames(ImmutableSet.of("test/foo/foo", "test/bar/foo", 
"foo", "test-foo", "test-bar"),
-               blobStore.list(containerName, 
ListContainerOptions.Builder.delimiter("\\")));
-         checkEqualNames(ImmutableSet.of("test-", "test/foo/foo", 
"test/bar/foo", "foo"), blobStore.list(
-               containerName, ListContainerOptions.Builder.delimiter("-")));
-
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar").payload(payload).build());
-         blobStore.putBlob(containerName, 
blobStore.blobBuilder("bazar").payload(payload).build());
-         checkEqualNames(ImmutableSet.of("bar", "baza"), 
blobStore.list(containerName,
-               ListContainerOptions.Builder.delimiter("a").prefix("ba")));
-      } finally {
-         returnContainer(containerName);
-      }
-   }
-
-   private void checkEqualNames(ImmutableSet<String> expectedSet, PageSet<? 
extends StorageMetadata> results) {
-      Set<String> names = new HashSet<String>();
-      for (StorageMetadata sm : results) {
-         names.add(sm.getName());
-      }
-
-      assertThat(names).containsOnlyElementsOf(expectedSet);
-   }
-
    private void runCreateContainerInLocation(String payload, Location 
nonDefault) throws InterruptedException,
             IOException {
       String blobName = "hello";

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
 
b/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
index acef128..3a87d37 100644
--- 
a/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
+++ 
b/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
@@ -71,25 +71,25 @@ public class ListContainerTest {
       assertThat(Iterables.get(results, 
2).getType()).isEqualTo(StorageType.BLOB);
    }
 
-   public void testListWithPrefixAndSeparator() {
+   public void testListWithPrefixAndDelimiter() {
       String containerName = "prefixWithSeparator";
       String prefix = "foo";
       blobStore.createContainerInLocation(null, containerName);
-      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"/object").payload("").build());
-      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"bar/object").payload("")
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"-object").payload("").build());
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"bar-object").payload("")
             .build());
-      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"baz/object").payload("")
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"baz-object").payload("")
             .build());
-      blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar/object").payload("").build());
+      blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar-object").payload("").build());
 
       Iterable<? extends StorageMetadata> results = 
concatter.execute(containerName,
-            ListContainerOptions.Builder.prefix(prefix));
+            ListContainerOptions.Builder.prefix(prefix).delimiter("-"));
       assertThat(Iterables.size(results)).isEqualTo(3);
       assertThat(Iterables.get(results, 
0).getType()).isEqualTo(StorageType.RELATIVE_PATH);
-      assertThat(Iterables.get(results, 0).getName()).isEqualTo(prefix + "/");
-      assertThat(Iterables.get(results, 1).getName()).isEqualTo(prefix + 
"bar/");
+      assertThat(Iterables.get(results, 0).getName()).isEqualTo(prefix + "-");
+      assertThat(Iterables.get(results, 1).getName()).isEqualTo(prefix + 
"bar-");
       assertThat(Iterables.get(results, 
1).getType()).isEqualTo(StorageType.RELATIVE_PATH);
-      assertThat(Iterables.get(results, 2).getName()).isEqualTo(prefix + 
"baz/");
+      assertThat(Iterables.get(results, 2).getName()).isEqualTo(prefix + 
"baz-");
       assertThat(Iterables.get(results, 
2).getType()).isEqualTo(StorageType.RELATIVE_PATH);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerIntegrationLiveTest.java
 
b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerIntegrationLiveTest.java
index 3c810c5..c16a2df 100644
--- 
a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerIntegrationLiveTest.java
+++ 
b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerIntegrationLiveTest.java
@@ -17,6 +17,7 @@
 package org.jclouds.hpcloud.objectstorage.blobstore.integration;
 
 import 
org.jclouds.openstack.swift.blobstore.integration.SwiftContainerIntegrationLiveTest;
+import org.testng.SkipException;
 import org.testng.annotations.Test;
 
 @Test(groups = "live")
@@ -25,4 +26,9 @@ public class HPCloudObjectStorageContainerIntegrationLiveTest 
extends SwiftConta
       provider = "hpcloud-objectstorage";
    }
 
+   @Override
+   @Test
+   public void testDelimiterList() {
+      throw new SkipException("\"path\" parameter elides subdirectories");
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e4161a59/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerLiveTest.java
 
b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerLiveTest.java
index ca112cd..5b92754 100644
--- 
a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerLiveTest.java
+++ 
b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/integration/HPCloudObjectStorageContainerLiveTest.java
@@ -33,10 +33,4 @@ public class HPCloudObjectStorageContainerLiveTest extends 
BaseContainerLiveTest
    @Override
    @Test
    public void testPublicAccessInNonDefaultLocationWithBigBlob() { throw new 
SkipException("Locations are ignored"); }
-
-   @Override
-   @Test
-   public void testDelimiterList() {
-      throw new SkipException("\"path\" parameter elides subdirectories");
-   }
 }

Reply via email to