From e237ee9ebb39244d99301f8161036733fb93f77d Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Sat, 12 Dec 2015 17:45:41 +0800 Subject: [PATCH] Disable ETag checking for Google Cloud Storage Google Cloud Storage ETag is opaque and not an MD5 hash. --- src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java index b13579c..43c80d9 100644 --- a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java +++ b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; +import java.util.Set; import java.util.concurrent.TimeUnit; import javax.net.ssl.HostnameVerifier; @@ -58,6 +59,7 @@ import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.UploadPartRequest; import com.amazonaws.services.s3.model.UploadPartResult; import com.google.common.base.Throwables; +import com.google.common.collect.ImmutableSet; import com.google.common.io.ByteSource; import org.assertj.core.api.Fail; @@ -79,6 +81,11 @@ public final class S3AwsSdkTest { disableSslVerification(); } + /** Blobstores with opaque ETags. */ + private static final Set BLOBSTORE_OPAQUE_ETAG = ImmutableSet.of( + "azureblob", + "google-cloud-storage" + ); private static final ByteSource BYTE_SOURCE = ByteSource.wrap(new byte[1]); private URI s3Endpoint; @@ -100,9 +107,8 @@ public final class S3AwsSdkTest { info.getBlobStore().createContainerInLocation(null, containerName); String blobStoreType = context.unwrap().getProviderMetadata().getId(); - if (blobStoreType.equals("azureblob")) { - // AWK SDK checks that ETag matches Content-MD5 during PUT but - // Azure returns an opaque ETag. + if (BLOBSTORE_OPAQUE_ETAG.contains(blobStoreType)) { + // AWK SDK checks that ETag matches Content-MD5 during PUT System.setProperty( "com.amazonaws.services.s3.disablePutObjectMD5Validation", "true");