Repository: jclouds-labs-google
Updated Branches:
  refs/heads/master a9ea2adfd -> 7427ba238


http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiExpectTest.java
index 0e1a2f8..1a4f127 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiExpectTest.java
@@ -19,8 +19,8 @@ package org.jclouds.googlecomputeengine.features;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
 
 import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Operation;
@@ -120,8 +120,7 @@ public class RegionOperationApiExpectTest extends 
BaseGoogleComputeEngineApiExpe
       RegionOperationApi regionOperationApi = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, get, 
operationResponse).getRegionOperationApi("myproject");
 
-      
assertEquals(regionOperationApi.listFirstPageInRegion("us-central1").toString(),
-              expectedList().toString());
+      
assertEquals(regionOperationApi.listInRegion("us-central1").next().toString(), 
expectedList().toString());
    }
 
    public void testListOperationWithPaginationOptionsResponseIs2xx() {
@@ -162,6 +161,6 @@ public class RegionOperationApiExpectTest extends 
BaseGoogleComputeEngineApiExpe
       RegionOperationApi regionOperationApi = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, get, 
operationResponse).getRegionOperationApi("myproject");
 
-      
assertTrue(regionOperationApi.listInRegion("us-central1").concat().isEmpty());
+      assertFalse(regionOperationApi.listInRegion("us-central1").hasNext());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiLiveTest.java
index 4031254..66c1041 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RegionOperationApiLiveTest.java
@@ -19,71 +19,48 @@ package org.jclouds.googlecomputeengine.features;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.Iterator;
 
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Operation;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.testng.SkipException;
 import org.testng.annotations.Test;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
+@Test(groups = "live", testName = "RegionOperationApiLiveTest")
 public class RegionOperationApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
 
-   private static final String ADDRESS_NAME = 
"region-operations-api-live-test-address";
-   private Operation addOperation;
-   private Operation deleteOperation;
+   private Operation operation;
 
    private RegionOperationApi api() {
       return api.getRegionOperationApi(userProject.get());
    }
 
