if (partSize < blobStore.getMinimumMultipartPartSize() && partSize != -1 && it.hasNext()) { throw new S3Exception(S3ErrorCode.ENTITY_TOO_SMALL);
@Override public long getMinimumMultipartPartSize() { return delegate().getMinimumMultipartPartSize(); }
@Override public long getMinimumMultipartPartSize() { return delegate().getMinimumMultipartPartSize(); }
@Override public long getMinimumMultipartPartSize() { return delegate().getMinimumMultipartPartSize(); }
@Override public long getMinimumMultipartPartSize() { return delegate().getMinimumMultipartPartSize(); }
@Override protected long getMinimumMultipartBlobSize() { return view.getBlobStore().getMinimumMultipartPartSize() + 1; }
if (partSize < blobStore.getMinimumMultipartPartSize() && partSize != -1 && it.hasNext()) { throw new S3Exception(S3ErrorCode.ENTITY_TOO_SMALL);
if (partSize < blobStore.getMinimumMultipartPartSize() && partSize != -1 && it.hasNext()) { throw new S3Exception(S3ErrorCode.ENTITY_TOO_SMALL);
@Test(groups = { "integration", "live" }) public void testPutMultipartByteSource() throws Exception { long length = Math.max(getMinimumMultipartBlobSize(), MultipartUploadSlicingAlgorithm.DEFAULT_PART_SIZE + 1); BlobStore blobStore = view.getBlobStore(); MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm( blobStore.getMinimumMultipartPartSize(), blobStore.getMaximumMultipartPartSize(), blobStore.getMaximumNumberOfParts()); // make sure that we are creating multiple parts assertThat(algorithm.calculateChunkSize(length)).isLessThan(length); ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new ByteSourcePayload(byteSource); HashCode hashCode = byteSource.hash(Hashing.md5()); testPut(payload, hashCode, payload, length, new PutOptions().multipart(true)); }
@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 testPutMultipartInputStream() throws Exception { long length = Math.max(getMinimumMultipartBlobSize(), MultipartUploadSlicingAlgorithm.DEFAULT_PART_SIZE + 1); BlobStore blobStore = view.getBlobStore(); MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm( blobStore.getMinimumMultipartPartSize(), blobStore.getMaximumMultipartPartSize(), blobStore.getMaximumNumberOfParts()); // make sure that we are creating multiple parts assertThat(algorithm.calculateChunkSize(length)).isLessThan(length); ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Payload payload = new InputStreamPayload(byteSource.openStream()); testPut(payload, null, new ByteSourcePayload(byteSource), length, new PutOptions().multipart(true)); }
MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions()); ByteSource byteSource = TestUtils.randomByteSource().slice(0, blobStore.getMinimumMultipartPartSize() + 1); ByteSource byteSource1 = byteSource.slice(0, blobStore.getMinimumMultipartPartSize()); ByteSource byteSource2 = byteSource.slice(blobStore.getMinimumMultipartPartSize(), 1); Payload payload1 = Payloads.newByteSourcePayload(byteSource1); Payload payload2 = Payloads.newByteSourcePayload(byteSource2);
ByteSource byteSource = TestUtils.randomByteSource().slice(0, blobStore.getMinimumMultipartPartSize() + 1); ByteSource byteSource1 = byteSource.slice(0, blobStore.getMinimumMultipartPartSize()); ByteSource byteSource2 = byteSource.slice(blobStore.getMinimumMultipartPartSize(), 1); Payload payload1 = Payloads.newByteSourcePayload(byteSource1); Payload payload2 = Payloads.newByteSourcePayload(byteSource2);