You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/11/07 17:08:02 UTC

[2/5] jclouds-labs-google git commit: Consolidate operation state management.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/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 1a19bcf..07ac7e0 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
@@ -16,15 +16,16 @@
  */
 package org.jclouds.googlecomputeengine.internal;
 
-import static java.util.concurrent.TimeUnit.SECONDS;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
 import static org.jclouds.oauth.v2.OAuthTestUtils.setCredential;
-import static org.jclouds.util.Predicates2.retry;
 import static org.testng.Assert.assertEquals;
 import static org.testng.AssertJUnit.assertTrue;
 
 import java.net.URI;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.logging.Logger;
 
 import org.jclouds.apis.BaseApiLiveTest;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
@@ -39,7 +40,6 @@ import com.google.inject.Injector;
 import com.google.inject.Key;
 import com.google.inject.Module;
 import com.google.inject.TypeLiteral;
-import com.google.inject.name.Names;
 
 
 public class BaseGoogleComputeEngineApiLiveTest extends BaseApiLiveTest<GoogleComputeEngineApi> {
@@ -57,9 +57,7 @@ public class BaseGoogleComputeEngineApiLiveTest extends BaseApiLiveTest<GoogleCo
    protected static final String DISK_TYPE_API_URL_SUFFIX = "/diskTypes/";
 
    protected Supplier<String> userProject;
-   protected Predicate<AtomicReference<Operation>> globalOperationDonePredicate;
-   protected Predicate<AtomicReference<Operation>> regionOperationDonePredicate;
-   protected Predicate<AtomicReference<Operation>> zoneOperationDonePredicate;
+   protected Predicate<AtomicReference<Operation>> operationDone;
 
    public BaseGoogleComputeEngineApiLiveTest() {
       provider = "google-compute-engine";
@@ -76,39 +74,25 @@ public class BaseGoogleComputeEngineApiLiveTest extends BaseApiLiveTest<GoogleCo
       Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();
       userProject = injector.getInstance(Key.get(new TypeLiteral<Supplier<String>>() {
       }, UserProject.class));
-      globalOperationDonePredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<AtomicReference<Operation>>>() {
-      }, Names.named("global")));
-      regionOperationDonePredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<AtomicReference<Operation>>>() {
-      }, Names.named("region")));
-      zoneOperationDonePredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<AtomicReference<Operation>>>() {
-      }, Names.named("zone")));
+      operationDone = injector.getInstance(Key.get(new TypeLiteral<Predicate<AtomicReference<Operation>>>() {
+      }));
       return injector.getInstance(GoogleComputeEngineApi.class);
    }
 
-   protected void assertGlobalOperationDoneSucessfully(Operation operation, long maxWaitSeconds) {
-      operation = waitOperationDone(globalOperationDonePredicate, operation, maxWaitSeconds);
-      assertEquals(operation.status(), Operation.Status.DONE);
-      assertTrue(operation.errors().isEmpty());
+   protected void assertOperationDoneSuccessfully(Operation operation) {
+      AtomicReference<Operation> ref = Atomics.newReference(checkNotNull(operation, "operation"));
+      checkState(operationDone.apply(ref), "Timeout waiting for operation: %s", operation);
+      assertEquals(ref.get().status(), Operation.Status.DONE);
+      assertTrue(ref.get().errors().isEmpty());
    }
 
-   protected void waitGlobalOperationDone(Operation operation, long maxWaitSeconds) {
-      waitOperationDone(globalOperationDonePredicate, operation, maxWaitSeconds);
-   }
-
-   protected void assertRegionOperationDoneSucessfully(Operation operation, long maxWaitSeconds) {
-      operation = waitOperationDone(regionOperationDonePredicate, operation, maxWaitSeconds);
-      assertEquals(operation.status(), Operation.Status.DONE);
-      assertTrue(operation.errors().isEmpty());
-   }
-
-   protected void assertZoneOperationDoneSuccessfully(@Nullable Operation operation, long maxWaitSeconds) {
-      operation = waitOperationDone(zoneOperationDonePredicate, operation, maxWaitSeconds);
-      assertEquals(operation.status(), Operation.Status.DONE);
-      assertTrue(operation.errors().isEmpty());
-   }
-
-   protected void waitZoneOperationDone(@Nullable Operation operation, long maxWaitSeconds) {
-      waitOperationDone(zoneOperationDonePredicate, operation, maxWaitSeconds);
+   protected void waitOperationDone(@Nullable Operation operation) {
+      if (operation == null) {
+         return;
+      }
+      if (!operationDone.apply(Atomics.newReference(operation))) {
+         Logger.getAnonymousLogger().warning("Timeout waiting for operation: " + operation);
+      }
    }
 
    protected URI getDiskTypeUrl(String project, String zone, String diskType){
@@ -147,15 +131,5 @@ 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);
    }
-
-   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();
-   }
 }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