-   private AddressApi addressApi() {
-      return api.getAddressApi(userProject.get());
-   }
-
-   @Test(groups = "live")
-   public void testCreateOperations() {
-      //insert some operations by adding and deleting metadata items
-      // this will make sure there is stuff to listFirstPage
-      addOperation = 
assertRegionOperationDoneSucessfully(addressApi().createInRegion(DEFAULT_REGION_NAME,
-              ADDRESS_NAME), 20);
-      deleteOperation = 
assertRegionOperationDoneSucessfully(addressApi().deleteInRegion(DEFAULT_REGION_NAME,
-              ADDRESS_NAME), 20);
-
-      assertNotNull(addOperation);
-      assertNotNull(deleteOperation);
-   }
-
-   @Test(groups = "live", dependsOnMethods = "testCreateOperations")
-   public void testGetOperation() {
-      Operation operation = api().getInRegion(DEFAULT_REGION_NAME, 
addOperation.name());
-      assertNotNull(operation);
-      assertOperationEquals(operation, this.addOperation);
-   }
-
-   @Test(groups = "live", dependsOnMethods = "testCreateOperations")
    public void testListOperationsWithFiltersAndPagination() {
-      PagedIterable<Operation> operations = 
api().listInRegion(DEFAULT_REGION_NAME, new ListOptions.Builder()
-//              .filter("operationType eq insert")
-              .maxResults(1));
+      Iterator<ListPage<Operation>> operations = 
api().listInRegion(DEFAULT_REGION_NAME, new ListOptions.Builder()
+            //              .filter("operationType eq insert")
+            .maxResults(1));
 
       // make sure that in spite of having only one result per page we get at 
least two results
-      final AtomicInteger counter = new AtomicInteger();
-      operations.firstMatch(new Predicate<IterableWithMarker<Operation>>() {
-         @Override public boolean apply(IterableWithMarker<Operation> input) {
-            counter.addAndGet(Iterables.size(input));
-            return counter.get() == 2;
+      int count = 0;
+      for (; count < 2 && operations.hasNext(); ) {
+         ListPage<Operation> result = operations.next();
+         if (result.isEmpty()) {
+            operation = result.get(0);
+            count++;
          }
-      });
+      }
+      if (count < 2) {
+         throw new SkipException("Not enough operations in " + 
DEFAULT_REGION_NAME);
+      }
+      assertEquals(count, 2);
    }
 
-   private void assertOperationEquals(Operation result, Operation expected) {
-      assertEquals(result.name(), expected.name());
+   @Test(groups = "live", dependsOnMethods = 
"testListOperationsWithFiltersAndPagination")
+   public void testGetOperation() {
+      Operation result = api().getInRegion(DEFAULT_REGION_NAME, 
operation.name());
+      assertNotNull(result);
+      assertEquals(result.name(), operation.name()); // Checking state besides 
name can lead to flaky test.
    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiExpectTest.java
index c1a34f0..b835bb8 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiExpectTest.java
@@ -19,7 +19,7 @@ package org.jclouds.googlecomputeengine.features;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertFalse;
 import static org.testng.AssertJUnit.assertNull;
 
 import java.net.URI;
@@ -148,8 +148,7 @@ public class RouteApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       RouteApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, list, 
operationResponse).getRouteApi("myproject");
 
-      assertEquals(api.listFirstPage().toString(),
-              new ParseRouteListTest().expected().toString());
+      assertEquals(api.list().next().toString(), new 
ParseRouteListTest().expected().toString());
    }
 
    public void testListRoutesResponseIs4xx() {
@@ -165,6 +164,6 @@ public class RouteApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       RouteApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, list, 
operationResponse).getRouteApi("myproject");
 
-      assertTrue(api.list().concat().isEmpty());
+      assertFalse(api.list().hasNext());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiLiveTest.java
index 1e45789..2cbaf64 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/RouteApiLiveTest.java
@@ -19,18 +19,16 @@ package org.jclouds.googlecomputeengine.features;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
+import java.util.Iterator;
 import java.util.List;
 
-import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Route;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.googlecomputeengine.options.RouteOptions;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
 @Test(groups = "live", testName = "RouteApiLiveTest")
 public class RouteApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
 
@@ -70,15 +68,14 @@ public class RouteApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    @Test(groups = "live", dependsOnMethods = "testGetRoute")
    public void testListRoute() {
 
-      PagedIterable<Route> routes = api().list(new ListOptions()
+      Iterator<ListPage<Route>> routes = api().list(new ListOptions()
               .filter("name eq " + ROUTE_NAME));
 
-      List<Route> routesAsList = Lists.newArrayList(routes.concat());
+      List<Route> routesAsList = routes.next();
 
       assertEquals(routesAsList.size(), 1);
 
-      assertRouteEquals(Iterables.getOnlyElement(routesAsList));
-
+      assertRouteEquals(routesAsList.get(0));
    }
 
    @Test(groups = "live", dependsOnMethods = "testListRoute")

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiExpectTest.java
index 4a44ba2..efd77b7 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiExpectTest.java
@@ -18,8 +18,8 @@ package org.jclouds.googlecomputeengine.features;
 
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
 
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
 import org.jclouds.googlecomputeengine.parse.ParseSnapshotListTest;
@@ -78,8 +78,7 @@ public class SnapshotApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest
       SnapshotApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, LIST_SNAPSHOTS_REQ, 
LIST_SNAPSHOTS_RESPONSE).getSnapshotApi("myproject");
 
-      assertEquals(api.listFirstPage().toString(),
-              new ParseSnapshotListTest().expected().toString());
+      assertEquals(api.list().next().toString(), new 
ParseSnapshotListTest().expected().toString());
    }
 
    public void testListSnapshotWithPaginationOptionsResponseIs4xx() {
@@ -89,6 +88,6 @@ public class SnapshotApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest
       SnapshotApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, LIST_SNAPSHOTS_REQ, 
operationResponse).getSnapshotApi("myproject");
 
