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 2014/08/20 21:45:40 UTC
git commit: JCLOUDS-679: Use HEAD for S3 bucketExists
Repository: jclouds
Updated Branches:
refs/heads/master e711275fb -> 80a443003
JCLOUDS-679: Use HEAD for S3 bucketExists
This method costs 0.4 cents per 10,000 requests instead of 0.5 cents
per 1,000 requests:
http://aws.amazon.com/s3/pricing/
API reference:
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/80a44300
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/80a44300
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/80a44300
Branch: refs/heads/master
Commit: 80a44300352ec3951e96eacee8f91daebdde298e
Parents: e711275
Author: Andrew Gaul <ga...@apache.org>
Authored: Tue Jul 22 10:55:52 2014 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Wed Aug 20 12:44:20 2014 -0700
----------------------------------------------------------------------
.../main/java/org/jclouds/s3/S3AsyncClient.java | 5 +-
.../jclouds/s3/PathBasedS3ClientExpectTest.java | 6 +--
.../java/org/jclouds/s3/S3AsyncClientTest.java | 2 +-
.../java/org/jclouds/s3/S3ClientExpectTest.java | 6 +--
.../S3RedirectionRetryHandlerExpectTest.java | 55 --------------------
5 files changed, 9 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/80a44300/apis/s3/src/main/java/org/jclouds/s3/S3AsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/S3AsyncClient.java b/apis/s3/src/main/java/org/jclouds/s3/S3AsyncClient.java
index d0e1a6e..a7dff35 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/S3AsyncClient.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/S3AsyncClient.java
@@ -202,10 +202,9 @@ public interface S3AsyncClient extends Closeable {
/**
* @see S3Client#bucketExists
*/
- @Named("ListBucket")
- @GET
+ @Named("BucketExists")
+ @HEAD
@Path("/")
- @QueryParams(keys = "max-keys", values = "0")
@Fallback(FalseOnContainerNotFound.class)
ListenableFuture<Boolean> bucketExists(
@Bucket @EndpointParam(parser = AssignCorrectHostnameForBucket.class) @BinderParam(BindAsHostPrefixIfConfigured.class) @ParamValidators(BucketNameValidator.class) String bucketName);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/80a44300/apis/s3/src/test/java/org/jclouds/s3/PathBasedS3ClientExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/PathBasedS3ClientExpectTest.java b/apis/s3/src/test/java/org/jclouds/s3/PathBasedS3ClientExpectTest.java
index 42af044..14be662 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/PathBasedS3ClientExpectTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/PathBasedS3ClientExpectTest.java
@@ -42,10 +42,10 @@ public class PathBasedS3ClientExpectTest extends BaseS3ClientExpectTest {
@Test
public void testBucketExistsReturnsTrueOn200AndFalseOn404() {
- HttpRequest bucketFooExists = HttpRequest.builder().method("GET")
- .endpoint("https://s3.amazonaws.com/foo?max-keys=0")
+ HttpRequest bucketFooExists = HttpRequest.builder().method("HEAD")
+ .endpoint("https://s3.amazonaws.com/foo")
.addHeader("Date", CONSTANT_DATE)
- .addHeader("Authorization", "AWS identity:p32RsBr2inawMBeCkkiA228BT2w=")
+ .addHeader("Authorization", "AWS identity:lLD0mzo2bZPIWhxlFDZoT09MKUQ=")
.build();
S3Client clientWhenBucketExists = requestSendsResponse(bucketFooExists, HttpResponse.builder().statusCode(200).build());
http://git-wip-us.apache.org/repos/asf/jclouds/blob/80a44300/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java
index a82ef9e..c0561f4 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3AsyncClientTest.java
@@ -178,7 +178,7 @@ public abstract class S3AsyncClientTest<T extends S3AsyncClient> extends BaseS3A
Invokable<?, ?> method = method(S3AsyncClient.class, "bucketExists", String.class);
GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("bucket"));
- assertRequestLineEquals(request, "GET https://bucket." + url + "/?max-keys=0 HTTP/1.1");
+ assertRequestLineEquals(request, "HEAD https://bucket." + url + "/ HTTP/1.1");
assertNonPayloadHeadersEqual(request, "Host: bucket." + url + "\n");
assertPayloadEquals(request, null, null, false);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/80a44300/apis/s3/src/test/java/org/jclouds/s3/S3ClientExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientExpectTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientExpectTest.java
index 67baa7b..577c841 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientExpectTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientExpectTest.java
@@ -31,11 +31,11 @@ public class S3ClientExpectTest extends BaseS3ClientExpectTest {
@Test
public void testBucketExistsReturnsTrueOn200AndFalseOn404() {
- HttpRequest bucketFooExists = HttpRequest.builder().method("GET").endpoint(
- URI.create("https://s3.amazonaws.com/foo?max-keys=0")).headers(
+ HttpRequest bucketFooExists = HttpRequest.builder().method("HEAD").endpoint(
+ URI.create("https://s3.amazonaws.com/foo")).headers(
ImmutableMultimap.<String, String> builder()
.put("Date", CONSTANT_DATE)
- .put("Authorization", "AWS identity:p32RsBr2inawMBeCkkiA228BT2w=")
+ .put("Authorization", "AWS identity:lLD0mzo2bZPIWhxlFDZoT09MKUQ=")
.build()).build();
S3Client clientWhenBucketExists = requestSendsResponse(bucketFooExists, HttpResponse.builder().statusCode(200).build());
http://git-wip-us.apache.org/repos/asf/jclouds/blob/80a44300/apis/s3/src/test/java/org/jclouds/s3/handlers/S3RedirectionRetryHandlerExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/handlers/S3RedirectionRetryHandlerExpectTest.java b/apis/s3/src/test/java/org/jclouds/s3/handlers/S3RedirectionRetryHandlerExpectTest.java
deleted file mode 100644
index 11360f9..0000000
--- a/apis/s3/src/test/java/org/jclouds/s3/handlers/S3RedirectionRetryHandlerExpectTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.s3.handlers;
-
-import java.net.URI;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.s3.S3Client;
-import org.jclouds.s3.internal.BaseS3ClientExpectTest;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableMultimap;
-
-@Test(groups = "unit", testName = "S3RedirectionRetryHandlerExpectTest")
-public class S3RedirectionRetryHandlerExpectTest extends BaseS3ClientExpectTest {
-
- public void testRedirectOnHeadBucketChangesRequestToGetBucket() {
-
- HttpRequest bucketFooExists = HttpRequest.builder().method("HEAD").endpoint(
- URI.create("https://s3.amazonaws.com/foo?max-keys=0")).headers(
- ImmutableMultimap.<String, String> builder().put("Date",
- CONSTANT_DATE).put("Authorization", "AWS identity:p32RsBr2inawMBeCkkiA228BT2w=").build())
- .build();
-
- HttpResponse redirectResponse = HttpResponse.builder().statusCode(301).build();
-
- HttpRequest bucketFooExistsNowUsesGET = HttpRequest.builder().method("GET").endpoint(
- URI.create("https://s3.amazonaws.com/foo?max-keys=0")).headers(
- ImmutableMultimap.<String, String> builder().put("Date",
- CONSTANT_DATE).put("Authorization", "AWS identity:p32RsBr2inawMBeCkkiA228BT2w=").build())
- .build();
-
- HttpResponse success = HttpResponse.builder().statusCode(200).build();
-
- S3Client clientWhenBucketExists = requestsSendResponses(bucketFooExists, redirectResponse, bucketFooExistsNowUsesGET, success);
-
- assert clientWhenBucketExists.bucketExists("foo");
-
- }
-}