index 75a1d92..4b85a01 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
@@ -41,7 +41,7 @@ public class ParseOperationTest extends BaseGoogleComputeEngineParseTest<Operati
             URI.create(BASE_URL + "/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb"),
             "operation-1354084865060-4cf88735faeb8-bbbb12cb", // name
             null, // description
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/instance-api-live-test-instance"), // targetLink
+            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/test-1"), // targetLink
             "13053094017547040099", // targetId
             null, // clientOperationId
             Operation.Status.DONE, // status

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneOperationTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneOperationTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneOperationTest.java
index 0e5418d..8c2e006 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneOperationTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneOperationTest.java
@@ -41,7 +41,7 @@ public class ParseZoneOperationTest extends BaseGoogleComputeEngineParseTest<Ope
             URI.create(BASE_URL + "/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb"),
             "operation-1354084865060-4cf88735faeb8-bbbb12cb", // name
             null, // description
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/instance-api-live-test-instance"),
+            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/test-1"),
             "13053094017547040099", // targetId
             null, // clientOperationId
             Operation.Status.DONE, // status

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
index f01bdab..52e09d1 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
@@ -17,11 +17,11 @@
 package org.jclouds.googlecomputeengine.predicates;
 
 import static org.jclouds.googlecomputeengine.compute.functions.FirewallToIpPermissionTest.fwForTest;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.equalsIpPermission;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasPortRange;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasSourceRange;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasSourceTag;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.providesIpPermission;
+import static org.jclouds.googlecomputeengine.compute.predicates.NetworkFirewallPredicates.equalsIpPermission;
+import static org.jclouds.googlecomputeengine.compute.predicates.NetworkFirewallPredicates.hasPortRange;
+import static org.jclouds.googlecomputeengine.compute.predicates.NetworkFirewallPredicates.hasSourceRange;
+import static org.jclouds.googlecomputeengine.compute.predicates.NetworkFirewallPredicates.hasSourceTag;
+import static org.jclouds.googlecomputeengine.compute.predicates.NetworkFirewallPredicates.providesIpPermission;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/operation.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/operation.json b/google-compute-engine/src/test/resources/operation.json
index 7ca83c8..421fb2f 100644
--- a/google-compute-engine/src/test/resources/operation.json
+++ b/google-compute-engine/src/test/resources/operation.json
@@ -3,7 +3,7 @@
    "id": "13053095055850848306",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
    "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
    "targetId": "13053094017547040099",
    "status": "DONE",
    "user": "user@developer.gserviceaccount.com",

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/operation_error.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/operation_error.json b/google-compute-engine/src/test/resources/operation_error.json
index 157f786..f72e18c 100644
--- a/google-compute-engine/src/test/resources/operation_error.json
+++ b/google-compute-engine/src/test/resources/operation_error.json
@@ -3,7 +3,7 @@
    "id": "13053095055850848306",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
    "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
    "targetId": "13053094017547040099",
    "status": "DONE",
    "user": "user@developer.gserviceaccount.com",
@@ -16,7 +16,7 @@
       "errors": [
          {
             "code": "RESOURCE_ALREADY_EXISTS",
-            "message": "The resource 'projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance' already exists"
+            "message": "The resource 'projects/myproject/zones/us-central1-a/instances/test-1' already exists"
          }
       ]
    },

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/operation_list.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/operation_list.json b/google-compute-engine/src/test/resources/operation_list.json
index c83980d..fd30768 100644
--- a/google-compute-engine/src/test/resources/operation_list.json
+++ b/google-compute-engine/src/test/resources/operation_list.json
@@ -8,7 +8,7 @@
          "id": "13053095055850848306",
          "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
          "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-         "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+         "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
          "targetId": "13053094017547040099",
          "status": "DONE",
          "user": "user@developer.gserviceaccount.com",

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/zone_operation.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/zone_operation.json b/google-compute-engine/src/test/resources/zone_operation.json
index c0c5b56..d942086 100644
--- a/google-compute-engine/src/test/resources/zone_operation.json
+++ b/google-compute-engine/src/test/resources/zone_operation.json
@@ -3,7 +3,7 @@
    "id": "13053095055850848306",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
    "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
    "targetId": "13053094017547040099",
    "status": "DONE",
    "user": "user@developer.gserviceaccount.com",

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/zone_operation_error.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/zone_operation_error.json b/google-compute-engine/src/test/resources/zone_operation_error.json
index d6d054a..a0e6464 100644
--- a/google-compute-engine/src/test/resources/zone_operation_error.json
+++ b/google-compute-engine/src/test/resources/zone_operation_error.json
@@ -3,7 +3,7 @@
    "id": "13053095055850848306",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
    "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+   "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
    "targetId": "13053094017547040099",
    "status": "DONE",
    "user": "user@developer.gserviceaccount.com",
@@ -16,7 +16,7 @@
       "errors": [
          {
             "code": "RESOURCE_ALREADY_EXISTS",
-            "message": "The resource 'projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance' already exists"
+            "message": "The resource 'projects/myproject/zones/us-central1-a/instances/test-1' already exists"
          }
       ]
    },

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8895953d/google-compute-engine/src/test/resources/zone_operation_list.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/zone_operation_list.json b/google-compute-engine/src/test/resources/zone_operation_list.json
index 77f1656..212c755 100644
--- a/google-compute-engine/src/test/resources/zone_operation_list.json
+++ b/google-compute-engine/src/test/resources/zone_operation_list.json
@@ -8,7 +8,7 @@
          "id": "13053095055850848306",
          "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb",
          "name": "operation-1354084865060-4cf88735faeb8-bbbb12cb",
-         "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/instance-api-live-test-instance",
+         "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-1",
          "targetId": "13053094017547040099",
          "status": "DONE",
          "user": "user@developer.gserviceaccount.com",