-      assertTrue(api.list().concat().isEmpty());
+      assertFalse(api.list().hasNext());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiLiveTest.java
index c8e3d9b..f38a7ea 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/SnapshotApiLiveTest.java
@@ -19,18 +19,16 @@ package org.jclouds.googlecomputeengine.features;
 import static 
org.jclouds.googlecomputeengine.features.DiskApiLiveTest.TIME_WAIT;
 import static org.testng.Assert.assertEquals;
 
+import java.util.Iterator;
 import java.util.List;
 
-import org.jclouds.collect.PagedIterable;
 import org.jclouds.googlecomputeengine.domain.Disk;
+import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Snapshot;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
 public class SnapshotApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
 
    private static final String DISK_NAME = "snapshot-api-live-test-disk";
@@ -47,11 +45,11 @@ public class SnapshotApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
 
    @Test(groups = "live")
    public void testCreateSnapshot() {
-      assertZoneOperationDoneSucessfully(diskApi().createInZone(DISK_NAME, 1, 
DEFAULT_ZONE_NAME), TIME_WAIT);
+      assertZoneOperationDoneSuccessfully(diskApi().createInZone(DISK_NAME, 1, 
DEFAULT_ZONE_NAME), TIME_WAIT);
       disk = diskApi().getInZone(DEFAULT_ZONE_NAME, DISK_NAME);
 
-      
assertZoneOperationDoneSucessfully(diskApi().createSnapshotInZone(DEFAULT_ZONE_NAME,
 DISK_NAME, SNAPSHOT_NAME),
-              TIME_WAIT);
+      
assertZoneOperationDoneSuccessfully(diskApi().createSnapshotInZone(DEFAULT_ZONE_NAME,
 DISK_NAME, SNAPSHOT_NAME),
+            TIME_WAIT);
    }
 
    @Test(groups = "live", dependsOnMethods = "testCreateSnapshot")
