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";