From 2bff310db2f66ada7b2038bed9d44a5f11d4169f Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Wed, 11 Jan 2012 20:12:44 -0800 Subject: [PATCH] fixed thread safety in test --- .../org/jclouds/blobstore/BlobStoresTest.java | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/blobstore/src/test/java/org/jclouds/blobstore/BlobStoresTest.java b/blobstore/src/test/java/org/jclouds/blobstore/BlobStoresTest.java index 2e2c11f42d..0d8c8bd571 100644 --- a/blobstore/src/test/java/org/jclouds/blobstore/BlobStoresTest.java +++ b/blobstore/src/test/java/org/jclouds/blobstore/BlobStoresTest.java @@ -18,14 +18,14 @@ */ package org.jclouds.blobstore; -import static org.easymock.classextension.EasyMock.createMock; +import static org.easymock.EasyMock.createMock; import static org.testng.Assert.assertEquals; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import org.easymock.classextension.EasyMock; +import org.easymock.EasyMock; import org.jclouds.blobstore.domain.PageSet; import org.jclouds.blobstore.domain.StorageMetadata; import org.jclouds.blobstore.domain.internal.PageSetImpl; @@ -38,11 +38,12 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +@Test(singleThreaded = true, testName = "BlobStoresTest") public class BlobStoresTest { private final String containerName = "mycontainer"; - @Test(expectedExceptions={ContainerNotFoundException.class}) + @Test(expectedExceptions = { ContainerNotFoundException.class }) public void testListAllForUnknownContainerFromTransientBlobStoreEagerly() throws Exception { ListContainerOptions containerOptions = ListContainerOptions.NONE; ListAllOptions listAllOptions = ListAllOptions.Builder.eager(true); @@ -58,7 +59,7 @@ public class BlobStoresTest { /** * Default listAll is not eager, so test that exception is thrown when first attempt to iterate. */ - @Test(expectedExceptions={ContainerNotFoundException.class}) + @Test(expectedExceptions = { ContainerNotFoundException.class }) public void testListAllForUnknownContainerFromTransientBlobStore() throws Exception { ListContainerOptions options = ListContainerOptions.NONE; BlobStoreContext context = new BlobStoreContextFactory().createContext("transient", "dummyid", "dummykey"); @@ -70,7 +71,7 @@ public class BlobStoresTest { context.close(); } } - + @Test public void testListAllFromTransientBlobStore() throws Exception { runListAllFromTransientBlobStore(false); @@ -89,48 +90,53 @@ public class BlobStoresTest { BlobStore blobStore = null; try { blobStore = context.getBlobStore(); - blobStore.createContainerInLocation(null, containerName); + blobStore.createContainerInLocation(null, containerName); Set expectedNames = new HashSet(); for (int i = 0; i < NUM_BLOBS; i++) { - String blobName = "myname"+i; - blobStore.putBlob(containerName, blobStore.blobBuilder(blobName).payload("payload"+i).build()); + String blobName = "myname" + i; + blobStore.putBlob(containerName, blobStore.blobBuilder(blobName).payload("payload" + i).build()); expectedNames.add(blobName); } - + ListAllOptions listAllOptions = ListAllOptions.Builder.eager(eager); - Iterable iterable = BlobStores.listAll(blobStore, containerName, containerOptions, listAllOptions); - + Iterable iterable = BlobStores.listAll(blobStore, containerName, containerOptions, + listAllOptions); + for (int i = 0; i < numTimesToIterate; i++) { - Iterable iterableNames = Iterables.transform(iterable, new Function() { - @Override public String apply(StorageMetadata input) { + Iterable iterableNames = Iterables.transform(iterable, new Function() { + @Override + public String apply(StorageMetadata input) { return input.getName(); - }}); - - // Note that blob.getMetadata being put does not equal blob metadata being retrieved + } + }); + + // Note that blob.getMetadata being put does not equal blob metadata being retrieved // because uri is null in one and populated in the other. // Therefore we just compare names to ensure the iterator worked. assertEquals(ImmutableSet.copyOf(iterableNames), expectedNames); } } finally { - if (blobStore != null) blobStore.deleteContainer(containerName); + if (blobStore != null) + blobStore.deleteContainer(containerName); context.close(); } } - + @Test public void testListAllWhenOnePage() throws Exception { BlobStore blobStore = createMock(BlobStore.class); ListContainerOptions options = ListContainerOptions.NONE; StorageMetadata v1 = createMock(StorageMetadata.class); PageSet pageSet = new PageSetImpl(Collections.singletonList(v1), null); - - EasyMock.>expect(blobStore.list(containerName, options)).andReturn(pageSet).once(); + + EasyMock.> expect(blobStore.list(containerName, options)).andReturn(pageSet) + .once(); EasyMock.replay(blobStore); - + Iterable iterable = BlobStores.listAll(blobStore, containerName, options); assertEquals(ImmutableList.copyOf(iterable), ImmutableList.of(v1)); } - + @Test public void testListAllWhenTwoPages() throws Exception { BlobStore blobStore = createMock(BlobStore.class); @@ -140,11 +146,13 @@ public class BlobStoresTest { StorageMetadata v2 = createMock(StorageMetadata.class); PageSet pageSet = new PageSetImpl(Collections.singletonList(v1), "marker1"); PageSet pageSet2 = new PageSetImpl(Collections.singletonList(v2), null); - - EasyMock.>expect(blobStore.list(containerName, options)).andReturn(pageSet).once(); - EasyMock.>expect(blobStore.list(containerName, options2)).andReturn(pageSet2).once(); + + EasyMock.> expect(blobStore.list(containerName, options)).andReturn(pageSet) + .once(); + EasyMock.> expect(blobStore.list(containerName, options2)).andReturn(pageSet2) + .once(); EasyMock.replay(blobStore); - + Iterable iterable = BlobStores.listAll(blobStore, containerName, options); assertEquals(ImmutableList.copyOf(iterable), ImmutableList.of(v1, v2)); }