@@ -65,20 +63,20 @@ public class SnapshotApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    @Test(groups = "live", dependsOnMethods = "testGetSnapshot")
    public void testListSnapshot() {
 
-      PagedIterable<Snapshot> snapshots = api().list(new ListOptions.Builder()
+      Iterator<ListPage<Snapshot>> snapshots = api().list(new 
ListOptions.Builder()
               .filter("name eq " + SNAPSHOT_NAME));
 
-      List<Snapshot> snapshotsAsList = Lists.newArrayList(snapshots.concat());
+      List<Snapshot> snapshotsAsList = snapshots.next();
 
       assertEquals(snapshotsAsList.size(), 1);
 
-      assertSnapshotEquals(Iterables.getOnlyElement(snapshotsAsList));
+      assertSnapshotEquals(snapshotsAsList.get(0));
    }
 
    @Test(groups = "live", dependsOnMethods = "testListSnapshot")
    public void testDeleteDisk() {
 
-      
assertZoneOperationDoneSucessfully(diskApi().deleteInZone(DEFAULT_ZONE_NAME, 
DISK_NAME), TIME_WAIT);
+      
assertZoneOperationDoneSuccessfully(diskApi().deleteInZone(DEFAULT_ZONE_NAME, 
DISK_NAME), TIME_WAIT);
       assertGlobalOperationDoneSucessfully(api().delete(SNAPSHOT_NAME), 
TIME_WAIT);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
index aa8aad7..631ca4a 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiExpectTest.java
@@ -19,7 +19,7 @@ package org.jclouds.googlecomputeengine.features;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertFalse;
 import static org.testng.AssertJUnit.assertNull;
 
 import java.net.URI;
@@ -171,7 +171,7 @@ public class TargetPoolApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTes
       TargetPoolApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, list, 
operationResponse).getTargetPoolApi("myproject", "us-central1");
 
-      assertTrue(api.list().concat().isEmpty());
+      assertFalse(api.list().hasNext());
    }
 
    public void testAddInstanceResponseIs2xx() throws Exception {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiLiveTest.java
index 124d062..172a153 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/TargetPoolApiLiveTest.java
@@ -40,6 +40,7 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Predicate;
+import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 
 public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
@@ -72,10 +73,10 @@ public class TargetPoolApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
       InstanceApi instanceApi = api.getInstanceApi(userProject.get());
       HttpHealthCheckApi httpHealthCheckApi = 
api.getHttpHealthCheckApi(userProject.get());
 
+      ListPage<Image> list = api.getImageApi("centos-cloud").list(new 
ListOptions.Builder().filter("name eq centos.*"))
+            .next();
       // Get an imageUri
-      URI imageUri = api.getImageApi("centos-cloud")
-            .list(new ListOptions.Builder().filter("name eq centos.*"))
-            .concat()
+      URI imageUri = FluentIterable.from(list)
             .filter(new Predicate<Image>() {
                @Override
                public boolean apply(Image input) {
@@ -103,15 +104,13 @@ public class TargetPoolApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
 
       // Create a disk.
       DiskCreationOptions diskCreationOptions = new 
DiskCreationOptions().sourceImage(instanceTemplate.image());
-      assertZoneOperationDoneSucessfully(api.getDiskApi(userProject.get())
-                                        .createInZone(BOOT_DISK_NAME, 
DEFAULT_DISK_SIZE_GB, DEFAULT_ZONE_NAME, diskCreationOptions),
-                                        TIME_WAIT_LONG);
+      assertZoneOperationDoneSuccessfully(api.getDiskApi(userProject.get())
+                  .createInZone(BOOT_DISK_NAME, DEFAULT_DISK_SIZE_GB, 
DEFAULT_ZONE_NAME, diskCreationOptions),
+            TIME_WAIT_LONG);
 
       // Create an instance.
-      
assertZoneOperationDoneSucessfully(instanceApi.createInZone(INSTANCE_NAME,
-                                                                  
DEFAULT_ZONE_NAME,
-                                                                  
instanceTemplate),
-                                                                  
TIME_WAIT_LONG);
+      
assertZoneOperationDoneSuccessfully(instanceApi.createInZone(INSTANCE_NAME, 
DEFAULT_ZONE_NAME, instanceTemplate),
+            TIME_WAIT_LONG);
       Instance instance = instanceApi.getInZone(DEFAULT_ZONE_NAME, 
INSTANCE_NAME);
       instances = new ArrayList<URI>();
       instances.add(instance.selfLink());

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiExpectTest.java
index 4091678..1fa2db9 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiExpectTest.java
@@ -18,8 +18,8 @@ package org.jclouds.googlecomputeengine.features;
 
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
 
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
 import org.jclouds.googlecomputeengine.parse.ParseZoneListTest;
@@ -81,8 +81,7 @@ public class ZoneApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       ZoneApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, LIST_ZONES_REQ, 
LIST_ZONES_RESPONSE).getZoneApi("myproject");
 
-      assertEquals(api.listFirstPage().toString(),
-              new ParseZoneListTest().expected().toString());
+      assertEquals(api.list().next().toString(), new 
ParseZoneListTest().expected().toString());
    }
 
    public void testListZoneWithPaginationOptionsResponseIs4xx() {
@@ -92,6 +91,6 @@ public class ZoneApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       ZoneApi api = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, LIST_ZONES_REQ, 
operationResponse).getZoneApi("myproject");
 
-      assertTrue(api.list().concat().isEmpty());
+      assertFalse(api.list().hasNext());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiLiveTest.java
index fb7d0ee..f4c885e 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneApiLiveTest.java
@@ -18,21 +18,17 @@ package org.jclouds.googlecomputeengine.features;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertSame;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Iterator;
 import java.util.List;
 
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Zone;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Iterables;
-
 public class ZoneApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
 
    private Zone zone;
@@ -44,18 +40,14 @@ public class ZoneApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    @Test(groups = "live")
    public void testListZone() {
 
-      PagedIterable<Zone> zones = api().list(new ListOptions.Builder()
-              .maxResults(1));
-
-      Iterator<IterableWithMarker<Zone>> pageIterator = zones.iterator();
+      Iterator<ListPage<Zone>> pageIterator = api().list(new 
ListOptions.Builder().maxResults(1));
       assertTrue(pageIterator.hasNext());
 
-      IterableWithMarker<Zone> singlePageIterator = pageIterator.next();
-      List<Zone> zoneAsList = singlePageIterator.toList();
+      List<Zone> zoneAsList = pageIterator.next();
 
-      assertSame(zoneAsList.size(), 1);
+      assertEquals(zoneAsList.size(), 1);
 
-      this.zone = Iterables.getOnlyElement(zoneAsList);
+      this.zone = zoneAsList.get(0);
    }
 
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiExpectTest.java
index 4be46c3..4d542ce 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiExpectTest.java
@@ -19,8 +19,8 @@ package org.jclouds.googlecomputeengine.features;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
 
 import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Operation;
@@ -118,7 +118,7 @@ public class ZoneOperationApiExpectTest extends 
BaseGoogleComputeEngineApiExpect
       ZoneOperationApi zoneOperationApi = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, get, 
operationResponse).getZoneOperationApi("myproject");
 
-      
assertEquals(zoneOperationApi.listFirstPageInZone("us-central1-a").toString(),
+      
assertEquals(zoneOperationApi.listInZone("us-central1-a").next().toString(),
               expectedList().toString());
    }
 
@@ -158,9 +158,8 @@ public class ZoneOperationApiExpectTest extends 
BaseGoogleComputeEngineApiExpect
 
       HttpResponse operationResponse = 
HttpResponse.builder().statusCode(404).build();
 
-      ZoneOperationApi zoneOperationApi = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, get, 
operationResponse).getZoneOperationApi("myproject");
+      ZoneOperationApi zoneOperationApi = 
requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE), TOKEN_RESPONSE, 
get, operationResponse).getZoneOperationApi("myproject");
 
