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/09 19:17:02 UTC

[3/8] jclouds-labs-google git commit: * Rewrites InstanceTemplate as NewInstance, strictly from docs. * Rewrites Metadata to have the same shape as in json, avoid really complicated json parser. * Rewrites GoogleComputeEngineServiceAdapter.createNodeW

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/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 147e114..5f92f2f 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
@@ -27,7 +27,8 @@ import java.util.List;
 
 import javax.ws.rs.core.MediaType;
 
-import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
 import org.jclouds.googlecomputeengine.options.ListOptions;
 import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions;
 import org.jclouds.googlecomputeengine.parse.ParseRegionOperationTest;
@@ -41,21 +42,21 @@ import org.testng.annotations.Test;
 import com.google.common.collect.ImmutableList;
 
 @Test(groups = "unit", testName = "TargetPoolApiExpectTest")
-public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
+public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleComputeEngineApi> {
 
    private static final List<URI> INSTANCES = ImmutableList
-         .of(URI.create(BASE_URL + "/myproject/zones/europe-west1-a/instances/test"));
+         .of(URI.create(BASE_URL + "/party/zones/europe-west1-a/instances/test"));
 
    private static final List<URI> HEALTH_CHECKS = ImmutableList
-         .of(URI.create(BASE_URL + "/myproject/global/httpHealthChecks/health-check-1"));
+         .of(URI.create(BASE_URL + "/party/global/httpHealthChecks/health-check-1"));
    
-   private static final URI TARGET_POOL = URI.create(BASE_URL + "/myproject/regions/us-central1/targetPools/tpool");
+   private static final URI TARGET_POOL = URI.create(BASE_URL + "/party/regions/us-central1/targetPools/tpool");
    
    public void testGetTargetPoolResponseIs2xx() throws Exception {
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/test")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/test")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -63,7 +64,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
               .payload(payloadFromResource("/targetpool_get.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, get, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, get, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.get("test"), new ParseTargetPoolTest().expected());
    }
@@ -72,14 +73,14 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/test")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/test")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, get, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, get, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertNull(api.get("test"));
    }
@@ -88,7 +89,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest insert = HttpRequest
               .builder()
               .method("POST")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               .payload(payloadFromResourceWithContentType("/targetpool_insert.json", MediaType.APPLICATION_JSON))
@@ -99,7 +100,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
               TOKEN_RESPONSE, insert,
-              insertTargetPoolResponse).getTargetPoolApi("myproject", "us-central1");
+              insertTargetPoolResponse).getTargetPoolApi("party", "us-central1");
       TargetPoolCreationOptions targetPoolCreationOptions = new TargetPoolCreationOptions();
       assertEquals(api.create("test", targetPoolCreationOptions), new ParseRegionOperationTest().expected());
    }
@@ -108,7 +109,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/test-targetPool")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/test-targetPool")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -116,7 +117,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
               .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, delete, deleteResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, delete, deleteResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.delete("test-targetPool"),
               new ParseRegionOperationTest().expected());
@@ -126,14 +127,14 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/test-targetPool")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/test-targetPool")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpResponse deleteResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, delete, deleteResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, delete, deleteResponse).getTargetPoolApi("party", "us-central1");
 
       assertNull(api.delete("test-targetPool"));
    }
@@ -142,7 +143,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -150,7 +151,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
               .payload(payloadFromResource("/targetpool_list.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, list, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, list, operationResponse).getTargetPoolApi("party", "us-central1");
 
       ListOptions options = new ListOptions();
       assertEquals(api.list(options).next().toString(), new ParseTargetPoolListTest().expected().toString());
@@ -160,14 +161,14 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools")
+              .endpoint(BASE_URL + "/party/regions/us-central1/targetPools")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, list, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, list, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertFalse(api.list().hasNext());
    }
@@ -178,7 +179,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
               .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, addInstance, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, addInstance, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.addInstance("test", INSTANCES),
               new ParseRegionOperationTest().expected());
@@ -190,7 +191,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, addInstance, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, addInstance, operationResponse).getTargetPoolApi("party", "us-central1");
 
       api.addInstance("test", INSTANCES);
    }
@@ -202,7 +203,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
             .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, removeInstance, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, removeInstance, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.removeInstance("test", INSTANCES),
             new ParseRegionOperationTest().expected());
@@ -214,7 +215,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, removeInstance, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, removeInstance, operationResponse).getTargetPoolApi("party", "us-central1");
 
       api.removeInstance("test", INSTANCES);
    }
@@ -226,7 +227,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
             .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, addHealthCheck, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, addHealthCheck, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.addHealthCheck("test", HEALTH_CHECKS), new ParseRegionOperationTest().expected());
    }
@@ -237,7 +238,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, addHealthCheck, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, addHealthCheck, operationResponse).getTargetPoolApi("party", "us-central1");
 
       api.addHealthCheck("test", HEALTH_CHECKS);
    }
@@ -249,7 +250,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
             .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, removeHealthCheck, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, removeHealthCheck, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.removeHealthCheck("test", HEALTH_CHECKS), new ParseRegionOperationTest().expected());
    }
@@ -260,7 +261,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-              TOKEN_RESPONSE, removeHealthCheck, operationResponse).getTargetPoolApi("myproject", "us-central1");
+              TOKEN_RESPONSE, removeHealthCheck, operationResponse).getTargetPoolApi("party", "us-central1");
 
       api.removeHealthCheck("test", HEALTH_CHECKS);
    }
@@ -269,7 +270,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest SetBackup = HttpRequest
             .builder()
             .method("POST")
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/testpool/setBackup")
+            .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/testpool/setBackup")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN)
             .payload(payloadFromResourceWithContentType("/targetpool_setbackup.json", MediaType.APPLICATION_JSON))
@@ -278,7 +279,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
             .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("party", "us-central1");
 
       assertEquals(api.setBackup("testpool", TARGET_POOL), new ParseRegionOperationTest().expected());
    }
@@ -287,7 +288,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest SetBackup = HttpRequest
             .builder()
             .method("POST")
-            .endpoint(BASE_URL + "/myproject/regions/"
+            .endpoint(BASE_URL + "/party/regions/"
                     + "us-central1/targetPools/testpool/setBackup?failoverRatio=0.5")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN)
@@ -297,7 +298,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
             .payload(payloadFromResource("/region_operation.json")).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("party", "us-central1");
 
       Float failoverRatio = Float.valueOf("0.5");
       assertEquals(api.setBackup("testpool", failoverRatio, TARGET_POOL), new ParseRegionOperationTest().expected());
