Repository: jclouds Updated Branches: refs/heads/master b2c0786fc -> b50c518f7
Avoid sleeping in signed URL tests Also bump expiration to a consistent 60 seconds. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b50c518f Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b50c518f Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b50c518f Branch: refs/heads/master Commit: b50c518f7e063fb6a3f624f1065fabd22ce0f9c9 Parents: b2c0786 Author: Andrew Gaul <[email protected]> Authored: Thu Jan 21 18:46:27 2016 -0800 Committer: Andrew Gaul <[email protected]> Committed: Sat Jan 23 13:48:43 2016 -0800 ---------------------------------------------------------------------- .../internal/BaseBlobSignerLiveTest.java | 57 +++++++++++++++----- 1 file changed, 45 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/b50c518f/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java ---------------------------------------------------------------------- diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java index 5332c23..080ed9e 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java @@ -41,6 +41,9 @@ import com.google.common.util.concurrent.Uninterruptibles; */ @Test(groups = {"live"}) public class BaseBlobSignerLiveTest extends BaseBlobStoreIntegrationTest { + protected int getSignedUrlTimeout() { + return 60; + } @Test public void testSignGetUrl() throws Exception { @@ -82,20 +85,35 @@ public class BaseBlobSignerLiveTest extends BaseBlobStoreIntegrationTest { public void testSignGetUrlWithTime() throws InterruptedException, IOException { String name = "hello"; String text = "fooooooooooooooooooooooo"; - int timeout = 10; Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build(); String container = getContainerName(); try { view.getBlobStore().putBlob(container, blob); assertConsistencyAwareContainerSize(container, 1); - HttpRequest request = view.getSigner().signGetBlob(container, name, timeout); - + HttpRequest request = view.getSigner().signGetBlob(container, name, getSignedUrlTimeout()); assertEquals(request.getFilters().size(), 0); - Uninterruptibles.sleepUninterruptibly(timeout / 2, TimeUnit.SECONDS); assertEquals(Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream()), text); + } catch (UnsupportedOperationException ignore) { + throw new SkipException("signGetUrl with a time limit is not supported on " + provider); + } finally { + returnContainer(container); + } + } + + @Test + public void testSignGetUrlWithTimeExpired() throws InterruptedException, IOException { + String name = "hello"; + String text = "fooooooooooooooooooooooo"; + + Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build(); + String container = getContainerName(); + try { + view.getBlobStore().putBlob(container, blob); + assertConsistencyAwareContainerSize(container, 1); + HttpRequest request = view.getSigner().signGetBlob(container, name, -getSignedUrlTimeout()); + assertEquals(request.getFilters().size(), 0); - TimeUnit.SECONDS.sleep(2 * timeout); try { Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream()); fail("Temporary URL did not expire as expected"); @@ -129,26 +147,41 @@ public class BaseBlobSignerLiveTest extends BaseBlobStoreIntegrationTest { public void testSignPutUrlWithTime() throws Exception { String name = "hello"; String text = "fooooooooooooooooooooooo"; - int timeout = 30; Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build(); String container = getContainerName(); try { - HttpRequest request = view.getSigner().signPutBlob(container, blob, timeout); + HttpRequest request = view.getSigner().signPutBlob(container, blob, getSignedUrlTimeout()); assertEquals(request.getFilters().size(), 0); // Strip Expect: 100-continue to make actual responses visible, since // Java 7+ will throw a ProtocolException instead of setting the response code: // http://www.docjar.com/html/api/sun/net/www/protocol/http/HttpURLConnection.java.html#1021 request = request.toBuilder().removeHeader(EXPECT).build(); - Uninterruptibles.sleepUninterruptibly(timeout / 2, TimeUnit.SECONDS); Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream()); - assertConsistencyAwareContainerSize(container, 1); + } catch (UnsupportedOperationException ignore) { + throw new SkipException("signPutUrl with a time limit is not supported on " + provider); + } finally { + returnContainer(container); + } + } + + @Test + public void testSignPutUrlWithTimeExpired() throws Exception { + String name = "hello"; + String text = "fooooooooooooooooooooooo"; - view.getBlobStore().removeBlob(container, name); - assertConsistencyAwareContainerSize(container, 0); + Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build(); + String container = getContainerName(); + try { + HttpRequest request = view.getSigner().signPutBlob(container, blob, -getSignedUrlTimeout()); + assertEquals(request.getFilters().size(), 0); + + // Strip Expect: 100-continue to make actual responses visible, since + // Java 7+ will throw a ProtocolException instead of setting the response code: + // http://www.docjar.com/html/api/sun/net/www/protocol/http/HttpURLConnection.java.html#1021 + request = request.toBuilder().removeHeader(EXPECT).build(); - TimeUnit.SECONDS.sleep(2 * timeout); try { Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream()); fail("Temporary URL did not expire as expected");
