You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2015/04/09 08:21:34 UTC
[04/16] jclouds git commit: Return ETag from Azure setBlobMetadata
Return ETag from Azure setBlobMetadata
Also fix up live tests.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/75f6d76f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/75f6d76f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/75f6d76f
Branch: refs/heads/1.9.x
Commit: 75f6d76f1d9efa52f999611fc7fa78a35e941496
Parents: 1742110
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Dec 19 16:06:51 2014 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Wed Apr 8 23:13:51 2015 -0700
----------------------------------------------------------------------
.../org/jclouds/azureblob/AzureBlobClient.java | 3 +-
.../azureblob/AzureBlobClientLiveTest.java | 53 ++++++++------------
.../jclouds/azureblob/AzureBlobClientTest.java | 2 +-
3 files changed, 24 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/75f6d76f/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
index 7223888..368dda0 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
@@ -415,7 +415,8 @@ public interface AzureBlobClient extends Closeable {
@PUT
@Path("{container}/{name}")
@QueryParams(keys = { "comp" }, values = { "metadata" })
- void setBlobMetadata(
+ @ResponseParser(ParseETagHeader.class)
+ String setBlobMetadata(
@PathParam("container") @ParamValidators(ContainerNameValidator.class) String container,
@PathParam("name") String name, @BinderParam(BindMapToHeadersWithPrefix.class) Map<String, String> metadata);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/75f6d76f/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
index de8d90c..2dccf19 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
@@ -231,32 +231,26 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest {
// Test HEAD of object
BlobProperties metadata = getApi().getBlobProperties(privateContainer, object.getProperties().getName());
- // TODO assertEquals(metadata.getName(),
- // object.getProperties().getName());
- // we can't check this while hacking around lack of content-md5, as GET of
- // the first byte will
- // show incorrect length 1, the returned size, as opposed to the real
- // length. This is an ok
- // tradeoff, as a container list will contain the correct size of the
- // objects in an
- // inexpensive fashion
- // http://code.google.com/p/jclouds/issues/detail?id=92
- // assertEquals(metadata.getSize(), data.length());
+ assertEquals(metadata.getName(), object.getProperties().getName());
+ assertEquals(metadata.getContentMetadata().getContentLength(), Long.valueOf(data.length()));
assertEquals(metadata.getContentMetadata().getContentType(), "text/plain");
- // Azure doesn't return the Content-MD5 on head request..
- assertEquals(base16().lowerCase().encode(md5),
+ assertEquals(base16().lowerCase().encode(metadata.getContentMetadata().getContentMD5()),
base16().lowerCase().encode(object.getProperties().getContentMetadata().getContentMD5()));
assertEquals(metadata.getETag(), newEtag);
assertEquals(metadata.getMetadata().entrySet().size(), 1);
assertEquals(metadata.getMetadata().get("mykey"), "metadata-value");
- // // Test POST to update object's metadata
- // Multimap<String, String> userMetadata = LinkedHashMultimap.create();
- // userMetadata.put("New-Metadata-1", "value-1");
- // userMetadata.put("New-Metadata-2", "value-2");
- // assertTrue(getApi().setBlobProperties(privateContainer,
- // object.getProperties().getName(),
- // userMetadata));
+ // Test POST to update object's metadata
+ Map<String, String> userMetadata = ImmutableMap.<String, String>builder()
+ .put("new_metadata_1", "value-1")
+ .put("new_metadata_2", "value-2")
+ .build();
+ String eTag = getApi().setBlobMetadata(privateContainer, object.getProperties().getName(), userMetadata);
+ assertThat(eTag).isNotNull();
+
+ // Azure ETag are timestamps not content hash
+ String eTag2 = getApi().setBlobMetadata(privateContainer, object.getProperties().getName(), userMetadata);
+ assertThat(eTag2).isNotNull().isNotEqualTo(eTag);
// Test GET of missing object
assert getApi().getBlob(privateContainer, "non-existent-object") == null;
@@ -264,21 +258,14 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest {
// Test GET of object (including updated metadata)
AzureBlob getBlob = getApi().getBlob(privateContainer, object.getProperties().getName());
assertEquals(Strings2.toStringAndClose(getBlob.getPayload().openStream()), data);
- // TODO assertEquals(getBlob.getName(), object.getProperties().getName());
+ assertEquals(getBlob.getProperties().getName(), object.getProperties().getName());
assertEquals(getBlob.getPayload().getContentMetadata().getContentLength(), Long.valueOf(data.length()));
assertEquals(getBlob.getProperties().getContentMetadata().getContentType(), "text/plain");
assertEquals(base16().lowerCase().encode(md5),
base16().lowerCase().encode(getBlob.getProperties().getContentMetadata().getContentMD5()));
- assertEquals(newEtag, getBlob.getProperties().getETag());
- // wait until we can update metadata
- // assertEquals(getBlob.getProperties().getMetadata().entries().size(),
- // 2);
- // assertEquals(
- // Iterables.getLast(getBlob.getProperties().getMetadata().get("New-Metadata-1")),
- // "value-1");
- // assertEquals(
- // Iterables.getLast(getBlob.getProperties().getMetadata().get("New-Metadata-2")),
- // "value-2");
+ assertEquals(getBlob.getProperties().getMetadata().size(), 2);
+ assertEquals(getBlob.getProperties().getMetadata().get("new_metadata_1"), "value-1");
+ assertEquals(getBlob.getProperties().getMetadata().get("new_metadata_2"), "value-2");
assertEquals(metadata.getMetadata().entrySet().size(), 1);
assertEquals(metadata.getMetadata().get("mykey"), "metadata-value");
@@ -290,7 +277,9 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest {
.maxResults(1).includeMetadata());
assertEquals(response.size(), 1);
assertEquals(Iterables.getOnlyElement(response).getName(), object.getProperties().getName());
- assertEquals(Iterables.getOnlyElement(response).getMetadata(), ImmutableMap.of("mykey", "metadata-value"));
+ assertEquals(Iterables.getOnlyElement(response).getMetadata().size(), 2);
+ assertEquals(Iterables.getOnlyElement(response).getMetadata().get("new_metadata_1"), "value-1");
+ assertEquals(Iterables.getOnlyElement(response).getMetadata().get("new_metadata_2"), "value-2");
// Test PUT with invalid ETag (as if object's data was corrupted in
// transit)
http://git-wip-us.apache.org/repos/asf/jclouds/blob/75f6d76f/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java
index 18a266a..5e82b35 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientTest.java
@@ -299,7 +299,7 @@ public class AzureBlobClientTest extends BaseRestAnnotationProcessingTest<AzureB
"x-ms-version: 2012-02-12\n");
assertPayloadEquals(request, null, null, false);
- assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class);
+ assertResponseParserClassEquals(method, request, ParseETagHeader.class);
assertSaxResponseParserClassEquals(method, null);
assertFallbackClassEquals(method, null);
}