@@ -308,7 +309,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest SetBackup = HttpRequest
             .builder()
             .method("POST")
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/testpool/setBackup")
+            .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/testpool/setBackup")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN)
             .payload(payloadFromResourceWithContentType("/targetpool_setbackup.json", MediaType.APPLICATION_JSON))
@@ -316,7 +317,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       TargetPoolApi api = requestsSendResponses(requestForScopes(COMPUTE_SCOPE),
-            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("myproject", "us-central1");
+            TOKEN_RESPONSE, SetBackup, operationResponse).getTargetPoolApi("party", "us-central1");
 
       api.setBackup("testpool", TARGET_POOL);
    }
@@ -325,7 +326,7 @@ public class TargetPoolApiExpectTest extends BaseGoogleComputeEngineApiExpectTes
       HttpRequest request = HttpRequest
             .builder()
             .method(method)
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/targetPools/test/" + endpoint)
+            .endpoint(BASE_URL + "/party/regions/us-central1/targetPools/test/" + endpoint)
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN)
             .payload(payloadFromResourceWithContentType(requestPayloadFile, MediaType.APPLICATION_JSON))

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/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 038f04f..10d61ac 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
@@ -16,7 +16,7 @@
  */
 package org.jclouds.googlecomputeengine.features;
 
-import static org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig.Type.ONE_TO_ONE_NAT;
+import static org.jclouds.googlecomputeengine.domain.NewInstance.Disk.newBootDisk;
 import static org.jclouds.googlecomputeengine.options.ListOptions.Builder.filter;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
@@ -30,10 +30,9 @@ import org.jclouds.googlecomputeengine.domain.HttpHealthCheck;
 import org.jclouds.googlecomputeengine.domain.Image;
 import org.jclouds.googlecomputeengine.domain.Instance;
 import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.NewInstance;
 import org.jclouds.googlecomputeengine.domain.TargetPool;
-import org.jclouds.googlecomputeengine.domain.templates.InstanceTemplate;
 import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiLiveTest;
-import org.jclouds.googlecomputeengine.options.DiskCreationOptions;
 import org.jclouds.googlecomputeengine.options.HttpHealthCheckCreationOptions;
 import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions;
 import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions.SessionAffinityValue;
@@ -54,7 +53,6 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
 
    private static final String INSTANCE_NETWORK_NAME = "target-pool-api-live-test-network";
    private static final String INSTANCE_NAME = "target-pool-api-live-test-instance";
-   private static final String BOOT_DISK_NAME = INSTANCE_NAME + "-boot-disk";
    private static final String IPV4_RANGE = "10.0.0.0/8";
    private static final String HEALTHCHECK_NAME = "target-pool-test-health-check";
 
@@ -84,29 +82,19 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
             })
             .first().get().selfLink();
 
-      // Make and instanceTemplate
-      InstanceTemplate instanceTemplate = new InstanceTemplate()
-            .name(INSTANCE_NAME)
-            .machineType(getDefaultMachineTypeUrl(userProject.get()))
-            .addNetworkInterface(getNetworkUrl(userProject.get(), INSTANCE_NETWORK_NAME), ONE_TO_ONE_NAT)
-            .addMetadata("mykey", "myvalue")
-            .description("a description")
-            .addDisk(Instance.AttachedDisk.Mode.READ_WRITE, getDiskUrl(userProject.get(), BOOT_DISK_NAME),
-                     null, true, true)
-            .image(imageUri);
-
-
       // Insert a network.
-      assertOperationDoneSuccessfully(api.getNetworkApi(userProject.get()).createInIPv4Range
-              (INSTANCE_NETWORK_NAME, IPV4_RANGE));
-
-      // Create a disk.
-      DiskCreationOptions diskCreationOptions = new DiskCreationOptions().sourceImage(instanceTemplate.image());
-      assertOperationDoneSuccessfully(api.getDiskApi(userProject.get(), DEFAULT_ZONE_NAME)
-                  .create(BOOT_DISK_NAME, DEFAULT_DISK_SIZE_GB, diskCreationOptions));
+      assertOperationDoneSuccessfully(api.getNetworkApi(userProject.get()).createInIPv4Range(INSTANCE_NETWORK_NAME,
+            IPV4_RANGE));
 
       // Create an instance.
-      assertOperationDoneSuccessfully(instanceApi.create(instanceTemplate));
+      assertOperationDoneSuccessfully(
+            instanceApi.create(NewInstance.create(getDefaultMachineTypeUrl(userProject.get()), // machineType
+                  INSTANCE_NAME, // name
+                  getNetworkUrl(userProject.get(), INSTANCE_NETWORK_NAME), // network
+                  newBootDisk(imageUri), // disks
+                  null // description
+            )));
+
       Instance instance = instanceApi.get(INSTANCE_NAME);
       instances = new ArrayList<URI>();
       instances.add(instance.selfLink());
@@ -244,7 +232,6 @@ public class TargetPoolApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
 
       try {
          waitOperationDone(instanceApi.delete(INSTANCE_NAME));
-         waitOperationDone(api.getDiskApi(userProject.get(), DEFAULT_ZONE_NAME).delete(BOOT_DISK_NAME));
          waitOperationDone(api.getNetworkApi(userProject.get()).delete(INSTANCE_NETWORK_NAME));
          waitOperationDone(httpHealthCheckApi.delete(HEALTHCHECK_NAME));
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/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 1fa2db9..e94df95 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
@@ -21,7 +21,8 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
 
-import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
 import org.jclouds.googlecomputeengine.parse.ParseZoneListTest;
 import org.jclouds.googlecomputeengine.parse.ParseZoneTest;
 import org.jclouds.http.HttpRequest;
@@ -29,9 +30,9 @@ import org.jclouds.http.HttpResponse;
 import org.testng.annotations.Test;
 
 @Test(groups = "unit", testName = "ZoneApiExpectTest")
-public class ZoneApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
+public class ZoneApiExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleComputeEngineApi> {
 
-   public static final String ZONES_URL_PREFIX = BASE_URL + "/myproject/zones";
+   public static final String ZONES_URL_PREFIX = BASE_URL + "/party/zones";
 
    public static final HttpRequest GET_ZONE_REQ = HttpRequest
            .builder()
@@ -60,7 +61,7 @@ public class ZoneApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
               .payload(payloadFromResource("/zone_get.json")).build();
 
       ZoneApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, GET_ZONE_REQ, operationResponse).getZoneApi("myproject");
+              TOKEN_RESPONSE, GET_ZONE_REQ, operationResponse).getZoneApi("party");
 
       assertEquals(api.get("us-central1-a"),
               new ParseZoneTest().expected());
