public PageSet<? extends StorageMetadata> apply(ListBucketResponse from) { // S3 lists keys in sorted order; use sorted set to order relative paths correctly SortedSet<StorageMetadata> contents = Sets.<StorageMetadata> newTreeSet(Iterables.transform(from, object2blobMd)); for (String prefix : from.getCommonPrefixes()) { contents.add(prefix2ResourceMd.apply(prefix)); } return new PageSetImpl<StorageMetadata>(contents, from.getNextMarker()); } }
/** * Tests {@link S3#listBucket(S3Client, String, ListBucketOptions)} where * retrieving all results requires multiple requests. * * @throws Exception * if anything goes wrong */ @Test public void testMultiPageResult() throws Exception { String nextMarker = "FOO"; S3Client api = createMock(S3Client.class); ListBucketOptions options = new ListBucketOptions(); ListBucketResponse response2 = new ListBucketHandlerTest().expected(); ListBucketResponse response1 = new ListBucketResponseImpl(response2.getName(), response2, response2.getPrefix(), null, nextMarker, response2.getMaxKeys(), response2.getDelimiter(), false, response2.getCommonPrefixes()); expect(api.listBucket("bucket", options)).andReturn(response1).once(); expect(api.listBucket("bucket", options.afterMarker(nextMarker))).andReturn(response2).once(); EasyMock.replay(api); PagedIterable<ObjectMetadata> result = S3.listBucket(api, "bucket", options); // number of objects assertEquals(result.concat().size(), 20); }
public void testListBucketDelimiter() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, delimiter("/")); assertEquals(bucket.getDelimiter(), "/"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 15); assertEquals(bucket.getCommonPrefixes().size(), 1); } finally { returnContainer(bucketName); } }
public void testCanParseListContainerResult() throws HttpException { ListBucketResponse container = runParseListContainerResult(); assert !container.isTruncated(); assert container.getName().equals("adrianjbosstest"); assert container.size() == 1; ObjectMetadata object = container.iterator().next(); assert object.getKey().equals("3366"); Date expected = new SimpleDateFormatDateService().iso8601DateParse("2009-03-12T02:00:13.000Z"); assert object.getLastModified().equals(expected) : String.format("expected %1$s, but got %1$s", expected, object .getLastModified()); assertEquals(object.getETag(), "\"9d7bb64e8e18ee34eec06dd2cf37b766\""); assert object.getContentMetadata().getContentLength() == 136; CanonicalUser owner = new CanonicalUser("e1a5f66a480ca99a4fdfe8e318c3020446c9989d7004e7778029fbcc5d990fa0"); owner.setDisplayName("ferncam"); assert object.getOwner().equals(owner); assert object.getStorageClass().equals(StorageClass.STANDARD); }
@Test public void testListMyBucketsWithDelimiterSlashAndCommonPrefixesAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse( Strings2.toInputStream(listBucketWithSlashDelimiterAndCommonPrefixApps)); assertEquals(bucket.getCommonPrefixes().iterator().next(), "apps/"); assertEquals(bucket.getDelimiter(), "/"); assert bucket.getMarker() == null; }
public void testListBucketMaxResults() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { addAlphabetUnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, maxResults(5)); assertEquals(bucket.getMaxKeys(), 5); assert bucket.isTruncated(); assertEquals(bucket.size(), 5); } finally { returnContainer(bucketName); } }
public void testListBucketMarker() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { addAlphabetUnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, afterMarker("y")); assertEquals(bucket.getMarker(), "y"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 1); } finally { returnContainer(bucketName); } }
@Test public void testListMyBucketsWithPrefixAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse(Strings2.toInputStream(listBucketWithPrefixAppsSlash)); assertEquals(bucket.getPrefix(), "apps/"); assertEquals(bucket.getMaxKeys(), 1000); assert bucket.getMarker() == null; }
public void testListBucketPrefix() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, withPrefix("apps/")); assert !bucket.isTruncated(); assertEquals(bucket.size(), 10); assertEquals(bucket.getPrefix(), "apps/"); } finally { returnContainer(bucketName); } }
/** * Verifies that the parser doesn't barf if the timestamp returned in the * list bucket response has time zone designators in it. */ @Test public void testListMyBucketsWithSecondsDate() { ListBucketResponse bucket = createParser().parse( Strings2.toInputStream(listBucketWithSecondsDate)); ObjectMetadata expected = new CopyObjectResult( new SimpleDateFormatDateService() .iso8601SecondsDateParse("2014-07-23T20:53:17+0000"), "\"92836a3ea45a6984d1b4d23a747d46bb\""); // Verify that the date was parsed successfully. ObjectMetadata metadata = bucket.iterator().next(); assertEquals(metadata.getLastModified(), expected.getLastModified()); } }
@Override public IterableWithMarker<ObjectMetadata> apply(ListBucketResponse in) { return IterableWithMarkers.from(in, in.getNextMarker()); } }
/** * Tests {@link S3#listBucket(S3Client, String, ListBucketOptions)} where * retrieving all results requires multiple requests. * * @throws Exception * if anything goes wrong */ @Test public void testMultiPageResult() throws Exception { String nextMarker = "FOO"; S3Client api = createMock(S3Client.class); ListBucketOptions options = new ListBucketOptions(); ListBucketResponse response2 = new ListBucketHandlerTest().expected(); ListBucketResponse response1 = new ListBucketResponseImpl(response2.getName(), response2, response2.getPrefix(), null, nextMarker, response2.getMaxKeys(), response2.getDelimiter(), false, response2.getCommonPrefixes()); expect(api.listBucket("bucket", options)).andReturn(response1).once(); expect(api.listBucket("bucket", options.afterMarker(nextMarker))).andReturn(response2).once(); EasyMock.replay(api); PagedIterable<ObjectMetadata> result = S3.listBucket(api, "bucket", options); // number of objects assertEquals(result.concat().size(), 20); }
public void testListBucketDelimiter() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, delimiter("/")); assertEquals(bucket.getDelimiter(), "/"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 15); assertEquals(bucket.getCommonPrefixes().size(), 1); } finally { returnContainer(bucketName); } }
public void testCanParseListContainerResult() throws HttpException { ListBucketResponse container = runParseListContainerResult(); assert !container.isTruncated(); assert container.getName().equals("adrianjbosstest"); assert container.size() == 1; ObjectMetadata object = container.iterator().next(); assert object.getKey().equals("3366"); Date expected = new SimpleDateFormatDateService().iso8601DateParse("2009-03-12T02:00:13.000Z"); assert object.getLastModified().equals(expected) : String.format("expected %1$s, but got %2$s", expected, object .getLastModified()); assertEquals(object.getETag(), "\"9d7bb64e8e18ee34eec06dd2cf37b766\""); assert object.getContentMetadata().getContentLength() == 136; CanonicalUser owner = new CanonicalUser("e1a5f66a480ca99a4fdfe8e318c3020446c9989d7004e7778029fbcc5d990fa0"); owner.setDisplayName("ferncam"); assert object.getOwner().equals(owner); assert object.getStorageClass().equals(StorageClass.STANDARD); }
@Test public void testListMyBucketsWithDelimiterSlashAndCommonPrefixesAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse( Strings2.toInputStream(listBucketWithSlashDelimiterAndCommonPrefixApps)); assertEquals(bucket.getCommonPrefixes().iterator().next(), "apps/"); assertEquals(bucket.getDelimiter(), "/"); assert bucket.getMarker() == null; }
public void testListBucketMaxResults() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { addAlphabetUnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, maxResults(5)); assertEquals(bucket.getMaxKeys(), 5); assert bucket.isTruncated(); assertEquals(bucket.size(), 5); } finally { returnContainer(bucketName); } }
public void testListBucketMarker() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { addAlphabetUnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, afterMarker("y")); assertEquals(bucket.getMarker(), "y"); assert !bucket.isTruncated(); assertEquals(bucket.size(), 1); } finally { returnContainer(bucketName); } }
@Test public void testListMyBucketsWithPrefixAppsSlash() throws HttpException { ListBucketResponse bucket = createParser().parse(Strings2.toInputStream(listBucketWithPrefixAppsSlash)); assertEquals(bucket.getPrefix(), "apps/"); assertEquals(bucket.getMaxKeys(), 1000); assert bucket.getMarker() == null; }
public void testListBucketPrefix() throws InterruptedException, ExecutionException, TimeoutException { String bucketName = getContainerName(); try { String prefix = "apps"; addTenObjectsUnderPrefix(bucketName, prefix); add15UnderRoot(bucketName); ListBucketResponse bucket = getApi().listBucket(bucketName, withPrefix("apps/")); assert !bucket.isTruncated(); assertEquals(bucket.size(), 10); assertEquals(bucket.getPrefix(), "apps/"); } finally { returnContainer(bucketName); } }
public void testPutWithReducedRedundancyStorage() throws InterruptedException { String containerName = getContainerName(); try { String blobName = "test-rrs"; BlobStore blobStore = view.getBlobStore(); blobStore.createContainerInLocation(null, containerName); Blob blob = blobStore.blobBuilder(blobName).payload("something").build(); blobStore.putBlob(containerName, blob, storageClass(StorageClass.REDUCED_REDUNDANCY)); S3Client s3Client = S3Client.class.cast(view.unwrap(AWSS3ApiMetadata.CONTEXT_TOKEN).getApi()); ListBucketResponse response = s3Client.listBucket(containerName, withPrefix(blobName)); ObjectMetadata metadata = response.iterator().next(); assertEquals(metadata.getStorageClass(), StorageClass.REDUCED_REDUNDANCY); } finally { returnContainer(containerName); } }