@Test(dataProvider = "getBlobsToEscape", groups = {"integration", "live"}) public void testBlobNameEscaping(Set<String> blobNames) throws InterruptedException { final String containerName = getContainerName(); BlobStore blobStore = view.getBlobStore(); try { for (String name : blobNames) { Blob blob = blobStore.blobBuilder(name).payload(ByteSource.wrap("test".getBytes())).contentLength(4) .build(); blobStore.putBlob(containerName, blob); } checkEqualNames(blobNames, blobStore.list(containerName)); } finally { returnContainer(containerName); } }
@Test(groups = {"integration", "live"}) public void testContainerListWithDetails() throws InterruptedException { final String containerName = getContainerName(); BlobStore blobStore = view.getBlobStore(); String prefix = "testContainerListWithDetails/"; try { blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + "foo/bar").payload("").build()); blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + "car").payload("").build()); checkEqualNames( ImmutableSet.of(prefix + "foo/", prefix + "car"), blobStore.list(containerName, ListContainerOptions.Builder.prefix(prefix).delimiter("/")) ); checkEqualNames( ImmutableSet.of(prefix + "foo/", prefix + "car"), blobStore.list(containerName, ListContainerOptions.Builder.prefix(prefix).delimiter("/").withDetails()) ); } 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); } }
@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); } }