JCLOUDS-1337: Atmos putBlob portable storage tiers
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f513bf7c Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f513bf7c Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f513bf7c Branch: refs/heads/master Commit: f513bf7c40d9e7e83fae021f70fc1ca5dce3841b Parents: e0e3519 Author: Andrew Gaul <[email protected]> Authored: Mon Oct 23 20:45:10 2017 -0700 Committer: Andrew Gaul <[email protected]> Committed: Mon Oct 23 21:31:48 2017 -0700 ---------------------------------------------------------------------- .../functions/ObjectToBlobMetadata.java | 2 ++ .../integration/AtmosIntegrationLiveTest.java | 38 ++++++++++++++++++++ .../internal/BaseBlobIntegrationTest.java | 6 +++- 3 files changed, 45 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/f513bf7c/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java index 17aaee9..0ea70cbe 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/ObjectToBlobMetadata.java @@ -29,6 +29,7 @@ import org.jclouds.atmos.filters.ShareUrl; import org.jclouds.atmos.functions.AtmosObjectName; import org.jclouds.blobstore.domain.MutableBlobMetadata; import org.jclouds.blobstore.domain.StorageType; +import org.jclouds.blobstore.domain.Tier; import org.jclouds.blobstore.domain.internal.MutableBlobMetadataImpl; import org.jclouds.http.HttpUtils; @@ -78,6 +79,7 @@ public class ObjectToBlobMetadata implements Function<AtmosObject, MutableBlobMe } to.setUserMetadata(lowerKeyMetadata); to.setSize(from.getContentMetadata().getContentLength()); + to.setTier(Tier.STANDARD); return to; } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/f513bf7c/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java index 4f6e991..8bed038 100644 --- a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java +++ b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java @@ -17,6 +17,7 @@ package org.jclouds.atmos.blobstore.integration; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown; import static org.testng.Assert.assertEquals; import java.io.IOException; @@ -24,6 +25,7 @@ import java.util.concurrent.ExecutionException; import org.jclouds.blobstore.domain.Blob; import org.jclouds.blobstore.domain.BlobMetadata; +import org.jclouds.blobstore.domain.Tier; import org.jclouds.blobstore.integration.internal.BaseBlobIntegrationTest; import org.testng.SkipException; import org.testng.annotations.DataProvider; @@ -197,4 +199,40 @@ public class AtmosIntegrationLiveTest extends BaseBlobIntegrationTest { public void testCopyIfNoneMatchNegative() throws Exception { super.testCopyIfNoneMatchNegative(); } + + @Test(groups = { "integration", "live" }) + public void testPutBlobTierStandardMultipart() throws Exception { + try { + super.testPutBlobTierStandardMultipart(); + failBecauseExceptionWasNotThrown(UnsupportedOperationException.class); + } catch (UnsupportedOperationException uoe) { + throw new SkipException("Atmos does not support multipart", uoe); + } + } + + @Test(groups = { "integration", "live" }) + public void testPutBlobTierInfrequentMultipart() throws Exception { + try { + super.testPutBlobTierInfrequentMultipart(); + failBecauseExceptionWasNotThrown(UnsupportedOperationException.class); + } catch (UnsupportedOperationException uoe) { + throw new SkipException("Atmos does not support multipart", uoe); + } + } + + @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 + protected void checkTier(BlobMetadata metadata, Tier expected) { + // Atmos maps all tiers to STANDARD + assertThat(metadata.getTier()).isEqualTo(Tier.STANDARD); + } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/f513bf7c/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java ---------------------------------------------------------------------- diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java index 27657ae..23f26eb 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java @@ -787,12 +787,16 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest { .tier(tier) .build(); blobStore.putBlob(containerName, blob, options); - assertThat(blobStore.blobMetadata(containerName, blobName).getTier()).isEqualTo(tier); + checkTier(blobStore.blobMetadata(containerName, blobName), tier); } finally { returnContainer(containerName); } } + protected void checkTier(BlobMetadata metadata, Tier expected) { + assertThat(metadata.getTier()).isEqualTo(expected); + } + protected void checkUserMetadata(Map<String, String> userMetadata1, Map<String, String> userMetadata2) { assertThat(userMetadata1).isEqualTo(userMetadata2); }