-      
assertTrue(zoneOperationApi.listInZone("us-central1-a").concat().isEmpty());
+      assertFalse(zoneOperationApi.listInZone("us-central1-a").hasNext());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiLiveTest.java
index 542bbf3..aafea3d 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/ZoneOperationApiLiveTest.java
@@ -16,73 +16,51 @@
  */
 package org.jclouds.googlecomputeengine.features;
 
-import static 
org.jclouds.googlecomputeengine.features.DiskApiLiveTest.TIME_WAIT;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.Iterator;
 
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.domain.Operation;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.testng.SkipException;
 import org.testng.annotations.Test;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
+@Test(groups = "live", testName = "ZoneOperationApiLiveTest")
 public class ZoneOperationApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
 
-   private static final String DISK_NAME = 
"zone-operations-api-live-test-disk";
-   private Operation addOperation;
-   private Operation deleteOperation;
+   private Operation operation;
 
    private ZoneOperationApi api() {
       return api.getZoneOperationApi(userProject.get());
    }
 
-   private DiskApi diskApi() {
-      return api.getDiskApi(userProject.get());
-   }
-
-   @Test(groups = "live")
-   public void testCreateOperations() {
-      //insert some operations by creating and deleting a disk
-      // this will make sure there is stuff to listFirstPage
-      addOperation = 
assertZoneOperationDoneSucessfully(diskApi().createInZone(DISK_NAME, 1, 
DEFAULT_ZONE_NAME), TIME_WAIT);
-      deleteOperation = 
assertZoneOperationDoneSucessfully(diskApi().deleteInZone(DEFAULT_ZONE_NAME, 
DISK_NAME), TIME_WAIT);
-
-      assertNotNull(addOperation);
-      assertNotNull(deleteOperation);
-   }
-
-   @Test(groups = "live", dependsOnMethods = "testCreateOperations")
-   public void testGetOperation() {
-      Operation operation = api().getInZone(DEFAULT_ZONE_NAME, 
addOperation.name());
-      assertNotNull(operation);
-      assertOperationEquals(operation, this.addOperation);
-   }
-
-   @Test(groups = "live", dependsOnMethods = "testCreateOperations")
    public void testListOperationsWithFiltersAndPagination() {
-      PagedIterable<Operation> operations = 
api().listInZone(DEFAULT_ZONE_NAME, new ListOptions.Builder()
+      Iterator<ListPage<Operation>> operations = 
api().listInZone(DEFAULT_ZONE_NAME, new ListOptions.Builder()
 //              .filter("operationType eq insert")
               .maxResults(1));
 
       // make sure that in spite of having only one result per page we get at 
least two results
-      final AtomicInteger counter = new AtomicInteger();
-      operations.firstMatch(new Predicate<IterableWithMarker<Operation>>() {
-         @Override public boolean apply(IterableWithMarker<Operation> input) {
-            counter.addAndGet(Iterables.size(input));
-            return counter.get() == 2;
+      int count = 0;
+      for (; count < 2 && operations.hasNext(); ) {
+         ListPage<Operation> result = operations.next();
+         if (result.isEmpty()) {
+            operation = result.get(0);
+            count++;
          }
-      });
+      }
+      if (count < 2) {
+         throw new SkipException("Not enough operations in " + 
DEFAULT_ZONE_NAME);
+      }
+      assertEquals(count, 2);
    }
 
-   private void assertOperationEquals(Operation result, Operation expected) {
-      assertEquals(result.name(), expected.name());
+   @Test(groups = "live", dependsOnMethods = 
"testListOperationsWithFiltersAndPagination")
+   public void testGetOperation() {
+      Operation result = api().getInZone(DEFAULT_ZONE_NAME, operation.name());
+      assertNotNull(result);
+      assertEquals(result.name(), operation.name()); // Checking state besides 
name can lead to flaky test.
    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/7427ba23/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiLiveTest.java
index c5780b1..1a19bcf 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiLiveTest.java
@@ -30,6 +30,7 @@ import org.jclouds.apis.BaseApiLiveTest;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
 import org.jclouds.googlecomputeengine.config.UserProject;
 import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.javax.annotation.Nullable;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
@@ -48,7 +49,6 @@ public class BaseGoogleComputeEngineApiLiveTest extends 
BaseApiLiveTest<GoogleCo
    protected static final String DEFAULT_ZONE_NAME = "us-central1-a";
    protected static final String DEFAULT_REGION_NAME = "us-central1";
    protected static final String NETWORK_API_URL_SUFFIX = "/global/networks/";
-   protected static final String DEFAULT_NETWORK_NAME = "live-test-network";
    protected static final String MACHINE_TYPE_API_URL_SUFFIX = 
"/machineTypes/";
    protected static final String DEFAULT_MACHINE_TYPE_NAME = "n1-standard-1";
    protected static final String GATEWAY_API_URL_SUFFIX = "/global/gateways/";
@@ -85,37 +85,30 @@ public class BaseGoogleComputeEngineApiLiveTest extends 
BaseApiLiveTest<GoogleCo
       return injector.getInstance(GoogleComputeEngineApi.class);
    }
 
-   protected Operation assertGlobalOperationDoneSucessfully(Operation 
operation, long maxWaitSeconds) {
-      operation = waitGlobalOperationDone(operation, maxWaitSeconds);
+   protected void assertGlobalOperationDoneSucessfully(Operation operation, 
long maxWaitSeconds) {
+      operation = waitOperationDone(globalOperationDonePredicate, operation, 
maxWaitSeconds);
       assertEquals(operation.status(), Operation.Status.DONE);
       assertTrue(operation.errors().isEmpty());
-      return operation;
    }
 
-   protected Operation waitGlobalOperationDone(Operation operation, long 
maxWaitSeconds) {
-      return waitOperationDone(globalOperationDonePredicate, operation, 
maxWaitSeconds);
+   protected void waitGlobalOperationDone(Operation operation, long 
maxWaitSeconds) {
+      waitOperationDone(globalOperationDonePredicate, operation, 
maxWaitSeconds);
    }
 
-   protected Operation assertRegionOperationDoneSucessfully(Operation 
operation, long maxWaitSeconds) {
-      operation = waitRegionOperationDone(operation, maxWaitSeconds);
+   protected void assertRegionOperationDoneSucessfully(Operation operation, 
long maxWaitSeconds) {
+      operation = waitOperationDone(regionOperationDonePredicate, operation, 
maxWaitSeconds);
       assertEquals(operation.status(), Operation.Status.DONE);
       assertTrue(operation.errors().isEmpty());
-      return operation;
    }
 
-   protected Operation waitRegionOperationDone(Operation operation, long 
maxWaitSeconds) {
-      return waitOperationDone(regionOperationDonePredicate, operation, 
maxWaitSeconds);
-   }
-
-   protected Operation assertZoneOperationDoneSucessfully(Operation operation, 
long maxWaitSeconds) {
-      operation = waitZoneOperationDone(operation, maxWaitSeconds);
+   protected void assertZoneOperationDoneSuccessfully(@Nullable Operation 
operation, long maxWaitSeconds) {
+      operation = waitOperationDone(zoneOperationDonePredicate, operation, 
maxWaitSeconds);
       assertEquals(operation.status(), Operation.Status.DONE);
       assertTrue(operation.errors().isEmpty());
-      return operation;
    }
 
-   protected Operation waitZoneOperationDone(Operation operation, long 
maxWaitSeconds) {
-      return waitOperationDone(zoneOperationDonePredicate, operation, 
maxWaitSeconds);
+   protected void waitZoneOperationDone(@Nullable Operation operation, long 
maxWaitSeconds) {
+      waitOperationDone(zoneOperationDonePredicate, operation, maxWaitSeconds);
    }
 
    protected URI getDiskTypeUrl(String project, String zone, String diskType){
@@ -130,10 +123,6 @@ public class BaseGoogleComputeEngineApiLiveTest extends 
BaseApiLiveTest<GoogleCo
       return URI.create(API_URL_PREFIX + project + ZONE_API_URL_SUFFIX + zone);
    }
 
-   protected URI getDefaultNetworkUrl(String project) {
-      return getNetworkUrl(project, DEFAULT_NETWORK_NAME);
-   }
-
    protected URI getNetworkUrl(String project, String network) {
       return URI.create(API_URL_PREFIX + project + NETWORK_API_URL_SUFFIX + 
network);
    }
@@ -156,12 +145,14 @@ public class BaseGoogleComputeEngineApiLiveTest extends 
BaseApiLiveTest<GoogleCo
    }
 
    protected URI getDiskUrl(String project, String diskName) {
-      return URI.create(API_URL_PREFIX + project + ZONE_API_URL_SUFFIX
-              + DEFAULT_ZONE_NAME + "/disks/" + diskName);
+      return URI.create(API_URL_PREFIX + project + ZONE_API_URL_SUFFIX + 
DEFAULT_ZONE_NAME + "/disks/" + diskName);
    }
 
-   protected static Operation 
waitOperationDone(Predicate<AtomicReference<Operation>> operationDonePredicate,
-                                                Operation operation, long 
maxWaitSeconds) {
+   private static Operation 
waitOperationDone(Predicate<AtomicReference<Operation>> operationDonePredicate,
+                                              @Nullable Operation operation, 
long maxWaitSeconds) {
+      if (operation == null) { // Null can mean a delete op didn't need to 
occur.
+         return null;
+      }
       AtomicReference<Operation> operationReference = 
Atomics.newReference(operation);
       retry(operationDonePredicate, maxWaitSeconds, 1, 
SECONDS).apply(operationReference);
       return operationReference.get();

Reply via email to