@@ -71,7 +72,7 @@ public class ZoneApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       ZoneApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, GET_ZONE_REQ, operationResponse).getZoneApi("myproject");
+              TOKEN_RESPONSE, GET_ZONE_REQ, operationResponse).getZoneApi("party");
 
       assertNull(api.get("us-central1-a"));
    }
@@ -79,7 +80,7 @@ public class ZoneApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
    public void testListZoneNoOptionsResponseIs2xx() throws Exception {
 
       ZoneApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, LIST_ZONES_REQ, LIST_ZONES_RESPONSE).getZoneApi("myproject");
+              TOKEN_RESPONSE, LIST_ZONES_REQ, LIST_ZONES_RESPONSE).getZoneApi("party");
 
       assertEquals(api.list().next().toString(), new ParseZoneListTest().expected().toString());
    }
@@ -89,7 +90,7 @@ public class ZoneApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
       HttpResponse operationResponse = HttpResponse.builder().statusCode(404).build();
 
       ZoneApi api = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, LIST_ZONES_REQ, operationResponse).getZoneApi("myproject");
+              TOKEN_RESPONSE, LIST_ZONES_REQ, operationResponse).getZoneApi("party");
 
       assertFalse(api.list().hasNext());
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/functions/internal/ToIteratorOfListPageExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/functions/internal/ToIteratorOfListPageExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/functions/internal/ToIteratorOfListPageExpectTest.java
index 2c961bf..5171c35 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/functions/internal/ToIteratorOfListPageExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/functions/internal/ToIteratorOfListPageExpectTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertEquals;
 import java.util.Iterator;
 import java.util.List;
 
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
 import org.jclouds.googlecomputeengine.config.GoogleComputeEngineParserModule;
 import org.jclouds.googlecomputeengine.domain.Address;
 import org.jclouds.googlecomputeengine.domain.Image;
@@ -31,7 +32,7 @@ import org.jclouds.googlecomputeengine.domain.ListPage;
 import org.jclouds.googlecomputeengine.features.AddressApi;
 import org.jclouds.googlecomputeengine.features.ImageApi;
 import org.jclouds.googlecomputeengine.features.InstanceApi;
-import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
 import org.jclouds.googlecomputeengine.parse.ParseAddressTest;
 import org.jclouds.googlecomputeengine.parse.ParseImageTest;
 import org.jclouds.googlecomputeengine.parse.ParseInstanceTest;
@@ -45,7 +46,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.inject.Guice;
 
 @Test(groups = "unit", testName = "ToIteratorOfListPageTest")
-public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiExpectTest {
+public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleComputeEngineApi> {
 
    private final Json json = Guice.createInjector(new GsonModule(), new GoogleComputeEngineParserModule())
          .getInstance(Json.class);
@@ -54,7 +55,7 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/global/images")
+              .endpoint(BASE_URL + "/party/global/images")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -62,7 +63,7 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
               .payload(payloadFromResource("/image_list_single_page.json")).build();
 
       ImageApi imageApi = requestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
-              TOKEN_RESPONSE, list, operationResponse).getImageApi("myproject");
+              TOKEN_RESPONSE, list, operationResponse).getImageApi("party");
 
       Iterator<ListPage<Image>> images = imageApi.list();
 
@@ -73,15 +74,15 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
       HttpRequest list1 = HttpRequest
               .builder()
               .method("GET")
-              .endpoint(BASE_URL + "/myproject/global/images?maxResults=1")
+              .endpoint(BASE_URL + "/party/global/images?maxResults=1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpRequest list2 = list1.toBuilder()
-               .endpoint(BASE_URL + "/myproject/global/images?pageToken=token1&maxResults=1").build();
+               .endpoint(BASE_URL + "/party/global/images?pageToken=token1&maxResults=1").build();
 
       HttpRequest list3 = list1.toBuilder()
-               .endpoint(BASE_URL + "/myproject/global/images?pageToken=token2&maxResults=1").build();
+               .endpoint(BASE_URL + "/party/global/images?pageToken=token2&maxResults=1").build();
 
       List<Image> items = ImmutableList.of(new ParseImageTest().expected());
 
@@ -96,7 +97,7 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
 
       ImageApi imageApi = orderedRequestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
               TOKEN_RESPONSE, list1, list1Response, list2, list2Response, list3, list3Response)
-              .getImageApi("myproject");
+              .getImageApi("party");
 
       Iterator<ListPage<Image>> images = imageApi.list(maxResults(1));
 
@@ -111,15 +112,15 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
       HttpRequest list1 = HttpRequest
             .builder()
             .method("GET")
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses?maxResults=1")
+            .endpoint(BASE_URL + "/party/regions/us-central1/addresses?maxResults=1")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpRequest list2 = list1.toBuilder()
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses?pageToken=token1&maxResults=1").build();
+            .endpoint(BASE_URL + "/party/regions/us-central1/addresses?pageToken=token1&maxResults=1").build();
 
       HttpRequest list3 = list1.toBuilder()
-            .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses?pageToken=token2&maxResults=1").build();
+            .endpoint(BASE_URL + "/party/regions/us-central1/addresses?pageToken=token2&maxResults=1").build();
 
       List<Address> items = ImmutableList.of(new ParseAddressTest().expected());
 
@@ -134,7 +135,7 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
 
       AddressApi addressApi = orderedRequestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
             TOKEN_RESPONSE, list1, list1Response, list2, list2Response, list3, list3Response)
-            .getAddressApi("myproject", "us-central1");
+            .getAddressApi("party", "us-central1");
 
       Iterator<ListPage<Address>> addresses = addressApi.list(maxResults(1));
 
@@ -149,15 +150,15 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
       HttpRequest list1 = HttpRequest
             .builder()
             .method("GET")
-            .endpoint(BASE_URL + "/myproject/zones/us-central1-a/instances?maxResults=1")
+            .endpoint(BASE_URL + "/party/zones/us-central1-a/instances?maxResults=1")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN).build();
 
       HttpRequest list2 = list1.toBuilder()
-            .endpoint(BASE_URL + "/myproject/zones/us-central1-a/instances?pageToken=token1&maxResults=1").build();
+            .endpoint(BASE_URL + "/party/zones/us-central1-a/instances?pageToken=token1&maxResults=1").build();
 
       HttpRequest list3 = list1.toBuilder()
-            .endpoint(BASE_URL + "/myproject/zones/us-central1-a/instances?pageToken=token2&maxResults=1").build();
+            .endpoint(BASE_URL + "/party/zones/us-central1-a/instances?pageToken=token2&maxResults=1").build();
 
       List<Instance> items = ImmutableList.of(new ParseInstanceTest().expected());
 
