@Override protected Properties setupProperties() { Properties props = super.setupProperties(); props.setProperty(FilesystemConstants.PROPERTY_BASEDIR, TestUtils.TARGET_BASE_DIR); return props; }
@Override @Test(expectedExceptions = IllegalArgumentException.class) public void testPutObjectStream() throws InterruptedException, IOException, ExecutionException { super.testPutObjectStream(); }
private void checkContentMetadata(Blob blob) { checkContentType(blob, "text/csv"); checkContentDisposition(blob, "attachment; filename=photo.jpg"); checkContentEncoding(blob, "gzip"); checkContentLanguage(blob, "en"); }
@Override public Void apply(Blob from) { try { validateMetadata(from.getMetadata(), container, name); assertEquals(md5Supplier(from.getPayload()), oneHundredOneConstitutionsMD5); checkContentDisposition(from, expectedContentDisposition); } catch (IOException e) { Throwables.propagate(e); } return null; }
.payload(payload) .contentLength(payload.size()); addContentMetadata(blobBuilder); blobBuilder.userMetadata(userMetadata); Blob blob = blobBuilder.build(); String fromContainer = getContainerName(); String toContainer = getContainerName(); try { blobStore.putBlob(fromContainer, blob); Closeables2.closeQuietly(is); checkContentMetadata(toBlob); checkUserMetadata(toBlob.getMetadata().getUserMetadata(), userMetadata); } finally { returnContainer(toContainer); returnContainer(fromContainer);
@Test(groups = { "integration", "live" }, dataProvider = "putTests") public void testPutObject(String name, String type, Object content, Object realObject) throws InterruptedException, IOException { PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder(name).payload(Payloads.newPayload(content)) .contentType(type); addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); String container = getContainerName(); try { assertNotNull(view.getBlobStore().putBlob(container, blob)); awaitConsistency(); blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName()); validateMetadata(blob.getMetadata(), container, name); checkContentMetadata(blob); String returnedString = getContentAsStringOrNullAndClose(blob); assertEquals(returnedString, realObject); PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container); assert set.size() == 1 : set; } finally { returnContainer(container); } }
@Test(groups = { "integration", "live" }) public void testGetTwoRanges() throws InterruptedException, IOException { String container = getContainerName(); try { String name = "apples"; addObjectAndValidateContent(container, name); Blob blob = view.getBlobStore().getBlob(container, name, range(0, 5).range(6, TEST_STRING.length())); validateMetadata(blob.getMetadata(), container, name); assertEquals(getContentAsStringOrNullAndClose(blob), TEST_STRING); } finally { returnContainer(container); } }
.contentMD5(md5().hashString(TEST_STRING, Charsets.UTF_8).asBytes()) .build(); String container = getContainerName(); try { assertNull(view.getBlobStore().blobMetadata(container, "powderpuff")); addBlobToContainer(container, blob); Blob newObject = validateContent(container, name); validateMetadata(metadata); validateMetadata(metadata, container, name); validateMetadata(view.getBlobStore().blobMetadata(container, name)); blob.getMetadata().getUserMetadata().put("Adrian", "powderpuff"); awaitConsistency(); addBlobToContainer(container, blob); awaitConsistency(); validateMetadata(view.getBlobStore().blobMetadata(container, name)); returnContainer(container);
@Test(groups = { "integration", "live" }) public void testGetRangeMultipart() throws InterruptedException, IOException { String container = getContainerName(); InputStream expect = null; InputStream actual = null; try { String name = "apples"; long length = getMinimumMultipartBlobSize(); ByteSource byteSource = TestUtils.randomByteSource().slice(0, length); Blob blob = view.getBlobStore().blobBuilder(name) .payload(byteSource) .contentLength(length) .build(); view.getBlobStore().putBlob(container, blob, new PutOptions().multipart(true)); blob = view.getBlobStore().getBlob(container, name, range(0, 5)); validateMetadata(blob.getMetadata(), container, name); expect = byteSource.slice(0, 6).openStream(); actual = blob.getPayload().openStream(); assertThat(actual).hasContentEqualTo(expect); } finally { Closeables2.closeQuietly(expect); Closeables2.closeQuietly(actual); returnContainer(container); } }
@Override @Test(expectedExceptions = UnsupportedOperationException.class) public void testPutBlobAccessMultipart() throws Exception { super.testPutBlobAccessMultipart(); }
@Override @Test(groups = { "integration", "live" }, expectedExceptions = UnsupportedOperationException.class) public void testCopyIfNoneMatch() throws Exception { super.testCopyIfNoneMatch(); }
@Override protected void checkContentDisposition(Blob blob, String contentDisposition) { // This works for Swift Server 1.4.4/SWauth 1.0.3 but was null in previous versions. // TODO: Better testing for the different versions. super.checkContentDisposition(blob,contentDisposition); }
@Test(groups = { "integration", "live" }) public void testPutBlobTierArchiveMultipart() throws Exception { try { super.testPutBlobTierArchiveMultipart(); failBecauseExceptionWasNotThrown(UnsupportedOperationException.class); } catch (UnsupportedOperationException uoe) { throw new SkipException("Atmos does not support multipart", uoe); } }
@Override @Test(expectedExceptions = UnsupportedOperationException.class) public void testPutBlobAccess() throws Exception { super.testPutBlobAccess(); }
@Override public void testListMultipartUploads() throws Exception { try { super.testListMultipartUploads(); } catch (UnsupportedOperationException uoe) { throw new SkipException("GCS does not support listing multipart uploads", uoe); } }
@Override protected void validateMetadata(BlobMetadata metadata) throws IOException { if (!isMacOSX()) { super.validateMetadata(metadata); } }
@Override public void checkContentMetadata(Blob blob) { if (!isMacOSX()) { super.checkContentMetadata(blob); } }
@Test(groups = { "integration", "live" }) public void testMultipartUploadSinglePart() throws Exception { BlobStore blobStore = view.getBlobStore(); String container = getContainerName(); try { String name = "blob-name"; addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions()); assertThat(newBlob).isNotNull(); assertThat(ByteStreams2.toByteArrayAndClose(newBlob.getPayload().openStream())).isEqualTo(byteSource.read()); checkContentMetadata(newBlob); checkUserMetadata(newBlob.getMetadata().getUserMetadata(), blob.getMetadata().getUserMetadata()); checkMPUParts(newBlob, parts); } finally { returnContainer(container);
@Test(groups = { "integration", "live" }) public void testPutObjectStream() throws InterruptedException, IOException, ExecutionException { PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder("streaming").payload( new ByteSourcePayload(ByteSource.wrap("foo".getBytes()))); addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); String container = getContainerName(); try { assertNotNull(view.getBlobStore().putBlob(container, blob)); awaitConsistency(); blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName()); String returnedString = getContentAsStringOrNullAndClose(blob); assertEquals(returnedString, "foo"); validateMetadata(blob.getMetadata(), container, blob.getMetadata().getName()); checkContentMetadata(blob); PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container); assert set.size() == 1 : set; } finally { returnContainer(container); } }
@Test(groups = { "integration", "live" }) public void testGetTwoRanges() throws InterruptedException, IOException { String container = getContainerName(); try { String name = "apples"; addObjectAndValidateContent(container, name); Blob blob = view.getBlobStore().getBlob(container, name, range(0, 5).range(6, TEST_STRING.length())); validateMetadata(blob.getMetadata(), container, name); assertEquals(getContentAsStringOrNullAndClose(blob), TEST_STRING); } finally { returnContainer(container); } }