@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { MultipartUpload mpu = delegate().initiateMultipartUpload(container, blobMetadata, options); return mpu; }
MultipartUpload mpu = blobStore.initiateMultipartUpload(containerName, builder.build().getMetadata(), options);
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { return delegate().initiateMultipartUpload(container, blobMetadata, options); }
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { MultipartUpload mpu = delegate().initiateMultipartUpload(container, blobMetadata, options); return mpu; }
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { MultipartUpload mpu = delegate().initiateMultipartUpload(container, blobMetadata, options); return mpu; }
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { return delegate().initiateMultipartUpload(container, blobMetadata, options); }
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { return delegate().initiateMultipartUpload(container, blobMetadata, options); }
@Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) { return delegate().initiateMultipartUpload(container, blobMetadata, options); }
MultipartUpload mpu = blobStore.initiateMultipartUpload(containerName, builder.build().getMetadata(), options);
MultipartUpload mpu = blobStore.initiateMultipartUpload(containerName, builder.build().getMetadata(), options);
@Test(groups = { "integration", "live" }) public void testMultipartUploadNoPartsAbort() throws Exception { BlobStore blobStore = view.getBlobStore(); String container = getContainerName(); try { String name = "blob-name"; Blob blob = blobStore.blobBuilder(name).build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions()); List<MultipartPart> parts = blobStore.listMultipartUpload(mpu); assertThat(parts).isEqualTo(ImmutableList.of()); blobStore.abortMultipartUpload(mpu); blob = blobStore.getBlob(container, name); assertThat(blob).isNull(); } finally { returnContainer(container); } }
@Test(groups = { "integration", "live" }) public void test10000PartMultipartUpload() throws Exception { BlobStore blobStore = view.getBlobStore(); String container = getContainerName(); int partSize = (int) blobStore.getMinimumMultipartPartSize(); try { String name = "blob-name"; BlobBuilder blobBuilder = blobStore.blobBuilder(name); Blob blob = blobBuilder.build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions()); ImmutableList.Builder<MultipartPart> parts = ImmutableList.builder(); byte[] content = new byte[partSize]; for (int i = 0; i < 10 * 1000; ++i) { Payload payload = Payloads.newByteArrayPayload(content); payload.getContentMetadata().setContentLength((long) partSize); parts.add(blobStore.uploadMultipartPart(mpu, i, payload)); } blobStore.completeMultipartUpload(mpu, parts.build()); BlobMetadata newBlobMetadata = blobStore.blobMetadata(container, name); assertThat(newBlobMetadata.getSize()).isEqualTo(10 * 1000 * partSize); } finally { returnContainer(container); } }
@Test(groups = { "integration", "live" }) public void testMultipartUploadMultiplePartsKnownETag() throws Exception { BlobStore blobStore = view.getBlobStore(); String container = getContainerName(); // Pre-computed ETag returned by AWS S3 for the MPU consisting of two 5MB parts filled with 'b' String expectedETag = "\"84462a16f6a60478d50148808aa609c1-2\""; int partSize = 5 * 1024 * 1024; try { String name = "blob-name"; BlobBuilder blobBuilder = blobStore.blobBuilder(name); Blob blob = blobBuilder.build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions()); byte[] content = new byte[partSize]; Arrays.fill(content, (byte) 'b'); Payload payload = Payloads.newByteArrayPayload(content); payload.getContentMetadata().setContentLength((long) partSize); MultipartPart part1 = blobStore.uploadMultipartPart(mpu, 1, payload); MultipartPart part2 = blobStore.uploadMultipartPart(mpu, 2, payload); blobStore.completeMultipartUpload(mpu, ImmutableList.of(part1, part2)); BlobMetadata newBlobMetadata = blobStore.blobMetadata(container, name); assertThat(newBlobMetadata.getETag()).isEqualTo(expectedETag); } finally { returnContainer(container); } }
addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());
addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());
assertThat(uploads).isEmpty(); mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());