@@ -172,7 +173,7 @@ public class ToIteratorOfListPageExpectTest extends BaseGoogleComputeEngineApiEx
 
       InstanceApi instanceApi = orderedRequestsSendResponses(requestForScopes(COMPUTE_READONLY_SCOPE),
             TOKEN_RESPONSE, list1, list1Response, list2, list2Response, list3, list3Response)
-            .getInstanceApi("myproject", "us-central1-a");
+            .getInstanceApi("party", "us-central1-a");
 
       Iterator<ListPage<Instance>> instances = instanceApi.list(maxResults(1));
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiExpectTest.java
deleted file mode 100644
index 1766de8..0000000
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiExpectTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.googlecomputeengine.internal;
-
-import java.util.Properties;
-
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-
-public class BaseGoogleComputeEngineApiExpectTest extends BaseGoogleComputeEngineExpectTest<GoogleComputeEngineApi> {
-
-   @Override
-   protected Properties setupProperties() {
-      Properties properties = super.setupProperties();
-      properties.put("google-compute-engine.identity", "myproject");
-      return properties;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/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 07ac7e0..3c630b1 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
@@ -29,9 +29,11 @@ import java.util.logging.Logger;
 
 import org.jclouds.apis.BaseApiLiveTest;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineProviderMetadata;
 import org.jclouds.googlecomputeengine.config.UserProject;
 import org.jclouds.googlecomputeengine.domain.Operation;
 import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.providers.ProviderMetadata;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
@@ -63,12 +65,16 @@ public class BaseGoogleComputeEngineApiLiveTest extends BaseApiLiveTest<GoogleCo
       provider = "google-compute-engine";
    }
 
-    @Override
-    protected Properties setupProperties() {
-       Properties props = super.setupProperties();
-       setCredential(props, provider + ".credential");
-       return props;
-    }
+   @Override
+   protected Properties setupProperties() {
+      Properties props = super.setupProperties();
+      setCredential(props, provider + ".credential");
+      return props;
+   }
+
+   @Override protected ProviderMetadata createProviderMetadata() {
+      return new GoogleComputeEngineProviderMetadata();
+   }
 
    protected GoogleComputeEngineApi create(Properties props, Iterable<Module> modules) {
       Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiMockTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiMockTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiMockTest.java
new file mode 100644
index 0000000..b94cee8
--- /dev/null
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineApiMockTest.java
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.googlecomputeengine.internal;
+
+import static com.google.common.base.Charsets.UTF_8;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_PROJECTS;
+import static org.jclouds.oauth.v2.OAuthConstants.NO_ALGORITHM;
+import static org.jclouds.oauth.v2.config.CredentialType.BEARER_TOKEN_CREDENTIALS;
+import static org.jclouds.oauth.v2.config.OAuthProperties.CREDENTIAL_TYPE;
+import static org.jclouds.oauth.v2.config.OAuthProperties.SIGNATURE_OR_MAC_ALGORITHM;
+import static org.jclouds.util.Strings2.toStringAndClose;
+import static org.testng.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.jclouds.ContextBuilder;
+import org.jclouds.compute.ComputeService;
+import org.jclouds.compute.ComputeServiceContext;
+import org.jclouds.concurrent.config.ExecutorServiceModule;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineProviderMetadata;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.gson.JsonParser;
+import com.google.inject.Module;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+import com.squareup.okhttp.mockwebserver.RecordedRequest;
+
+/**
+ * Tests need to run {@code singleThreaded = true) as otherwise tests will clash on the server field.
+ * Sharing the server field means less code to write.
+ */
+public class BaseGoogleComputeEngineApiMockTest {
+
+   protected final String identity = "party";
+   protected final String credential = "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M";
+   protected final String openSshKey = GoogleComputeEngineTestModule.INSTANCE.openSshKey;
+
+   protected MockWebServer server;
+
+   protected GoogleComputeEngineApi api() {
+      return builder().buildApi(GoogleComputeEngineApi.class);
+   }
+
+   protected ComputeService computeService() {
+      return builder().buildView(ComputeServiceContext.class).getComputeService();
+   }
+
+   private ContextBuilder builder() {
+      Properties overrides = new Properties();
+      overrides.put(GCE_IMAGE_PROJECTS, "debian-cloud");
+      overrides.put(CREDENTIAL_TYPE, BEARER_TOKEN_CREDENTIALS.toString());
+      overrides.put(SIGNATURE_OR_MAC_ALGORITHM, NO_ALGORITHM); // TODO: this should be implied by the above.
+      return ContextBuilder.newBuilder(new GoogleComputeEngineProviderMetadata())
+            .credentials(identity, credential)
+            .endpoint(url("/"))
+            .overrides(overrides)
+            .modules(modules);
+   }
+
+   private final Set<Module> modules = ImmutableSet
+         .of(new ExecutorServiceModule(sameThreadExecutor()), GoogleComputeEngineTestModule.INSTANCE);
+
+   final AtomicInteger suffix = new AtomicInteger();
+
+   @BeforeMethod
+   public void start() throws IOException {
+      suffix.set(0);
+      server = new MockWebServer();
+      server.play();
+   }
+
+   protected String url(String path) {
+      return "http://localhost:" + server.getPort() + path;
+   }
+
+   @AfterMethod(alwaysRun = true)
+   public void stop() throws IOException {
+      server.shutdown();
+   }
+
+   protected MockResponse jsonResponse(String resource) {
+      return new MockResponse().addHeader("Content-Type", "application/json").setBody(stringFromResource(resource));
+   }
+
+   protected String stringFromResource(String resourceName) {
+      try {
+         return toStringAndClose(getClass().getResourceAsStream(resourceName))
+               .replace("https://www.googleapis.com/compute/v1/", url("/"));
+      } catch (IOException e) {
+         throw propagate(e);
+      }
+   }
+
+   protected MockResponse singleRegionSingleZoneResponse() {
+      return new MockResponse().setBody("{\"items\":[" + stringFromResource("/region_get.json")
+            .replace("\"" + url("/") + "projects/party/zones/us-central1-b\"", "") + "]}");
+   }
+
+   protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException {
+      RecordedRequest request = server.takeRequest();
+      assertEquals(request.getMethod(), method);
+      assertEquals(request.getPath(), path);
+      assertEquals(request.getHeader("Accept"), APPLICATION_JSON);
+      assertEquals(request.getHeader("Authorization"), "Bearer " + credential);
+      return request;
+   }
+
+   protected RecordedRequest assertSent(MockWebServer server, String method, String path, String json)
+         throws InterruptedException {
+      RecordedRequest request = assertSent(server, method, path);
+      assertEquals(request.getHeader("Content-Type"), APPLICATION_JSON);
+      assertEquals(parser.parse(new String(request.getBody(), UTF_8)), parser.parse(json));
+      return request;
+   }
+
+   /** So that we can ignore formatting. */
+   private final JsonParser parser = new JsonParser();
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
index 26f5bf3..2cc62f8 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineExpectTest.java
@@ -19,33 +19,14 @@ package org.jclouds.googlecomputeengine.internal;
 import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Throwables.propagate;
 import static com.google.common.io.BaseEncoding.base64Url;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.jclouds.crypto.Pems.privateKeySpec;
-import static org.jclouds.crypto.Pems.publicKeySpec;
-import static org.jclouds.crypto.PemsTest.PRIVATE_KEY;
-import static org.jclouds.crypto.PemsTest.PUBLIC_KEY;
 import static org.jclouds.util.Strings2.toStringAndClose;
 
 import java.io.IOException;
 import java.net.URI;
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.SecureRandom;
-import java.security.interfaces.RSAPublicKey;
-import java.security.spec.InvalidKeySpecException;
 import java.util.Properties;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.ws.rs.core.MediaType;
 
-import org.jclouds.crypto.Crypto;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineProviderMetadata;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
@@ -54,15 +35,9 @@ import org.jclouds.oauth.v2.OAuthConstants;
 import org.jclouds.oauth.v2.config.OAuthProperties;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.rest.internal.BaseRestApiExpectTest;
-import org.jclouds.ssh.SshKeys;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.io.ByteSource;
-import com.google.inject.Binder;
 import com.google.inject.Module;
-import com.google.inject.TypeLiteral;
 
 public class BaseGoogleComputeEngineExpectTest<T> extends BaseRestApiExpectTest<T> {
    protected static final String BASE_URL = "https://www.googleapis.com/compute/v1/projects";
@@ -70,7 +45,7 @@ public class BaseGoogleComputeEngineExpectTest<T> extends BaseRestApiExpectTest<
    private static final String header = "{\"alg\":\"none\",\"typ\":\"JWT\"}";
 
    private static final String CLAIMS_TEMPLATE = "{" +
-           "\"iss\":\"myproject\"," +
+           "\"iss\":\"party\"," +
            "\"scope\":\"%s\"," +
            "\"aud\":\"https://accounts.google.com/o/oauth2/token\"," +
            "\"exp\":3600," +
@@ -85,25 +60,9 @@ public class BaseGoogleComputeEngineExpectTest<T> extends BaseRestApiExpectTest<
                    "  \"expires_in\" : 3600\n" +
                    "}")).build();
 
-   private final KeyPair keyPair;
-   protected final String openSshKey;
-
    protected BaseGoogleComputeEngineExpectTest() {
       provider = "google-compute-engine";
-      try {
-         KeyFactory keyfactory = KeyFactory.getInstance("RSA");
-         PrivateKey privateKey = keyfactory
-               .generatePrivate(privateKeySpec(ByteSource.wrap(PRIVATE_KEY.getBytes(UTF_8))));
-         PublicKey publicKey = keyfactory.generatePublic(publicKeySpec(ByteSource.wrap(PUBLIC_KEY.getBytes(UTF_8))));
-         keyPair = new KeyPair(publicKey, privateKey);
-         openSshKey = SshKeys.encodeAsOpenSSH(RSAPublicKey.class.cast(publicKey));
-      } catch (NoSuchAlgorithmException e) {
-         throw propagate(e);
-      } catch (InvalidKeySpecException e) {
-         throw propagate(e);
-      } catch (IOException e) {
-         throw propagate(e);
-      }
+      identity = "party";
    }
 
    @Override protected ProviderMetadata createProviderMetadata(){
@@ -111,34 +70,7 @@ public class BaseGoogleComputeEngineExpectTest<T> extends BaseRestApiExpectTest<
    }
 
    @Override protected Module createModule() {
-
-      return new Module() {
-         @Override
-         public void configure(Binder binder) {
-            // Predictable time
-            binder.bind(new TypeLiteral<Supplier<Long>>() {}).toInstance(Suppliers.ofInstance(0L));
-            Crypto crypto = createMock(Crypto.class);
-            KeyPairGenerator rsaKeyPairGenerator = createMock(KeyPairGenerator.class);
-            SecureRandom secureRandom = createMock(SecureRandom.class);
-            expect(crypto.rsaKeyPairGenerator()).andReturn(rsaKeyPairGenerator).anyTimes();
-            rsaKeyPairGenerator.initialize(2048, secureRandom);
-            expectLastCall().anyTimes();
-            expect(rsaKeyPairGenerator.genKeyPair()).andReturn(keyPair).anyTimes();
-            replay(crypto, rsaKeyPairGenerator, secureRandom);
-            binder.bind(Crypto.class).toInstance(crypto);
-            binder.bind(SecureRandom.class).toInstance(secureRandom);
-
-            //  predictable node names
-            final AtomicInteger suffix = new AtomicInteger();
-            binder.bind(new TypeLiteral<Supplier<String>>() {
-            }).toInstance(new Supplier<String>() {
-               @Override
-               public String get() {
-                  return suffix.getAndIncrement() + "";
-               }
-            });
-         }
-      };
+      return GoogleComputeEngineTestModule.INSTANCE;
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceContextExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceContextExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceContextExpectTest.java
deleted file mode 100644
index 6d10740..0000000
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceContextExpectTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.googlecomputeengine.internal;
-
-import java.util.Properties;
-
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-
-import com.google.common.base.Function;
-import com.google.inject.Module;
-
-public abstract class BaseGoogleComputeEngineServiceContextExpectTest<T> extends BaseGoogleComputeEngineExpectTest<T> implements
-        Function<ComputeServiceContext, T> {
-
-   @Override public T createClient(Function<HttpRequest, HttpResponse> fn, Module module, Properties props) {
-      return apply(createComputeServiceContext(fn, module, props));
-   }
-
-   private ComputeServiceContext createComputeServiceContext(Function<HttpRequest, HttpResponse> fn, Module module,
-                                                             Properties props) {
-      return createInjector(fn, module, props).getInstance(ComputeServiceContext.class);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceExpectTest.java
deleted file mode 100644
index 23fa49e..0000000
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/BaseGoogleComputeEngineServiceExpectTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.googlecomputeengine.internal;
-
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.ComputeServiceContext;
-
-public class BaseGoogleComputeEngineServiceExpectTest extends BaseGoogleComputeEngineServiceContextExpectTest<ComputeService> {
-
-   @Override
-   public ComputeService apply(ComputeServiceContext input) {
-      return input.getComputeService();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/GoogleComputeEngineTestModule.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/GoogleComputeEngineTestModule.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/GoogleComputeEngineTestModule.java
new file mode 100644
index 0000000..219b716
--- /dev/null
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/internal/GoogleComputeEngineTestModule.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.googlecomputeengine.internal;
+
+import static com.google.common.base.Charsets.UTF_8;
+import static com.google.common.base.Throwables.propagate;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.jclouds.crypto.Pems.privateKeySpec;
+import static org.jclouds.crypto.Pems.publicKeySpec;
+import static org.jclouds.crypto.PemsTest.PRIVATE_KEY;
+import static org.jclouds.crypto.PemsTest.PUBLIC_KEY;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.interfaces.RSAPublicKey;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.jclouds.crypto.Crypto;
+import org.jclouds.ssh.SshKeys;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+import com.google.common.io.ByteSource;
+import com.google.inject.Binder;
+import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
+
+enum GoogleComputeEngineTestModule implements Module {
+   INSTANCE;
+
+   private final KeyPair keyPair;
+   final String openSshKey;
+
+   GoogleComputeEngineTestModule() {
+      try {
+         KeyFactory keyfactory = KeyFactory.getInstance("RSA");
+         PrivateKey privateKey = keyfactory
+               .generatePrivate(privateKeySpec(ByteSource.wrap(PRIVATE_KEY.getBytes(UTF_8))));
+         PublicKey publicKey = keyfactory.generatePublic(publicKeySpec(ByteSource.wrap(PUBLIC_KEY.getBytes(UTF_8))));
+         keyPair = new KeyPair(publicKey, privateKey);
+         openSshKey = SshKeys.encodeAsOpenSSH(RSAPublicKey.class.cast(publicKey));
+      } catch (Exception e) {
+         throw propagate(e);
+      }
+   }
+
+   @Override public void configure(Binder binder) {
+      // Predictable time
+      binder.bind(new TypeLiteral<Supplier<Long>>() {
+      }).toInstance(Suppliers.ofInstance(0L));
+
+      // Predictable ssh keys
+      Crypto crypto = createMock(Crypto.class);
+      KeyPairGenerator rsaKeyPairGenerator = createMock(KeyPairGenerator.class);
+      SecureRandom secureRandom = createMock(SecureRandom.class);
+      expect(crypto.rsaKeyPairGenerator()).andReturn(rsaKeyPairGenerator).anyTimes();
+      rsaKeyPairGenerator.initialize(2048, secureRandom);
+      expectLastCall().anyTimes();
+      expect(rsaKeyPairGenerator.genKeyPair()).andReturn(keyPair).anyTimes();
+      replay(crypto, rsaKeyPairGenerator, secureRandom);
+      binder.bind(Crypto.class).toInstance(crypto);
+      binder.bind(SecureRandom.class).toInstance(secureRandom);
+
+      //  predictable node names
+      final AtomicInteger suffix = new AtomicInteger();
+      binder.bind(new TypeLiteral<Supplier<String>>() {
+      }).toInstance(new Supplier<String>() {
+         @Override
+         public String get() {
+            return suffix.getAndIncrement() + "";
+         }
+      });
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressListTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressListTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressListTest.java
index b269d7b..5a21279 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressListTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressListTest.java
@@ -42,12 +42,12 @@ public class ParseAddressListTest extends BaseGoogleComputeEngineParseTest<ListP
       Address address1 = new ParseAddressTest().expected();
       Address address2 = Address.create( //
             "4881363978908129158", // id
-            URI.create(BASE_URL + "/myproject/regions/us-central1/addresses/test-ip2"), // selfLink
+            URI.create(BASE_URL + "/party/regions/us-central1/addresses/test-ip2"), // selfLink
             "test-ip2", // name
             "", // description
             "RESERVED", // status
             null, // user
-            URI.create(BASE_URL + "/myproject/regions/us-central1"), // region
+            URI.create(BASE_URL + "/party/regions/us-central1"), // region
             "173.255.118.115" // address
       );
       return ListPage.create( //

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressTest.java
index 27708da..28feb2e 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseAddressTest.java
@@ -38,12 +38,12 @@ public class ParseAddressTest extends BaseGoogleComputeEngineParseTest<Address>
    public Address expected() {
       return Address.create( //
             "4439373783165447583", // id
-            URI.create(BASE_URL + "/myproject/regions/us-central1/addresses/test-ip1"), // selfLink
+            URI.create(BASE_URL + "/party/regions/us-central1/addresses/test-ip1"), // selfLink
             "test-ip1", // name
             "", // description
             "RESERVED", // status
             null, // user
-            URI.create(BASE_URL + "/myproject/regions/us-central1"), // region
+            URI.create(BASE_URL + "/party/regions/us-central1"), // region
             "173.255.115.190" // address
       );
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseDiskTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseDiskTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseDiskTest.java
index cb557d8..67689ab 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseDiskTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseDiskTest.java
@@ -38,12 +38,12 @@ public class ParseDiskTest extends BaseGoogleComputeEngineParseTest<Disk> {
    public Disk expected() {
       return Disk.create( //
             "13050421646334304115", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a"), // zone
+            URI.create(BASE_URL + "/party/zones/us-central1-a"), // zone
             "READY", // status
             "testimage1", // name
             null, // description
             1, // sizeGb
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/disks/testimage1"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/disks/testimage1"), // selfLink
             URI.create(BASE_URL + "/studied-point-720/zones/us-central1-a/diskTypes/pd-standard") // type
       );
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseFirewallTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseFirewallTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseFirewallTest.java
index e79ac2f..e4219a7 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseFirewallTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseFirewallTest.java
@@ -41,10 +41,10 @@ public class ParseFirewallTest extends BaseGoogleComputeEngineParseTest<Firewall
    public Firewall expected() {
       return Firewall.create( //
             "12862241031274216284", // id
-            URI.create(BASE_URL + "/myproject/global/firewalls/jclouds-test"), // selfLink
+            URI.create(BASE_URL + "/party/global/firewalls/jclouds-test"), // selfLink
             "jclouds-test", // name
             "Internal traffic from default allowed", // description
-            URI.create(BASE_URL + "/myproject/global/networks/jclouds-test"), // network
+            URI.create(BASE_URL + "/party/global/networks/jclouds-test"), // network
             ImmutableList.of("10.0.0.0/8"), // sourceRanges
             null, // sourceTags
             null, // targetTags

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseForwardingRuleTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseForwardingRuleTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseForwardingRuleTest.java
index ac0af80..ae755d8 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseForwardingRuleTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseForwardingRuleTest.java
@@ -38,14 +38,14 @@ public class ParseForwardingRuleTest extends BaseGoogleComputeEngineParseTest<Fo
    public ForwardingRule expected() {
       return ForwardingRule.create( //
             "6732523704970219884", // id
-            URI.create(BASE_URL + "/myproject/regions/europe-west1/forwardingRules/test-forwarding-rule"), // selfLink
+            URI.create(BASE_URL + "/party/regions/europe-west1/forwardingRules/test-forwarding-rule"), // selfLink
             "test-forwarding-rule", // name
             null, // description
-            URI.create(BASE_URL + "/myproject/regions/europe-west1"), // region
+            URI.create(BASE_URL + "/party/regions/europe-west1"), // region
             "23.251.129.77", // ipAddress
             ForwardingRule.IPProtocol.TCP, // ipProtocol
             "1-65535", // portRange
-            URI.create(BASE_URL + "/myproject/regions/europe-west1/targetPools/test-target-pool") // target
+            URI.create(BASE_URL + "/party/regions/europe-west1/targetPools/test-target-pool") // target
       );
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseGlobalOperationTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseGlobalOperationTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseGlobalOperationTest.java
index aba9de3..9aac11c 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseGlobalOperationTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseGlobalOperationTest.java
@@ -38,10 +38,10 @@ public class ParseGlobalOperationTest extends BaseGoogleComputeEngineParseTest<O
    public Operation expected() {
       return Operation.create( //
             "13053095055850848306", // id
-            URI.create(BASE_URL + "/myproject/global/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb"),
-            "operation-1354084865060-4cf88735faeb8-bbbb12cb", // name
+            URI.create(BASE_URL + "/party/global/operations/operation-1354084865060"),
+            "operation-1354084865060", // name
             null, // description
-            URI.create(BASE_URL + "/myproject/global/firewalls/jclouds-test-delete"), // targetLink
+            URI.create(BASE_URL + "/party/global/firewalls/jclouds-test-delete"), // targetLink
             "13053094017547040099", // targetId
             null, // clientOperationId
             Operation.Status.DONE, // status

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckListTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckListTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckListTest.java
index 3cd4722..d52e3f5 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckListTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckListTest.java
@@ -42,7 +42,7 @@ public class ParseHttpHealthCheckListTest extends BaseGoogleComputeEngineParseTe
       HttpHealthCheck healthCheck1 = new ParseHttpHealthCheckTest().expected();
       HttpHealthCheck healthCheck2 = HttpHealthCheck.create( //
             "1035854271083519643", // id
-            URI.create(BASE_URL + "/jclouds-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check"),
+            URI.create(BASE_URL + "/party-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check"),
             // selfLink
             "myname-andrea-kmzmi1bh-http-health-check", // name
             null, // description
@@ -56,7 +56,7 @@ public class ParseHttpHealthCheckListTest extends BaseGoogleComputeEngineParseTe
       );
       HttpHealthCheck healthCheck3 = HttpHealthCheck.create( //
             "7006563292274658743", // id
-            URI.create(BASE_URL + "/jclouds-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check"),
+            URI.create(BASE_URL + "/party-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check"),
             // selfLink
             "myname-andrea-zk7gadwq-http-health-check", // name
             null, // description

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckTest.java
index c2d672e..43ccb60 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseHttpHealthCheckTest.java
@@ -38,7 +38,7 @@ public class ParseHttpHealthCheckTest extends BaseGoogleComputeEngineParseTest<H
    public HttpHealthCheck expected() {
       return HttpHealthCheck.create( //
             "2761502483700014319", // id
-            URI.create(BASE_URL + "/jclouds-gce/global/httpHealthChecks/http-health-check-api-live-test"), // selfLink
+            URI.create(BASE_URL + "/party-gce/global/httpHealthChecks/http-health-check-api-live-test"), // selfLink
             "http-health-check-api-live-test", // name
             null, // description
             null, // host

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
index 4a3a75f..8d92d9b 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
@@ -32,7 +32,6 @@ import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 
 @Test(groups = "unit", testName = "ParseInstanceTest")
 public class ParseInstanceTest extends BaseGoogleComputeEngineParseTest<Instance> {
@@ -46,17 +45,17 @@ public class ParseInstanceTest extends BaseGoogleComputeEngineParseTest<Instance
    public Instance expected() {
       return Instance.create( //
             "13051190678907570425", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/test-0"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/instances/test-0"), // selfLink
             "test-0", // name
             "desc", // description
-            Tags.create("abcd", ImmutableList.of("aTag", "Group-port-42")), // tags
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/machineTypes/n1-standard-1"), // machineType
+            Tags.create("abcd").add("aTag").add("Group-port-42"), // tags
+            URI.create(BASE_URL + "/party/zones/us-central1-a/machineTypes/n1-standard-1"), // machineType
             Instance.Status.RUNNING, // status
             null, // statusMessage
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a"), // zone
+            URI.create(BASE_URL + "/party/zones/us-central1-a"), // zone
             ImmutableList.of(NetworkInterface.create( //
                   "nic0", // name
-                  URI.create(BASE_URL + "/myproject/global/networks/default"), // network
+                  URI.create(BASE_URL + "/party/global/networks/default"), // network
                   "10.240.121.115", // networkIP
                   null // accessConfigs
             )), // networkInterfaces
@@ -64,15 +63,15 @@ public class ParseInstanceTest extends BaseGoogleComputeEngineParseTest<Instance
                   0, // index
                   AttachedDisk.Type.PERSISTENT, // type
                   AttachedDisk.Mode.READ_WRITE, // mode
-                  URI.create(BASE_URL + "/myproject/zones/us-central1-a/disks/test"), // source
+                  URI.create(BASE_URL + "/party/zones/us-central1-a/disks/test"), // source
                   "test", // deviceName
                   false, // autoDelete
                   true// boot
             )), // disks
-            Metadata.create("efgh", ImmutableMap.<String, String>builder() //
-                  .put("aKey", "aValue") //
-                  .put("jclouds-image", BASE_URL + "/debian-cloud/global/images/debian-7-wheezy-v20140718") //
-                  .put("jclouds-delete-boot-disk", "true").build()), // metadata
+            Metadata.create("efgh")
+                    .put("aKey", "aValue")
+                    .put("jclouds-image", BASE_URL + "/debian-cloud/global/images/debian-7-wheezy-v20140718")
+                    .put("jclouds-delete-boot-disk", "true"), // metadata
             ImmutableList.of(ServiceAccount.create("default", ImmutableList.of("myscope"))) // serviceAccounts
       );
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
index 25ed1f2..082e989 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
@@ -41,7 +41,7 @@ public class ParseMachineTypeListTest extends BaseGoogleComputeEngineParseTest<L
    public ListPage<MachineType> expected() {
       MachineType machineType1 = MachineType.create( //
             "4618642685664990776", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/machineTypes/f1-micro"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/machineTypes/f1-micro"), // selfLink
             "f1-micro", // name
             "1 vCPU (shared physical core) and 0.6 GB RAM", // description
             1, // guestCpus
@@ -54,7 +54,7 @@ public class ParseMachineTypeListTest extends BaseGoogleComputeEngineParseTest<L
       );
       MachineType machineType2 = MachineType.create( //
             "12907738072351752276", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/machineTypes/n1-standard-1"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/machineTypes/n1-standard-1"), // selfLink
             "n1-standard-1", // name
             "1 vCPU, 3.75 GB RAM, and a 10 GB ephemeral root disk", // description
             1, // guestCpus
@@ -67,7 +67,7 @@ public class ParseMachineTypeListTest extends BaseGoogleComputeEngineParseTest<L
       );
       MachineType machineType3 = MachineType.create( //
             "12908560709887590691", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/machineTypes/n1-standard-8-d"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/machineTypes/n1-standard-8-d"), // selfLink
             "n1-standard-8-d", // name
             "8 vCPUs, 30 GB RAM, a 10 GB ephemeral root disk, and 2 extra 1770 GB ephemeral disks", // description
             8, // guestCpus

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
index d0f2a12..7bb6782 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
@@ -41,7 +41,7 @@ public class ParseMachineTypeTest extends BaseGoogleComputeEngineParseTest<Machi
    public MachineType expected() {
       return MachineType.create( //
             "12907738072351752276", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/machineTypes/n1-standard-1"), // selfLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/machineTypes/n1-standard-1"), // selfLink
             "n1-standard-1", // name
             "1 vCPU, 3.75 GB RAM, and a 10 GB ephemeral root disk", // description
             1, // guestCpus

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
index 362bbc2..3a43b9e 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
@@ -24,8 +24,6 @@ import org.jclouds.googlecomputeengine.domain.Metadata;
 import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.ImmutableMap;
-
 @Test(groups = "unit", testName = "ParseMetadataTest")
 public class ParseMetadataTest extends BaseGoogleComputeEngineParseTest<Metadata> {
 
@@ -36,7 +34,6 @@ public class ParseMetadataTest extends BaseGoogleComputeEngineParseTest<Metadata
 
    @Override @Consumes(APPLICATION_JSON)
    public Metadata expected() {
-      return Metadata.create("efgh",
-            ImmutableMap.<String, String>builder().put("propA", "valueA").put("propB", "valueB").build());
+      return Metadata.create("efgh").put("propA", "valueA").put("propB", "valueB");
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
index 62214fa..310b5ca 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
@@ -38,7 +38,7 @@ public class ParseNetworkTest extends BaseGoogleComputeEngineParseTest<Network>
    public Network expected() {
       return Network.create( //
             "13024414170909937976", // id
-            URI.create(BASE_URL + "/myproject/networks/jclouds-test"), // selfLink
+            URI.create(BASE_URL + "/party/networks/jclouds-test"), // selfLink
             "default", // name
             "Default network for the project", // description
             "10.0.0.0/8", // rangeIPv4

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/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 4b85a01..9023dd9 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
@@ -38,10 +38,10 @@ public class ParseOperationTest extends BaseGoogleComputeEngineParseTest<Operati
    public Operation expected() {
       return Operation.create( //
             "13053095055850848306", // id
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/operations/operation-1354084865060-4cf88735faeb8-bbbb12cb"),
-            "operation-1354084865060-4cf88735faeb8-bbbb12cb", // name
+            URI.create(BASE_URL + "/party/zones/us-central1-a/operations/operation-1354084865060"),
+            "operation-1354084865060", // name
             null, // description
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a/instances/test-1"), // targetLink
+            URI.create(BASE_URL + "/party/zones/us-central1-a/instances/test-1"), // targetLink
             "13053094017547040099", // targetId
             null, // clientOperationId
             Operation.Status.DONE, // status
@@ -55,8 +55,8 @@ public class ParseOperationTest extends BaseGoogleComputeEngineParseTest<Operati
             null, // httpErrorMessage
             "insert", // operationType
             null, // errors
-            URI.create(BASE_URL + "/myproject/regions/us-central1"), // region
-            URI.create(BASE_URL + "/myproject/zones/us-central1-a") // zone
+            URI.create(BASE_URL + "/party/regions/us-central1"), // region
+            URI.create(BASE_URL + "/party/zones/us-central1-a") // zone
       );
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
index 9a04ac0..1bad34e 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
@@ -29,7 +29,6 @@ import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 
 @Test(groups = "unit", testName = "ParseProjectTest")
 public class ParseProjectTest extends BaseGoogleComputeEngineParseTest<Project> {
@@ -43,10 +42,10 @@ public class ParseProjectTest extends BaseGoogleComputeEngineParseTest<Project>
    public Project expected() {
       return Project.create( //
             "13024414184846275913", // id
-            URI.create(BASE_URL + "/myproject"), // selfLink
-            "myproject", // name
+            URI.create(BASE_URL + "/party"), // selfLink
+            "party", // name
             "", // description
-            Metadata.create("efgh", ImmutableMap.of("propA", "valueA", "propB", "valueB")), // commonInstanceMetadata
+            Metadata.create("efgh").put("propA", "valueA").put("propB", "valueB"), // commonInstanceMetadata
             ImmutableList.of( //
                   Quota.create("INSTANCES", 0, 8), //
                   Quota.create("CPUS", 0, 8), //

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/6b5643c9/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
index 9d7c4fc..6cebdff 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
@@ -43,11 +43,11 @@ public class ParseRegionListTest extends BaseGoogleComputeEngineParseTest<ListPa
       Region region1 = new ParseRegionTest().expected();
       Region region2 = Region.create( //
             "6396763663251190992", // id
-            URI.create(BASE_URL + "/myproject/regions/us-central2"), // selfLink
+            URI.create(BASE_URL + "/party/regions/us-central2"), // selfLink
             "us-central2", // name
             "us-central2", // description
             Region.Status.UP, // status
-            ImmutableList.of(URI.create(BASE_URL + "/myproject/zones/us-central2-a")), // zones
+            ImmutableList.of(URI.create(BASE_URL + "/party/zones/us-central2-a")), // zones
             ImmutableList.of( //
                   Quota.create("INSTANCES", 0, 8), //
                   Quota.create("CPUS", 0, 8), //