You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2015/02/14 00:25:41 UTC

jclouds git commit: Fixes blob-related tests that fail occasionally

Repository: jclouds
Updated Branches:
  refs/heads/master 4bb319a0c -> f6d43f696


Fixes blob-related tests that fail occasionally


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f6d43f69
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f6d43f69
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f6d43f69

Branch: refs/heads/master
Commit: f6d43f69621e536eecccbe8bc7e14e3c5c91d94c
Parents: 4bb319a
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Feb 13 03:38:25 2015 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Fri Feb 13 17:25:15 2015 -0600

----------------------------------------------------------------------
 .../openstack/swift/CommonSwiftClient.java        |  1 +
 .../integration/SwiftBlobIntegrationLiveTest.java | 11 +++++++----
 .../internal/BaseBlobIntegrationTest.java         | 10 ++++++++++
 .../internal/BaseBlobStoreIntegrationTest.java    | 18 +++++++++---------
 .../internal/BaseContainerIntegrationTest.java    | 15 +++++++++++++++
 .../CloudFilesUSBlobIntegrationLiveTest.java      |  2 +-
 6 files changed, 43 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/apis/swift/src/main/java/org/jclouds/openstack/swift/CommonSwiftClient.java
----------------------------------------------------------------------
diff --git a/apis/swift/src/main/java/org/jclouds/openstack/swift/CommonSwiftClient.java b/apis/swift/src/main/java/org/jclouds/openstack/swift/CommonSwiftClient.java
index e2faa5e..71f6b5d 100644
--- a/apis/swift/src/main/java/org/jclouds/openstack/swift/CommonSwiftClient.java
+++ b/apis/swift/src/main/java/org/jclouds/openstack/swift/CommonSwiftClient.java
@@ -246,6 +246,7 @@ public interface CommonSwiftClient extends Closeable {
    @Fallback(SwiftFallbacks.TrueOn404FalseOn409.class)
    @Path("/{container}")
    boolean deleteContainerIfEmpty(@PathParam("container") String container);
+
    /**
     * @deprecated This method will be replaced by
     *             {@link org.jclouds.openstack.swift.v1.features.ContainerApi#head()}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftBlobIntegrationLiveTest.java b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftBlobIntegrationLiveTest.java
index 5cfb075..4f27871 100644
--- a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftBlobIntegrationLiveTest.java
+++ b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/integration/SwiftBlobIntegrationLiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
 
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.domain.Blob;
@@ -40,8 +41,9 @@ import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 import com.google.common.io.ByteSource;
+import com.google.common.util.concurrent.Uninterruptibles;
 
-@Test(groups = "live")
+@Test(groups = "live", singleThreaded = true)
 public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
    /**
     * Use the minimum part size to minimise the file size that we have to
@@ -56,7 +58,7 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
       props.setProperty("jclouds.mpu.parts.size", String.valueOf(PART_SIZE));
       return props;
    }
-   
+
    private ByteSource oneHundredOneConstitutions;
 
    public SwiftBlobIntegrationLiveTest() {
@@ -100,7 +102,7 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
       assert blob.getPayload().getContentMetadata().getContentLanguage() == null;
       assert blob.getMetadata().getContentMetadata().getContentLanguage() == null;
    }
-   
+
    // swift doesn't support quotes
    @Override
    @DataProvider(name = "delete")
@@ -108,7 +110,7 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
       return new Object[][] { { "normal" }, { "sp ace" }, { "qu?stion" }, { "unic₪de" }, { "path/foo" }, { "colon:" },
                { "asteri*k" }, { "{great<r}" }, { "lesst>en" }, { "p|pe" } };
    }
-    
+
    @Test(groups = { "integration", "live" })
    public void testMultipartChunkedFileStream() throws IOException, InterruptedException {
       String containerName = getContainerName();
@@ -147,6 +149,7 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
          ByteSource inputSource = createByteSource(PART_SIZE + 1);
          addMultipartBlobToContainer(containerName, objectName, inputSource);
 
+         Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS);
          // did we create enough parts?
          long countAfter = blobStore.countBlobs(containerName);
          assertNotEquals(countAfter, countBefore, "No blob was created");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/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 003c5b0..bec1c89 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
@@ -49,6 +49,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.ContainerNotFoundException;
+import org.jclouds.blobstore.attr.ConsistencyModel;
 import org.jclouds.blobstore.domain.Blob;
 import org.jclouds.blobstore.domain.BlobBuilder.PayloadBlobBuilder;
 import org.jclouds.blobstore.domain.BlobMetadata;
@@ -432,7 +433,13 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
       String container = getContainerName();
       try {
          addBlobToContainer(container, name, name, MediaType.TEXT_PLAIN);
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
          view.getBlobStore().removeBlob(container, name);
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
          assertContainerEmptyDeleting(container, name);
       } finally {
          returnContainer(container);
@@ -510,6 +517,9 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
       try {
 
          assertNotNull(view.getBlobStore().putBlob(container, blob));
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
 
          blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName());
          String returnedString = getContentAsStringOrNullAndClose(blob);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java
index 2173efb..89776d6 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobStoreIntegrationTest.java
@@ -66,7 +66,7 @@ import com.google.common.util.concurrent.MoreExecutors;
 import com.google.inject.Module;
 
 public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreContext> {
-   
+
    protected static final String LOCAL_ENCODING = System.getProperty("file.encoding");
    protected static final String XML_STRING_FORMAT = "<apples><apple name=\"%s\"></apple> </apples>";
    protected static final String TEST_STRING = String.format(XML_STRING_FORMAT, "apple");
@@ -110,7 +110,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
       view.close();
       view = null;
    }
-   
+
    protected Iterable<Module> setupModules() {
       return ImmutableSet.<Module> of(getLoggingModule(), createHttpModule());
    }
@@ -128,7 +128,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
       exec = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
    }
 
-   
+
    @AfterClass(groups = { "integration", "live" })
    @Override
    protected void tearDownContext() {
@@ -252,7 +252,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
          throws InterruptedException {
       context.getBlobStore().createContainerInLocation(null, containerName);
       if (context.getConsistencyModel() == ConsistencyModel.EVENTUAL)
-         Thread.sleep(1000);
+         Thread.sleep(10000);
       context.getBlobStore().clearContainer(containerName);
    }
 
@@ -392,7 +392,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
          }
       });
    }
-   
+
    protected void assertConsistencyAwareBlobExpiryMetadata(final String containerName, final String blobName,
             final Date expectedExpires) throws InterruptedException {
       assertConsistencyAware(new Runnable() {
@@ -415,7 +415,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
          public void run() {
             try {
                Location actualLoc = view.getBlobStore().getBlob(containerName, blobName).getMetadata().getLocation();
-               
+
                assert loc.equals(actualLoc) : String.format(
                      "blob %s in %s, in location %s instead of %s", blobName, containerName, actualLoc, loc);
             } catch (Exception e) {
@@ -436,7 +436,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
     * requestor will create a container using the name returned from this. This method will take
     * care not to exceed the maximum containers permitted by a provider by deleting an existing
     * container first.
-    * 
+    *
     * @throws InterruptedException
     */
    public String getScratchContainerName() throws InterruptedException {
@@ -450,7 +450,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
           * Ensure that any returned container name actually exists on the server. Return of a
           * non-existent container introduces subtle testing bugs, where later unrelated tests will
           * fail.
-          * 
+          *
           * NOTE: This sanity check should only be run for Stub-based Integration testing -- it will
           * *substantially* slow down tests on a real server over a network.
           */
@@ -481,7 +481,7 @@ public class BaseBlobStoreIntegrationTest extends BaseViewLiveTest<BlobStoreCont
 
    /**
     * abandon old container name instead of waiting for the container to be created.
-    * 
+    *
     * @throws InterruptedException
     */
    public void destroyContainer(String scratchContainer) throws InterruptedException {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
index 732e350..c3d32a3 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
@@ -33,11 +33,13 @@ import java.io.IOException;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.blobstore.BlobStore;
+import org.jclouds.blobstore.attr.ConsistencyModel;
 import org.jclouds.blobstore.domain.Blob;
 import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.ContainerAccess;
@@ -48,6 +50,7 @@ import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.io.ByteSource;
+import com.google.common.util.concurrent.Uninterruptibles;
 
 public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest {
 
@@ -224,6 +227,10 @@ public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest {
 
          addTenObjectsUnderPrefix(containerName, directory);
 
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
+
          container = view.getBlobStore().list(containerName);
          // we should still have only the directory under root
          assert container.getNextMarker() == null;
@@ -237,6 +244,11 @@ public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest {
          // try 2 level deep directory
          assert !view.getBlobStore().directoryExists(containerName, directory + "/" + directory);
          view.getBlobStore().createDirectory(containerName, directory + "/" + directory);
+
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
+
          assert view.getBlobStore().directoryExists(containerName, directory + "/" + directory);
 
          view.getBlobStore().clearContainer(containerName, inDirectory(directory));
@@ -445,6 +457,9 @@ public class BaseContainerIntegrationTest extends BaseBlobStoreIntegrationTest {
       String containerName = getContainerName();
       try {
          add15UnderRoot(containerName);
+         if (view.getConsistencyModel() == ConsistencyModel.EVENTUAL) {
+            Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
+         }
          Set<? extends StorageMetadata> container = view.getBlobStore().list(containerName);
          assertEquals(container.size(), 15);
       } finally {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f6d43f69/providers/cloudfiles-us/src/test/java/org/jclouds/rackspace/cloudfiles/blobstore/integration/CloudFilesUSBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/cloudfiles-us/src/test/java/org/jclouds/rackspace/cloudfiles/blobstore/integration/CloudFilesUSBlobIntegrationLiveTest.java b/providers/cloudfiles-us/src/test/java/org/jclouds/rackspace/cloudfiles/blobstore/integration/CloudFilesUSBlobIntegrationLiveTest.java
index a5aaee5..271f143 100644
--- a/providers/cloudfiles-us/src/test/java/org/jclouds/rackspace/cloudfiles/blobstore/integration/CloudFilesUSBlobIntegrationLiveTest.java
+++ b/providers/cloudfiles-us/src/test/java/org/jclouds/rackspace/cloudfiles/blobstore/integration/CloudFilesUSBlobIntegrationLiveTest.java
@@ -19,7 +19,7 @@ package org.jclouds.rackspace.cloudfiles.blobstore.integration;
 import org.jclouds.cloudfiles.blobstore.integration.CloudFilesBlobIntegrationLiveTest;
 import org.testng.annotations.Test;
 
-@Test(groups =  "live", testName = "CloudFilesUSBlobIntegrationLiveTest")
+@Test(groups =  "live", testName = "CloudFilesUSBlobIntegrationLiveTest", singleThreaded = true)
 public class CloudFilesUSBlobIntegrationLiveTest extends CloudFilesBlobIntegrationLiveTest {
    public CloudFilesUSBlobIntegrationLiveTest() {
       provider = "cloudfiles-us";