http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicates.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicates.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicates.java
index 63d2767..c63db43 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicates.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicates.java
@@ -16,91 +16,87 @@
  */
 package org.jclouds.googlecomputeengine.predicates;
 
+import static com.google.common.collect.Sets.intersection;
+
+import java.util.List;
+
 import org.jclouds.googlecomputeengine.domain.Firewall;
 import org.jclouds.googlecomputeengine.domain.Firewall.Rule;
 import org.jclouds.net.domain.IpPermission;
-import org.jclouds.net.domain.IpProtocol;
 
 import com.google.common.base.Predicate;
+import com.google.common.base.Splitter;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Range;
-import com.google.common.collect.Sets;
 
-public class NetworkFirewallPredicates {
+public final class NetworkFirewallPredicates {
 
-   public static Predicate<Firewall> hasProtocol(final IpProtocol protocol) {
+   public static Predicate<Firewall> hasPortRange(final String protocol, final 
int fromPort, final int toPort) {
       return new Predicate<Firewall>() {
-
-         @Override
-         public boolean apply(Firewall fw) {
-            for (Rule rule : fw.getAllowed()) {
-               if (rule.getIpProtocol().equals(protocol)) {
+         @Override public boolean apply(Firewall fw) {
+            for (Rule rule : fw.allowed()) {
+               if (!rule.ipProtocol().equals(protocol)) {
+                  continue;
+               }
+               if (rule.ports() == null || rule.ports().isEmpty()) {
                   return true;
                }
+               for (String range : rule.ports()) {
+                  if (range.indexOf('-') != -1) {
+                     if (inRange(range, fromPort, toPort)) {
+                        return true;
+                     }
+                  }
+               }
             }
-
             return false;
          }
       };
    }
 
-   public static Predicate<Firewall> hasPortRange(final Range<Integer> 
portRange) {
-      return new Predicate<Firewall>() {
-
-         @Override
-         public boolean apply(Firewall fw) {
-            return Iterables.any(fw.getAllowed(), new Predicate<Rule>() {
-               @Override
-               public boolean apply(Rule input) {
-                  return input.getPorts().encloses(portRange);
-               }
-            });
-         }
-      };
+   private static boolean inRange(String range, int fromPort, int toPort) {
+      List<String> ports = Splitter.on('-').splitToList(range);
+      return fromPort >= Integer.valueOf(ports.get(0)) && toPort <= 
Integer.valueOf(ports.get(1));
    }
 
    public static Predicate<Firewall> hasSourceTag(final String sourceTag) {
       return new Predicate<Firewall>() {
-         @Override
-         public boolean apply(Firewall input) {
-            return input.getSourceTags() != null && 
input.getSourceTags().contains(sourceTag);
+         @Override public boolean apply(Firewall input) {
+            return input.sourceTags().contains(sourceTag);
          }
       };
    }
 
    public static Predicate<Firewall> hasSourceRange(final String sourceRange) {
       return new Predicate<Firewall>() {
-         @Override
-         public boolean apply(Firewall input) {
-            return input.getSourceRanges() != null && 
input.getSourceRanges().contains(sourceRange);
+         @Override  public boolean apply(Firewall input) {
+            return input.sourceRanges().contains(sourceRange);
          }
       };
    }
 
    public static Predicate<Firewall> equalsIpPermission(final IpPermission 
permission) {
       return new Predicate<Firewall>() {
-         @Override
-         public boolean apply(Firewall input) {
-            return Iterables.elementsEqual(permission.getGroupIds(), 
input.getSourceTags())
-                      && Iterables.elementsEqual(permission.getCidrBlocks(), 
input.getSourceRanges())
-                      && (input.getAllowed().size() == 1
-                             && 
ruleEqualsIpPermission(permission).apply(Iterables.getOnlyElement(input.getAllowed())));
+         @Override public boolean apply(Firewall input) {
+            return Iterables.elementsEqual(permission.getGroupIds(), 
input.sourceTags())
+                      && Iterables.elementsEqual(permission.getCidrBlocks(), 
input.sourceRanges())
+                      && (input.allowed().size() == 1
+                             && 
ruleEqualsIpPermission(permission).apply(Iterables.getOnlyElement(input.allowed())));
          }
       };
    }
 
    public static Predicate<Firewall> providesIpPermission(final IpPermission 
permission) {
       return new Predicate<Firewall>() {
-         @Override
-         public boolean apply(Firewall input) {
-            boolean groupsMatchTags = (permission.getGroupIds().isEmpty() && 
input.getSourceTags().isEmpty())
-                    || !Sets.intersection(permission.getGroupIds(), 
input.getSourceTags()).isEmpty();
-            boolean cidrsMatchRanges = (permission.getCidrBlocks().isEmpty() 
&& input.getSourceRanges().isEmpty())
-                    || !Sets.intersection(permission.getCidrBlocks(), 
input.getSourceRanges()).isEmpty();
-            boolean firewallHasPorts = 
hasProtocol(permission.getIpProtocol()).apply(input)
-                    && ((permission.getFromPort() == 0 && 
permission.getToPort() == 0)
-                    || hasPortRange(Range.closed(permission.getFromPort(), 
permission.getToPort())).apply(input));
-
+         @Override  public boolean apply(Firewall input) {
+            boolean groupsMatchTags =
+                  (permission.getGroupIds().isEmpty() && 
input.sourceTags().isEmpty()) || !intersection(
+                        permission.getGroupIds(), 
ImmutableSet.copyOf(input.sourceTags())).isEmpty();
+            boolean cidrsMatchRanges =
+                  (permission.getCidrBlocks().isEmpty() && 
input.sourceRanges().isEmpty()) || !intersection(
+                        permission.getCidrBlocks(), 
ImmutableSet.copyOf(input.sourceRanges())).isEmpty();
+            boolean firewallHasPorts = 
hasPortRange(permission.getIpProtocol().value().toLowerCase(),
+                        permission.getFromPort(), 
permission.getToPort()).apply(input);
             return groupsMatchTags && cidrsMatchRanges && firewallHasPorts;
          }
       };
@@ -108,13 +104,21 @@ public class NetworkFirewallPredicates {
 
    private static Predicate<Firewall.Rule> ruleEqualsIpPermission(final 
IpPermission permission) {
       return new Predicate<Rule>() {
-         @Override
-         public boolean apply(Firewall.Rule input) {
-            return permission.getIpProtocol().equals(input.getIpProtocol())
-                      && ((input.getPorts().isEmpty() && 
permission.getFromPort() == 0 && permission.getToPort() == 0)
-                             || (input.getPorts().asRanges().size() == 1
-                                    && permission.getFromPort() == 
Iterables.getOnlyElement(input.getPorts().asRanges()).lowerEndpoint()
-                                    && permission.getToPort() == 
Iterables.getOnlyElement(input.getPorts().asRanges()).upperEndpoint()));
+         @Override public boolean apply(Firewall.Rule input) {
+            if 
(!permission.getIpProtocol().value().toLowerCase().equals(input.ipProtocol())) {
+               return false;
+            }
+            if (input.ports() == null
+                  || input.ports().isEmpty() && permission.getFromPort() == 0 
&& permission.getToPort() == 0) {
+               return true;
+            } else if (input.ports().size() == 1) {
+               String port = Iterables.getOnlyElement(input.ports());
+               if (permission.getFromPort() == permission.getToPort()) {
+                  return port.equals(String.valueOf(permission.getFromPort()));
+               }
+               return port.equals(permission.getFromPort() + "-" + 
permission.getToPort());
+            }
+            return false;
          }
       };
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/RegionOperationDonePredicate.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/RegionOperationDonePredicate.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/RegionOperationDonePredicate.java
index 54f0f3c..2ebfaa3 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/RegionOperationDonePredicate.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/RegionOperationDonePredicate.java
@@ -32,31 +32,26 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Supplier;
 import com.google.inject.Inject;
 
-/**
- * Tests that a Global Operation is done, returning the completed Operation 
when it is.
- */
-public class RegionOperationDonePredicate implements 
Predicate<AtomicReference<Operation>> {
+public final class RegionOperationDonePredicate implements 
Predicate<AtomicReference<Operation>> {
 
    private final GoogleComputeEngineApi api;
    private final Supplier<String> project;
    private final Supplier<Map<URI, Region>> regions;
 
-   @Inject
-   RegionOperationDonePredicate(GoogleComputeEngineApi api, @UserProject 
Supplier<String> project,
+   @Inject RegionOperationDonePredicate(GoogleComputeEngineApi api, 
@UserProject Supplier<String> project,
                                 @Memoized Supplier<Map<URI, Region>> regions) {
       this.api = api;
       this.project = project;
       this.regions = regions;
    }
 
-   @Override
-   public boolean apply(AtomicReference<Operation> input) {
+   @Override public boolean apply(AtomicReference<Operation> input) {
       checkNotNull(input, "input");
 
       Operation current = api.getRegionOperationApi(project.get())
-              
.getInRegion(regions.get().get(input.get().getRegion().get()).getName(),
-              input.get().getName());
-      switch (current.getStatus()) {
+              .getInRegion(regions.get().get(input.get().region()).name(),
+              input.get().name());
+      switch (current.status()) {
          case DONE:
             input.set(current);
             return true;

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/ZoneOperationDonePredicate.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/ZoneOperationDonePredicate.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/ZoneOperationDonePredicate.java
index c681ae7..1f60dd9 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/ZoneOperationDonePredicate.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/predicates/ZoneOperationDonePredicate.java
@@ -35,27 +35,25 @@ import com.google.inject.Inject;
 /**
  * Tests that a Zone Operation is done, returning the completed Operation when 
it is.
  */
-public class ZoneOperationDonePredicate implements 
Predicate<AtomicReference<Operation>> {
+public final class ZoneOperationDonePredicate implements 
Predicate<AtomicReference<Operation>> {
 
    private final GoogleComputeEngineApi api;
    private final Supplier<String> project;
    private final Supplier<Map<URI, ? extends Location>> zones;
 
-   @Inject
-   ZoneOperationDonePredicate(GoogleComputeEngineApi api, @UserProject 
Supplier<String> project,
-                              @Memoized Supplier<Map<URI, ? extends Location>> 
zones) {
+   @Inject ZoneOperationDonePredicate(GoogleComputeEngineApi api, @UserProject 
Supplier<String> project,
+         @Memoized Supplier<Map<URI, ? extends Location>> zones) {
       this.api = api;
       this.project = project;
       this.zones = zones;
    }
 
-   @Override
-   public boolean apply(AtomicReference<Operation> input) {
-      checkNotNull(input, "input");
-      Operation current = api.getZoneOperationApi(project.get())
-              .getInZone(zones.get().get(input.get().getZone().get()).getId(),
-                      input.get().getName());
-      switch (current.getStatus()) {
+   @Override public boolean apply(AtomicReference<Operation> input) {
+      checkNotNull(input.get(), "input");
+      URI zone = checkNotNull(input.get().zone(), "zone of %s", input.get());
+      String locationId = checkNotNull(zones.get().get(zone), "location of 
%s", zone).getId();
+      Operation current = 
api.getZoneOperationApi(project.get()).getInZone(locationId, 
input.get().name());
+      switch (current.status()) {
          case DONE:
             input.set(current);
             return true;

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
 
b/google-compute-engine/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index 6b79dce..0000000
--- 
a/google-compute-engine/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.jclouds.googlecomputeengine.GoogleComputeEngineApiMetadata

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadataTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadataTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadataTest.java
index 5cb8a99..28b8703 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadataTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadataTest.java
@@ -16,8 +16,11 @@
  */
 package org.jclouds.googlecomputeengine;
 
+import static org.jclouds.reflect.Reflection2.typeToken;
+
 import org.jclouds.View;
 import org.jclouds.apis.internal.BaseApiMetadataTest;
+import org.jclouds.compute.ComputeServiceContext;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -33,6 +36,7 @@ import com.google.common.reflect.TypeToken;
 @Test(groups = "unit", testName = "GoogleComputeApiMetadataTest")
 public class GoogleComputeEngineApiMetadataTest extends BaseApiMetadataTest {
    public GoogleComputeEngineApiMetadataTest() {
-      super(new GoogleComputeEngineApiMetadata(), ImmutableSet.<TypeToken<? 
extends View>>of());
+      super(new GoogleComputeEngineApiMetadata(),
+            ImmutableSet.<TypeToken<? extends 
View>>of(typeToken(ComputeServiceContext.class)));
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/ForwardingRuleCreationBinderTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/ForwardingRuleCreationBinderTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/ForwardingRuleCreationBinderTest.java
index 65c32f4..66f8b3d 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/ForwardingRuleCreationBinderTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/ForwardingRuleCreationBinderTest.java
@@ -21,7 +21,7 @@ import static org.testng.Assert.assertEquals;
 import java.net.URI;
 import java.util.Map;
 
-import org.jclouds.googlecomputeengine.domain.ForwardingRule.IPProtocolOption;
+import org.jclouds.googlecomputeengine.domain.ForwardingRule;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
 import org.jclouds.googlecomputeengine.options.ForwardingRuleCreationOptions;
 import org.jclouds.http.HttpRequest;
@@ -53,7 +53,7 @@ public class ForwardingRuleCreationBinderTest extends 
BaseGoogleComputeEngineExp
       ForwardingRuleCreationOptions forwardingRuleCreationOptions = new 
ForwardingRuleCreationOptions()
                                                                   
.description(DESCRIPTION)
                                                                   
.ipAddress(IP_ADDRESS)
-                                                                  
.ipProtocol(IPProtocolOption.SCTP)
+                                                                  
.ipProtocol(ForwardingRule.IPProtocol.SCTP)
                                                                   
.portRange(PORT_RANGE)
                                                                   
.target(TARGET);
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolAddInstanceBinderTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolAddInstanceBinderTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolAddInstanceBinderTest.java
index 2ecfe5b..129d006 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolAddInstanceBinderTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolAddInstanceBinderTest.java
@@ -19,7 +19,7 @@ package org.jclouds.googlecomputeengine.binders;
 import static org.testng.Assert.assertEquals;
 
 import java.net.URI;
-import java.util.Set;
+import java.util.List;
 import java.util.Map;
 
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
@@ -28,18 +28,14 @@ import org.jclouds.json.Json;
 import org.jclouds.json.internal.GsonWrapper;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.gson.Gson;
 
-
-/**
- * Tests behavior of {@code BindToJsonPayload}
- */
 @Test(groups = "unit", testName = "TargetPoolAddInstanceBinderTest")
 public class TargetPoolAddInstanceBinderTest extends 
BaseGoogleComputeEngineExpectTest<Object>{
 
-   private static final Set<URI> FAKE_INSTANCES = ImmutableSet.of(
+   private static final List<URI> FAKE_INSTANCES = ImmutableList.of(
                                        
URI.create("https://www.googleapis.com/compute/v1/"; +
                                                   
"projects/project/zones/us-central1-a/instances/instance-1"),
                                        
URI.create("https://www.googleapis.com/compute/v1/"; +
@@ -58,8 +54,8 @@ public class TargetPoolAddInstanceBinderTest extends 
BaseGoogleComputeEngineExpe
       assertEquals(request.getPayload().getRawContent(),
                "{"
             + "\"instances\":["
-            + 
"{\"instance\":\"https://www.googleapis.com/compute/v1/projects/project/zones/us-central1-a/instances/instance-2\"},";
-            + 
"{\"instance\":\"https://www.googleapis.com/compute/v1/projects/project/zones/us-central1-a/instances/instance-1\"}";
+            + 
"{\"instance\":\"https://www.googleapis.com/compute/v1/projects/project/zones/us-central1-a/instances/instance-1\"},";
+            + 
"{\"instance\":\"https://www.googleapis.com/compute/v1/projects/project/zones/us-central1-a/instances/instance-2\"}";
             + "]"
             + "}");
       assertEquals(request.getPayload().getContentMetadata().getContentType(), 
"application/json");
@@ -71,5 +67,4 @@ public class TargetPoolAddInstanceBinderTest extends 
BaseGoogleComputeEngineExpe
       DiskCreationBinder binder = new DiskCreationBinder(json);
       
binder.bindToRequest(HttpRequest.builder().method("GET").endpoint("http://momma";).build(),
 null);
    }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolCreationBinderTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolCreationBinderTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolCreationBinderTest.java
index 4367712..2c756c0 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolCreationBinderTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/binders/TargetPoolCreationBinderTest.java
@@ -19,7 +19,7 @@ package org.jclouds.googlecomputeengine.binders;
 import static org.testng.Assert.assertEquals;
 
 import java.net.URI;
-import java.util.Set;
+import java.util.List;
 import java.util.Map;
 
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineExpectTest;
@@ -30,8 +30,8 @@ import org.jclouds.json.Json;
 import org.jclouds.json.internal.GsonWrapper;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
 import com.google.gson.Gson;
 
 
@@ -41,8 +41,8 @@ import com.google.gson.Gson;
 @Test(groups = "unit", testName = "TargetPoolCreationBinderTest")
 public class TargetPoolCreationBinderTest extends 
BaseGoogleComputeEngineExpectTest<Object>{
 
-   private static final Set<URI> FAKE_HEALTH_CHECKS = 
ImmutableSet.of(URI.create("https://www.googleapis.com/compute/v1/projects/"; +
-                                       
"debian-cloud/global/images/backports-debian-7-wheezy-v20141017"));
+   private static final List<URI> FAKE_HEALTH_CHECKS = ImmutableList.of(
+         
URI.create("https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/backports-debian-7-wheezy-v20141017";));
    private static SessionAffinityValue SESSION_AFFINITY = 
SessionAffinityValue.CLIENT_IP_PROTO;
    private static float FAILOVER_RATIO = (float) 0.4;
    private static String DESCRIPTION = "This is a test!";

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
index f6329a7..eef70c9 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
@@ -22,10 +22,10 @@ import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPU
 import static 
org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_BOOT_DISK_SUFFIX;
 import static 
org.jclouds.googlecomputeengine.features.GlobalOperationApiExpectTest.GET_GLOBAL_OPERATION_REQUEST;
 import static 
org.jclouds.googlecomputeengine.features.GlobalOperationApiExpectTest.GET_GLOBAL_OPERATION_RESPONSE;
-import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_DEBIAN_IMAGES_REQUEST;
-import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_DEBIAN_IMAGES_RESPONSE;
 import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_CENTOS_IMAGES_REQUEST;
 import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_CENTOS_IMAGES_RESPONSE;
+import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_DEBIAN_IMAGES_REQUEST;
+import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_DEBIAN_IMAGES_RESPONSE;
 import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_PROJECT_IMAGES_REQUEST;
 import static 
org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_PROJECT_IMAGES_RESPONSE;
 import static 
org.jclouds.googlecomputeengine.features.InstanceApiExpectTest.LIST_CENTRAL1B_INSTANCES_REQUEST;
@@ -75,11 +75,9 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 
-
-@Test(groups = "unit")
+@Test(groups = "unit", testName = "GoogleComputeEngineServiceExpectTest")
 public class GoogleComputeEngineServiceExpectTest extends 
BaseGoogleComputeEngineServiceExpectTest {
 
-
    private HttpRequest INSERT_NETWORK_REQUEST = HttpRequest
            .builder()
            .method("POST")
@@ -90,20 +88,6 @@ public class GoogleComputeEngineServiceExpectTest extends 
BaseGoogleComputeEngin
                    MediaType.APPLICATION_JSON))
            .build();
 
-   private HttpRequest INSERT_FIREWALL_REQUEST = HttpRequest
-           .builder()
-           .method("POST")
-           
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/global/firewalls";)
-           .addHeader("Accept", "application/json")
-           .addHeader("Authorization", "Bearer " + TOKEN)
-           
.payload(payloadFromStringWithContentType("{\"name\":\"jclouds-test\",\"network\":\"https://www.googleapis";
 +
-                   
".com/compute/v1/projects/myproject/global/networks/jclouds-test\"," +
-                   
"\"sourceRanges\":[\"10.0.0.0/8\",\"0.0.0.0/0\"],\"sourceTags\":[\"aTag\"],\"allowed\":[{\"IPProtocol\":\"tcp\","
 +
-                   "\"ports\":[\"22\"]}," +
-                   "{\"IPProtocol\":\"udp\",\"ports\":[\"22\"]}]}",
-                   MediaType.APPLICATION_JSON))
-           .build();
-
    private HttpResponse GET_NETWORK_RESPONSE = 
HttpResponse.builder().statusCode(200)
            .payload(payloadFromStringWithContentType("{\n" +
                    " \"kind\": \"compute#network\",\n" +
@@ -202,33 +186,20 @@ public class GoogleComputeEngineServiceExpectTest extends 
BaseGoogleComputeEngin
               .addHeader("Authorization", "Bearer " + TOKEN).build();
    }
 
-
-
-   private HttpRequest createInstanceRequestForInstance(String instanceName, 
String groupName,
-                                                        String networkName, 
String publicKey) {
-      return HttpRequest
-              .builder()
-              .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances";)
-              .addHeader("Accept", "application/json")
-              .addHeader("Authorization", "Bearer " + TOKEN)
-              .payload(payloadFromStringWithContentType("{\"name\":\"" + 
instanceName + "\"," +
-                                                        
"\"machineType\":\"https://www.googleapis"; +
-                                                        
".com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro\","
 +
-                                                        
"\"serviceAccounts\":[]," +
-                                                        
"\"networkInterfaces\":[{\"network\":\"https://www.googleapis"; +
-                                                        
".com/compute/v1/projects/myproject/global/networks/" + networkName + "\"," +
-                                                        
"\"accessConfigs\":[{\"type\":\"ONE_TO_ONE_NAT\"}]}]," +
-                                                        
"\"disks\":[{\"mode\":\"READ_WRITE\",\"source\":\"https://www.googleapis.com/"; +
-                                                        
"compute/v1/projects/myproject/zones/us-central1-a/disks/" + instanceName +
-                                                        "-" + 
GCE_BOOT_DISK_SUFFIX + 
"\",\"deleteOnTerminate\":true,\"boot\":true,\"type\":\"PERSISTENT\"}]," +
-                                                        
"\"metadata\":{\"kind\":\"compute#metadata\",\"items\":[{\"key\":\"sshKeys\"," +
-                                                        "\"value\":\"jclouds:" 
+
-                                                        publicKey + " 
jclouds@localhost\"},{\"key\":\"jclouds-group\"," +
-                                                        "\"value\":\"" + 
groupName + "\"},{\"key\":\"jclouds-image\",\"value\":\"https://www.googleapis"; 
+
-                                                        
".com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140718\"},"
 +
-                                                        
"{\"key\":\"jclouds-delete-boot-disk\",\"value\":\"true\"}]}}",
-                                                        
MediaType.APPLICATION_JSON)).build();
+   private HttpRequest createInstanceRequestForInstance(String instanceName, 
String groupName, String networkName,
+         String publicKey) {
+      return HttpRequest.builder().method("POST")
+            
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances";)
+            .addHeader("Accept", 
"application/json").addHeader("Authorization", "Bearer " + TOKEN).payload(
+                  payloadFromStringWithContentType("{\"name\":\"" + 
instanceName
+                              + 
"\",\"machineType\":\"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro\",\"serviceAccounts\":[],\"disks\":[{\"type\":\"PERSISTENT\",\"mode\":\"READ_WRITE\",\"source\":\"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/";
+                              + instanceName + "-" + GCE_BOOT_DISK_SUFFIX
+                              + 
"\",\"autoDelete\":true,\"boot\":true}],\"networkInterfaces\":[{\"network\":\"https://www.googleapis.com/compute/v1/projects/myproject/global/networks/";
+                              + networkName
+                              + 
"\",\"accessConfigs\":[{\"type\":\"ONE_TO_ONE_NAT\"}]}],\"metadata\":{\"kind\":\"compute#metadata\",\"items\":[{\"key\":\"sshKeys\",\"value\":\"jclouds:"
+                              + publicKey + " 
jclouds@localhost\"},{\"key\":\"jclouds-group\",\"value\":\"" + groupName
+                              + 
"\"},{\"key\":\"jclouds-image\",\"value\":\"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140718\"},{\"key\":\"jclouds-delete-boot-disk\",\"value\":\"true\"}]}}";,
+                        MediaType.APPLICATION_JSON)).build();
    }
 
    private HttpRequest getInstanceRequestForInstance(String instanceName) {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
index 8cb05f2..3d29f08 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceLiveTest.java
@@ -20,6 +20,7 @@ import static com.google.common.collect.Iterables.contains;
 import static org.jclouds.oauth.v2.OAuthTestUtils.setCredential;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
+
 import java.util.Properties;
 import java.util.Set;
 
@@ -67,8 +68,8 @@ public class GoogleComputeEngineServiceLiveTest extends 
BaseComputeServiceLiveTe
       ImmutableSet.Builder<String> deprecatedMachineTypes = 
ImmutableSet.builder();
       for (MachineType machine : api.getMachineTypeApi(userProject.get())
               .listInZone(DEFAULT_ZONE_NAME).concat()) {
-         if (machine.getDeprecated().isPresent()) {
-            deprecatedMachineTypes.add(machine.getId());
+         if (machine.deprecated() != null) {
+            deprecatedMachineTypes.add(machine.id());
          }
       }
       ImmutableSet<String> deprecatedMachineTypeIds = 
deprecatedMachineTypes.build();

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/CreateNetworkIfNeededTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/CreateNetworkIfNeededTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/CreateNetworkIfNeededTest.java
new file mode 100644
index 0000000..101758f
--- /dev/null
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/CreateNetworkIfNeededTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.compute.functions;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.compute.domain.NetworkAndAddressRange;
+import org.jclouds.googlecomputeengine.config.UserProject;
+import org.jclouds.googlecomputeengine.domain.Network;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.features.GlobalOperationApi;
+import org.jclouds.googlecomputeengine.features.NetworkApi;
+import org.jclouds.googlecomputeengine.parse.ParseGlobalOperationTest;
+import org.jclouds.googlecomputeengine.predicates.GlobalOperationDonePredicate;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Provides;
+
+@Test
+public class CreateNetworkIfNeededTest {
+
+   private static final String BASE_URL = 
"https://www.googleapis.com/compute/v1/projects";;
+
+   public void testApply() {
+      GoogleComputeEngineApi api = createMock(GoogleComputeEngineApi.class);
+      NetworkApi nwApi = createMock(NetworkApi.class);
+      GlobalOperationApi globalApi = createMock(GlobalOperationApi.class);
+
+      Network network = Network.create( //
+            "abcd", // id
+            URI.create(BASE_URL + "/myproject/global/networks/this-network"), 
// selfLink
+            "this-network", // name
+            null, // description
+            "0.0.0.0/0", // rangeIPv4
+            null // gatewayIPv4
+      );
+
+      Operation createOp = new ParseGlobalOperationTest().expected();
+
+      Supplier<String> userProject = new Supplier<String>() {
+         @Override
+         public String get() {
+            return "myproject";
+         }
+      };
+
+      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
+      
expect(api.getGlobalOperationApi(userProject.get())).andReturn(globalApi).atLeastOnce();
+
+      expect(nwApi.createInIPv4Range("this-network", "0.0.0.0/0")) 
.andReturn(createOp);
+      expect(globalApi.get(createOp.name())).andReturn(createOp);
+      expect(nwApi.get("this-network")).andReturn(null);
+      expect(nwApi.get("this-network")).andReturn(network);
+
+      replay(api, nwApi, globalApi);
+
+      NetworkAndAddressRange input = 
NetworkAndAddressRange.create("this-network", "0.0.0.0/0", null);
+
+      GlobalOperationDonePredicate pred = globalOperationDonePredicate(api, 
userProject);
+
+      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
+
+      assertEquals(creator.apply(input), network);
+
+      verify(api, nwApi, globalApi);
+   }
+
+   public void testApplyWithGateway() {
+      GoogleComputeEngineApi api = createMock(GoogleComputeEngineApi.class);
+      NetworkApi nwApi = createMock(NetworkApi.class);
+      GlobalOperationApi globalApi = createMock(GlobalOperationApi.class);
+
+      Network network = Network.create( //
+            "abcd", // id
+            URI.create(BASE_URL + "/myproject/global/networks/this-network"), 
// selfLink
+            "this-network", // name
+            null, // description
+            "0.0.0.0/0", // rangeIPv4
+            "1.2.3.4" // gatewayIPv4
+      );
+
+      Operation createOp = new ParseGlobalOperationTest().expected();
+
+      Supplier<String> userProject = new Supplier<String>() {
+         @Override
+         public String get() {
+            return "myproject";
+         }
+      };
+
+      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
+      
expect(api.getGlobalOperationApi(userProject.get())).andReturn(globalApi).atLeastOnce();
+
+      expect(nwApi.createInIPv4RangeWithGateway("this-network", "0.0.0.0/0", 
"1.2.3.4")).andReturn(createOp);
+      expect(globalApi.get(createOp.name())).andReturn(createOp);
+      expect(nwApi.get("this-network")).andReturn(null);
+      expect(nwApi.get("this-network")).andReturn(network);
+
+      replay(api, nwApi, globalApi);
+
+      NetworkAndAddressRange input = 
NetworkAndAddressRange.create("this-network", "0.0.0.0/0", "1.2.3.4");
+
+      GlobalOperationDonePredicate pred = globalOperationDonePredicate(api, 
userProject);
+
+      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
+
+      assertEquals(creator.apply(input), network);
+
+      verify(api, nwApi, globalApi);
+   }
+
+   private GlobalOperationDonePredicate globalOperationDonePredicate(final 
GoogleComputeEngineApi api,
+         final Supplier<String> userProject) {
+      return Guice.createInjector(new AbstractModule() { // Rather than 
opening ctor public
+         @Override protected void configure() {
+            bind(GoogleComputeEngineApi.class).toInstance(api);
+         }
+
+         @Provides @UserProject Supplier<String> project() {
+            return userProject;
+         }
+      }).getInstance(GlobalOperationDonePredicate.class);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FindNetworkOrCreateTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FindNetworkOrCreateTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FindNetworkOrCreateTest.java
new file mode 100644
index 0000000..3037a5e
--- /dev/null
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FindNetworkOrCreateTest.java
@@ -0,0 +1,149 @@
+/*
+ * 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.compute.functions;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.compute.domain.NetworkAndAddressRange;
+import org.jclouds.googlecomputeengine.config.UserProject;
+import org.jclouds.googlecomputeengine.domain.Network;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.features.GlobalOperationApi;
+import org.jclouds.googlecomputeengine.features.NetworkApi;
+import org.jclouds.googlecomputeengine.parse.ParseGlobalOperationTest;
+import org.jclouds.googlecomputeengine.predicates.GlobalOperationDonePredicate;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.LoadingCache;
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Provides;
+
+@Test
+public class FindNetworkOrCreateTest {
+   private static final String BASE_URL = 
"https://www.googleapis.com/compute/v1/projects";;
+   private static final Network NETWORK = Network.create( //
+         "abcd", // id
+         URI.create(BASE_URL + "/myproject/global/networks/this-network"), // 
selfLink
+         "this-network", // name
+         null, // description
+         "0.0.0.0/0", // rangeIPv4
+         null // gatewayIPv4
+   );
+
+   public void testLoadExisting() {
+      GoogleComputeEngineApi api = createMock(GoogleComputeEngineApi.class);
+      NetworkApi nwApi = createMock(NetworkApi.class);
+
+      Supplier<String> userProject = new Supplier<String>() {
+         @Override
+         public String get() {
+            return "myproject";
+         }
+      };
+
+      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
+
+      expect(nwApi.get("this-network")).andReturn(NETWORK);
+
+      replay(api, nwApi);
+
+      NetworkAndAddressRange input = 
NetworkAndAddressRange.create("this-network", "0.0.0.0/0", null);
+
+      GlobalOperationDonePredicate pred = globalOperationDonePredicate(api, 
userProject);
+
+      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
+
+      FindNetworkOrCreate loader = new FindNetworkOrCreate(api, creator, 
userProject);
+
+      LoadingCache<NetworkAndAddressRange, Network> cache = 
CacheBuilder.newBuilder().build(loader);
+
+      assertEquals(cache.getUnchecked(input), NETWORK);
+
+      // Second call is to ensure we only need to make the API calls once.
+      assertEquals(cache.getUnchecked(input), NETWORK);
+
+      verify(api, nwApi);
+   }
+
+   public void testLoadNew() {
+      GoogleComputeEngineApi api = createMock(GoogleComputeEngineApi.class);
+      NetworkApi nwApi = createMock(NetworkApi.class);
+      GlobalOperationApi globalApi = createMock(GlobalOperationApi.class);
+
+      Operation createOp = new ParseGlobalOperationTest().expected();
+
+      Supplier<String> userProject = new Supplier<String>() {
+         @Override
+         public String get() {
+            return "myproject";
+         }
+      };
+
+      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
+      
expect(api.getGlobalOperationApi(userProject.get())).andReturn(globalApi).atLeastOnce();
+
+      expect(nwApi.createInIPv4Range("this-network", 
"0.0.0.0/0")).andReturn(createOp);
+      expect(globalApi.get(createOp.name())).andReturn(createOp);
+      // pre-creation
+      expect(nwApi.get("this-network")).andReturn(null).times(2);
+      // post-creation
+      expect(nwApi.get("this-network")).andReturn(NETWORK);
+
+      replay(api, nwApi, globalApi);
+
+      NetworkAndAddressRange input = 
NetworkAndAddressRange.create("this-network", "0.0.0.0/0", null);
+
+      GlobalOperationDonePredicate pred = globalOperationDonePredicate(api, 
userProject);
+
+      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
+
+      FindNetworkOrCreate loader = new FindNetworkOrCreate(api, creator, 
userProject);
+
+      LoadingCache<NetworkAndAddressRange, Network> cache = 
CacheBuilder.newBuilder().build(loader);
+
+      assertEquals(cache.getUnchecked(input), NETWORK);
+
+      // Second call is to ensure we only need to make the API calls once.
+      assertEquals(cache.getUnchecked(input), NETWORK);
+
+      verify(api, nwApi, globalApi);
+   }
+
+   private GlobalOperationDonePredicate globalOperationDonePredicate(final 
GoogleComputeEngineApi api,
+         final Supplier<String> userProject) {
+      return Guice.createInjector(new AbstractModule() { // Rather than 
opening ctor public
+         @Override protected void configure() {
+            bind(GoogleComputeEngineApi.class).toInstance(api);
+         }
+
+         @Provides @UserProject Supplier<String> project() {
+            return userProject;
+         }
+      }).getInstance(GlobalOperationDonePredicate.class);
+   }
+}
+

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermissionTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermissionTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermissionTest.java
index 62f9260..811abd3 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermissionTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermissionTest.java
@@ -20,7 +20,6 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 
 import java.net.URI;
-import java.util.Date;
 
 import org.jclouds.googlecomputeengine.domain.Firewall;
 import org.jclouds.net.domain.IpPermission;
@@ -29,45 +28,45 @@ import org.testng.annotations.Test;
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
+@Test
 public class FirewallToIpPermissionTest {
 
-   @Test
    public void testApply() {
-
       Firewall fw = fwForTest();
 
       FirewallToIpPermission converter = new FirewallToIpPermission();
 
       Iterable<IpPermission> perms = converter.apply(fw);
 
-      assertEquals(Iterables.size(perms), 3, "There should be three 
IpPermissions but there is only " + Iterables.size(perms));
+      assertEquals(Iterables.size(perms), 3,
+            "There should be three IpPermissions but there is only " + 
Iterables.size(perms));
 
-      assertTrue(Iterables.any(perms, 
Predicates.and(hasProtocol(IpProtocol.TCP),
-              hasStartAndEndPort(1, 10))), "No permission found for TCP, ports 
1-10");
-      assertTrue(Iterables.any(perms, 
Predicates.and(hasProtocol(IpProtocol.TCP),
-              hasStartAndEndPort(33, 33))), "No permission found for TCP, port 
33");
-      assertTrue(Iterables.any(perms, hasProtocol(IpProtocol.ICMP)),
-              "No permission found for ICMP");
+      assertTrue(Iterables.any(perms, 
Predicates.and(hasProtocol(IpProtocol.TCP), hasStartAndEndPort(1, 10))),
+            "No permission found for TCP, ports 1-10");
+      assertTrue(Iterables.any(perms, 
Predicates.and(hasProtocol(IpProtocol.TCP), hasStartAndEndPort(33, 33))),
+            "No permission found for TCP, port 33");
+      assertTrue(Iterables.any(perms, hasProtocol(IpProtocol.ICMP)), "No 
permission found for ICMP");
    }
 
    public static Firewall fwForTest() {
-      Firewall.Builder builder = Firewall.builder();
-
-      builder.addSourceRange("0.0.0.0/0");
-      builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.TCP)
-              .addPortRange(1, 10).build());
-      builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.TCP)
-              .addPort(33).build());
-      
builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.ICMP).build());
-      builder.id("abcd");
-      
builder.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/firewalls/jclouds-test";));
-      
builder.network(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/jclouds-test";));
-      builder.creationTimestamp(new Date());
-      builder.name("jclouds-test");
-
-      return builder.build();
+      String baseUrl = "https://www.googleapis.com/compute/v1/projects";;
+      return Firewall.create( //
+            "abcd", // id
+            URI.create(baseUrl + "/myproject/global/firewalls/jclouds-test"), 
// selfLink
+            "jclouds-test", // name
+            null, // description
+            URI.create(baseUrl + "/myproject/global/networks/jclouds-test"), 
// network
+            ImmutableList.of("0.0.0.0/0"), // sourceRanges
+            null, // sourceTags
+            null, // targetTags
+            ImmutableList.of( // allowed
+                  Firewall.Rule.create("tcp", ImmutableList.of("1-10")), //
+                  Firewall.Rule.create("tcp", ImmutableList.of("33")), //
+                  Firewall.Rule.create("icmp", ImmutableList.<String>of()) //
+            ));
    }
 
    public static Predicate<IpPermission> hasProtocol(final IpProtocol 
protocol) {
@@ -89,5 +88,4 @@ public class FirewallToIpPermissionTest {
          }
       };
    }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImageTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImageTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImageTest.java
index 239cea5..959ce15 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImageTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImageTest.java
@@ -25,36 +25,38 @@ import org.jclouds.compute.domain.OsFamily;
 import org.jclouds.googlecomputeengine.domain.Image;
 import org.testng.annotations.Test;
 
-@Test(groups = "unit")
+@Test(groups = "unit", testName = "GoogleComputeEngineImageToImageTest")
 public class GoogleComputeEngineImageToImageTest {
-
-   Image.Builder imageBuilder = Image.builder()
-           .id("1234")
-           .selfLink(URI.create("http://test.com";))
-           .sourceType("RAW")
-           .description("")
-           
.rawDisk(Image.RawDisk.builder().source("").containerType("TAR").build());
-
    public void testArbitratyImageName() {
       GoogleComputeEngineImageToImage imageToImage = new 
GoogleComputeEngineImageToImage();
-      Image image = imageBuilder.name("arbitratyname").build();
+      Image image = image("arbitratyname");
       org.jclouds.compute.domain.Image transformed = imageToImage.apply(image);
-      assertEquals(transformed.getName(), image.getName());
-      assertEquals(transformed.getId(), image.getName());
-      assertEquals(transformed.getProviderId(), image.getId());
+      assertEquals(transformed.getName(), image.name());
+      assertEquals(transformed.getId(), image.name());
+      assertEquals(transformed.getProviderId(), image.id());
       assertSame(transformed.getOperatingSystem().getFamily(), OsFamily.LINUX);
    }
 
    public void testWellFormedImageName() {
       GoogleComputeEngineImageToImage imageToImage = new 
GoogleComputeEngineImageToImage();
-      Image image = imageBuilder.name("ubuntu-12-04-v123123").build();
+      Image image = image("ubuntu-12-04-v123123");
       org.jclouds.compute.domain.Image transformed = imageToImage.apply(image);
-      assertEquals(transformed.getName(), image.getName());
-      assertEquals(transformed.getId(), image.getName());
-      assertEquals(transformed.getProviderId(), image.getId());
+      assertEquals(transformed.getName(), image.name());
+      assertEquals(transformed.getId(), image.name());
+      assertEquals(transformed.getProviderId(), image.id());
       assertSame(transformed.getOperatingSystem().getFamily(), 
OsFamily.UBUNTU);
       assertEquals(transformed.getOperatingSystem().getVersion(), "12.04");
    }
 
-
+   private static Image image(String name) {
+      return Image.create( //
+            "1234", // id
+            URI.create("http://test.com/1234";), // selfLink
+            name, // name
+            "", // description
+            "RAW", // sourceType
+            Image.RawDisk.create(URI.create("foo"), "TAR", null), // rawDisk
+            null // deprecated
+      );
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
index 040f118..a0229ed 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
@@ -16,9 +16,8 @@
  */
 package org.jclouds.googlecomputeengine.compute.functions;
 
-import static org.easymock.EasyMock.createMock;
-import static org.testng.Assert.assertEquals;
 import static org.jclouds.compute.domain.Image.Status.AVAILABLE;
+import static org.testng.Assert.assertEquals;
 
 import java.net.URI;
 import java.util.Map;
@@ -35,14 +34,12 @@ import org.jclouds.compute.domain.Processor;
 import org.jclouds.compute.domain.Volume.Type;
 import org.jclouds.compute.domain.VolumeBuilder;
 import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.date.internal.SimpleDateFormatDateService;
 import org.jclouds.domain.Location;
 import org.jclouds.domain.LocationBuilder;
 import org.jclouds.domain.LocationScope;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.compute.domain.InstanceInZone;
 import org.jclouds.googlecomputeengine.domain.Instance;
-import org.jclouds.googlecomputeengine.domain.InstanceInZone;
-import org.jclouds.googlecomputeengine.domain.Metadata;
+import org.jclouds.googlecomputeengine.parse.ParseInstanceTest;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -127,43 +124,7 @@ public class InstanceInZoneToNodeMetadataTest {
 
    @BeforeMethod
    public final void setup() {
-      instance = Instance.builder()
-         .id("13051190678907570425")
-         .creationTimestamp(new 
SimpleDateFormatDateService().iso8601DateParse("2012-11-25T23:48:20.758"))
-         .selfLink(URI.create("https://www.googleapis";
-            + 
".com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-0"))
-         .description("desc")
-         .name("test-0")
-         
.machineType(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/";
-               + "machineTypes/n1-standard-1"))
-         .status(Instance.Status.RUNNING)
-         
.zone(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a";))
-         .addNetworkInterface(
-               Instance.NetworkInterface.builder()
-                  .name("nic0")
-                  .networkIP("10.240.121.115")
-                  .network(URI.create("https://www.googleapis";
-                        + 
".com/compute/v1/projects/myproject/global/networks/default"))
-                  .build())
-         .addDisk(
-               Instance.PersistentAttachedDisk.builder()
-               .index(0)
-               .mode(Instance.PersistentAttachedDisk.Mode.READ_WRITE)
-               .deviceName("test")
-               .source(URI.create("https://www.googleapis";
-                  + 
".com/compute/v1/projects/myproject/zones/us-central1-a/disks/test"))
-               .boot(true)
-               .build())
-         
.tags(Instance.Tags.builder().fingerprint("abcd").addItem("aTag").addItem("Group-port-42").build())
-         .metadata(Metadata.builder()
-               .items(ImmutableMap.of("aKey", "aValue",
-                  "jclouds-image",
-                  
"https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140718";,
-                  "jclouds-delete-boot-disk", "true"))
-               .fingerprint("efgh")
-               .build())
-               
.addServiceAccount(Instance.ServiceAccount.builder().email("default").addScopes("myscope").build())
-               .build();
+      instance = new ParseInstanceTest().expected();
 
       images = ImmutableSet.of(new ImageBuilder()
          .id("1")
@@ -232,13 +193,6 @@ public class InstanceInZoneToNodeMetadataTest {
          }
       };
 
-      Supplier<String> userProjectSupplier = new Supplier<String>() {
-         @Override
-         public String get() {
-            return "userProject";
-         }
-      };
-
       GroupNamingConvention.Factory namingConventionFactory =
          new GroupNamingConvention.Factory() {
             @Override
@@ -259,9 +213,7 @@ public class InstanceInZoneToNodeMetadataTest {
             imageSupplier,
             hardwareSupplier,
             locationSupplier,
-            new FirewallTagNamingConvention.Factory(namingConventionFactory),
-            createMock(GoogleComputeEngineApi.class),
-            userProjectSupplier);
+            new FirewallTagNamingConvention.Factory(namingConventionFactory));
    }
 
    @Test

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroupTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroupTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroupTest.java
index 3662fe9..a3f3319 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroupTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroupTest.java
@@ -25,7 +25,6 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 
 import java.net.URI;
-import java.util.Date;
 
 import org.jclouds.collect.IterableWithMarkers;
 import org.jclouds.collect.PagedIterables;
@@ -62,20 +61,19 @@ public class NetworkToSecurityGroupTest {
       ListOptions options = new Builder().filter("network eq .*/jclouds-test");
       expect(api.getFirewallApi(projectSupplier.get()))
               .andReturn(fwApi);
-      
expect(fwApi.list(options)).andReturn(PagedIterables.of(IterableWithMarkers.from(ImmutableSet.of(FirewallToIpPermissionTest.fwForTest()))));
+      expect(fwApi.list(options)).andReturn(
+            
PagedIterables.onlyPage(IterableWithMarkers.from(ImmutableSet.of(FirewallToIpPermissionTest.fwForTest()))));
 
       replay(api, fwApi);
-      Network.Builder builder = Network.builder();
 
-      builder.id("abcd");
-      
builder.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/jclouds-test";));
-      builder.creationTimestamp(new Date());
-      builder.description("some description");
-      builder.gatewayIPv4("1.2.3.4");
-      builder.IPv4Range("0.0.0.0/0");
-      builder.name("jclouds-test");
-
-      Network network = builder.build();
+      Network network = Network.create( //
+            "abcd", // id
+            
URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/jclouds-test";),
+            "jclouds-test", // name
+            "some description", // description
+            "0.0.0.0/0", // rangeIPv4
+            "1.2.3.4" // gatewayIPv4
+      );
 
       NetworkToSecurityGroup netToSg = new NetworkToSecurityGroup(fwToPerm, 
api, projectSupplier);
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/loaders/FindNetworkOrCreateTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/loaders/FindNetworkOrCreateTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/loaders/FindNetworkOrCreateTest.java
deleted file mode 100644
index 655f763..0000000
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/loaders/FindNetworkOrCreateTest.java
+++ /dev/null
@@ -1,141 +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.compute.loaders;
-
-import static com.google.common.base.Optional.fromNullable;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.testng.Assert.assertEquals;
-
-import java.net.URI;
-
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.domain.Network;
-import org.jclouds.googlecomputeengine.domain.Operation;
-import org.jclouds.googlecomputeengine.domain.internal.NetworkAndAddressRange;
-import org.jclouds.googlecomputeengine.features.GlobalOperationApi;
-import org.jclouds.googlecomputeengine.features.NetworkApi;
-import org.jclouds.googlecomputeengine.functions.CreateNetworkIfNeeded;
-import org.jclouds.googlecomputeengine.predicates.GlobalOperationDonePredicate;
-import org.jclouds.http.HttpResponse;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Supplier;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.LoadingCache;
-
-public class FindNetworkOrCreateTest {
-
-   @Test
-   public void testLoadExisting() {
-      final GoogleComputeEngineApi api = 
createMock(GoogleComputeEngineApi.class);
-      final NetworkApi nwApi = createMock(NetworkApi.class);
-
-      Network network = Network.builder().IPv4Range("0.0.0.0/0")
-              .id("abcd").name("this-network")
-              
.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/this-network";))
-              .build();
-
-      final Supplier<String> userProject = new Supplier<String>() {
-         @Override
-         public String get() {
-            return "myproject";
-         }
-      };
-
-      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
-
-      expect(nwApi.get("this-network")).andReturn(network);
-
-      replay(api, nwApi);
-
-      NetworkAndAddressRange input = new 
NetworkAndAddressRange("this-network", "0.0.0.0/0", null);
-
-      GlobalOperationDonePredicate pred = new 
GlobalOperationDonePredicate(api, userProject);
-
-      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
-
-      FindNetworkOrCreate loader = new FindNetworkOrCreate(api, creator, 
userProject);
-
-      LoadingCache<NetworkAndAddressRange, Network> cache = 
CacheBuilder.newBuilder().build(loader);
-
-      assertEquals(cache.getUnchecked(input), network);
-
-      // Second call is to ensure we only need to make the API calls once.
-      assertEquals(cache.getUnchecked(input), network);
-
-      verify(api, nwApi);
-   }
-
-   @Test
-   public void testLoadNew() {
-      final GoogleComputeEngineApi api = 
createMock(GoogleComputeEngineApi.class);
-      final NetworkApi nwApi = createMock(NetworkApi.class);
-      final GlobalOperationApi globalApi = 
createMock(GlobalOperationApi.class);
-
-      Network network = Network.builder().IPv4Range("0.0.0.0/0")
-              .id("abcd").name("this-network")
-              
.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/this-network";))
-              .build();
-
-      Operation createOp = createMock(Operation.class);
-
-      final Supplier<String> userProject = new Supplier<String>() {
-         @Override
-         public String get() {
-            return "myproject";
-         }
-      };
-
-      
expect(api.getNetworkApi(userProject.get())).andReturn(nwApi).atLeastOnce();
-      
expect(api.getGlobalOperationApi(userProject.get())).andReturn(globalApi).atLeastOnce();
-
-      expect(nwApi.createInIPv4Range("this-network", "0.0.0.0/0"))
-              .andReturn(createOp);
-      expect(globalApi.get("insert-op")).andReturn(createOp);
-      // pre-creation
-      expect(nwApi.get("this-network")).andReturn(null).times(2);
-      // post-creation
-      expect(nwApi.get("this-network")).andReturn(network);
-
-      expect(createOp.getName()).andReturn("insert-op");
-      expect(createOp.getStatus()).andReturn(Operation.Status.DONE);
-      
expect(createOp.getHttpError()).andReturn(fromNullable((HttpResponse)null));
-      replay(api, nwApi, createOp, globalApi);
-
-      NetworkAndAddressRange input = new 
NetworkAndAddressRange("this-network", "0.0.0.0/0", null);
-
-      GlobalOperationDonePredicate pred = new 
GlobalOperationDonePredicate(api, userProject);
-
-      CreateNetworkIfNeeded creator = new CreateNetworkIfNeeded(api, 
userProject, pred, 100l, 100l);
-
-      FindNetworkOrCreate loader = new FindNetworkOrCreate(api, creator, 
userProject);
-
-      LoadingCache<NetworkAndAddressRange, Network> cache = 
CacheBuilder.newBuilder().build(loader);
-
-      assertEquals(cache.getUnchecked(input), network);
-
-      // Second call is to ensure we only need to make the API calls once.
-      assertEquals(cache.getUnchecked(input), network);
-
-      verify(api, nwApi, globalApi, createOp);
-
-   }
-}
-

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiExpectTest.java
index 28c3657..e6e0c02 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiExpectTest.java
@@ -27,19 +27,19 @@ import javax.ws.rs.core.MediaType;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpectTest;
 import org.jclouds.googlecomputeengine.parse.ParseAddressListTest;
 import org.jclouds.googlecomputeengine.parse.ParseAddressTest;
-import org.jclouds.googlecomputeengine.parse.ParseOperationTest;
+import org.jclouds.googlecomputeengine.parse.ParseRegionOperationTest;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.testng.annotations.Test;
 
-@Test(groups = "unit")
+@Test(groups = "unit", testName = "AddressApiExpectTest")
 public class AddressApiExpectTest extends BaseGoogleComputeEngineApiExpectTest 
{
 
    public void testGetAddressResponseIs2xx() throws Exception {
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/addresses/test-ip1";)
+              .endpoint(BASE_URL + 
"/myproject/regions/us-central1/addresses/test-ip1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -57,7 +57,7 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/addresses/test-ip1";)
+              .endpoint(BASE_URL + 
"/myproject/regions/us-central1/addresses/test-ip1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -73,7 +73,7 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest insert = HttpRequest
               .builder()
               .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/addresses";)
+              .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               
.payload(payloadFromResourceWithContentType("/address_insert.json", 
MediaType.APPLICATION_JSON))
@@ -86,15 +86,14 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
               TOKEN_RESPONSE, insert,
               insertAddressResponse).getAddressApi("myproject");
 
-      assertEquals(api.createInRegion("us-central1", "test-ip1"), new 
ParseOperationTest().expected());
+      assertEquals(api.createInRegion("us-central1", "test-ip1"), new 
ParseRegionOperationTest().expected());
    }
 
    public void testDeleteAddressResponseIs2xx() {
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/regions/us-central1/addresses/test-ip1")
+              .endpoint(BASE_URL + 
"/myproject/regions/us-central1/addresses/test-ip1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -105,15 +104,14 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
               TOKEN_RESPONSE, delete, 
deleteResponse).getAddressApi("myproject");
 
       assertEquals(api.deleteInRegion("us-central1", "test-ip1"),
-              new ParseOperationTest().expected());
+              new ParseRegionOperationTest().expected());
    }
 
    public void testDeleteAddressResponseIs4xx() {
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/regions/us-central1/addresses/test-ip1")
+              .endpoint(BASE_URL + 
"/myproject/regions/us-central1/addresses/test-ip1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -129,8 +127,7 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/regions/us-central1/addresses")
+              .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -148,8 +145,7 @@ public class AddressApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/regions/us-central1/addresses")
+              .endpoint(BASE_URL + "/myproject/regions/us-central1/addresses")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiLiveTest.java
index 94f2521..20b4f81 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/AddressApiLiveTest.java
@@ -48,7 +48,7 @@ public class AddressApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    public void testGetAddress() {
       Address address = api().getInRegion(DEFAULT_REGION_NAME, ADDRESS_NAME);
       assertNotNull(address);
-      assertEquals(address.getName(), ADDRESS_NAME);
+      assertEquals(address.name(), ADDRESS_NAME);
    }
 
    @Test(groups = "live", dependsOnMethods = "testGetAddress")

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
index 560f9e6..226815e 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiExpectTest.java
@@ -30,22 +30,22 @@ import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiExpect
 import org.jclouds.googlecomputeengine.options.DiskCreationOptions;
 import org.jclouds.googlecomputeengine.parse.ParseDiskListTest;
 import org.jclouds.googlecomputeengine.parse.ParseDiskTest;
-import org.jclouds.googlecomputeengine.parse.ParseOperationTest;
+import org.jclouds.googlecomputeengine.parse.ParseZoneOperationTest;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
-@Test(groups = "unit")
+@Test(groups = "unit", testName = "DiskApiExpectTest")
 public class DiskApiExpectTest extends BaseGoogleComputeEngineApiExpectTest {
-   public static final String IMAGE_URL = 
"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/images/foo";;
-   public static final String SSD_URL = 
"https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/diskTypes/pd-ssd";;
+   public static final String IMAGE_URL = BASE_URL + 
"/myproject/zones/us-central1-a/images/foo";
+   public static final String SSD_URL = BASE_URL + 
"/myproject/zones/us-central1-a/diskTypes/pd-ssd";
 
    public void testGetDiskResponseIs2xx() throws Exception {
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1";)
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -63,7 +63,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest get = HttpRequest
               .builder()
               .method("GET")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1";)
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -79,7 +79,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest insert = HttpRequest
               .builder()
               .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks";)
+              .endpoint(BASE_URL + "/myproject/zones/us-central1-a/disks")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               .payload(payloadFromResourceWithContentType("/disk_insert.json", 
MediaType.APPLICATION_JSON))
@@ -92,14 +92,14 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
               TOKEN_RESPONSE, insert,
               insertDiskResponse).getDiskApi("myproject");
 
-      assertEquals(api.createInZone("testimage1", 1, "us-central1-a"), new 
ParseOperationTest().expected());
+      assertEquals(api.createInZone("testimage1", 1, "us-central1-a"), new 
ParseZoneOperationTest().expected());
    }
 
    public void testInsertDiskFromImageResponseIs2xx() {
       HttpRequest insert = HttpRequest
               .builder()
               .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks";)
+              .endpoint(BASE_URL + "/myproject/zones/us-central1-a/disks")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               
.payload(payloadFromResourceWithContentType("/disk_insert_sourceImage.json", 
MediaType.APPLICATION_JSON))
@@ -113,14 +113,15 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
                                           
insertDiskResponse).getDiskApi("myproject");
 
       DiskCreationOptions diskCreationOptions = new 
DiskCreationOptions().sourceImage(URI.create(IMAGE_URL));
-      assertEquals(api.createInZone("testimage1", 1, "us-central1-a", 
diskCreationOptions), new ParseOperationTest().expected());
+      assertEquals(api.createInZone("testimage1", 1, "us-central1-a", 
diskCreationOptions),
+            new ParseZoneOperationTest().expected());
    }
 
    public void testInsertDiskSSDResponseIs2xx(){
       HttpRequest insert = HttpRequest
             .builder()
             .method("POST")
-            
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks";)
+            .endpoint(BASE_URL + "/myproject/zones/us-central1-a/disks")
             .addHeader("Accept", "application/json")
             .addHeader("Authorization", "Bearer " + TOKEN)
             
.payload(payloadFromResourceWithContentType("/disk_insert_ssd.json", 
MediaType.APPLICATION_JSON))
@@ -135,15 +136,14 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
 
     DiskCreationOptions diskCreationOptions = new 
DiskCreationOptions().type(URI.create(SSD_URL));
     assertEquals(api.createInZone("testimage1", 1,
-                                  "us-central1-a", diskCreationOptions), new 
ParseOperationTest().expected());
+                                  "us-central1-a", diskCreationOptions), new 
ParseZoneOperationTest().expected());
    }
 
    public void testCreateSnapshotResponseIs2xx() {
       HttpRequest createSnapshotRequest = HttpRequest
               .builder()
               .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks";
-                      + "/testimage1/createSnapshot")
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1/createSnapshot")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               
.payload(payloadFromResourceWithContentType("/disk_create_snapshot.json", 
MediaType.APPLICATION_JSON))
@@ -156,7 +156,8 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
               TOKEN_RESPONSE, createSnapshotRequest,
               createSnapshotResponse).getDiskApi("myproject");
 
-      assertEquals(api.createSnapshotInZone("us-central1-a", "testimage1", 
"test-snap"), new ParseOperationTest().expected());
+      assertEquals(api.createSnapshotInZone("us-central1-a", "testimage1", 
"test-snap"),
+            new ParseZoneOperationTest().expected());
    }
 
    @Test(expectedExceptions = ResourceNotFoundException.class)
@@ -164,8 +165,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest createSnapshotRequest = HttpRequest
               .builder()
               .method("POST")
-              
.endpoint("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks";
-                      + "/testimage1/createSnapshot")
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1/createSnapshot")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN)
               
.payload(payloadFromResourceWithContentType("/disk_create_snapshot.json", 
MediaType.APPLICATION_JSON))
@@ -184,8 +184,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1")
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -196,15 +195,14 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
               TOKEN_RESPONSE, delete, deleteResponse).getDiskApi("myproject");
 
       assertEquals(api.deleteInZone("us-central1-a", "testimage1"),
-              new ParseOperationTest().expected());
+              new ParseZoneOperationTest().expected());
    }
 
    public void testDeleteDiskResponseIs4xx() {
       HttpRequest delete = HttpRequest
               .builder()
               .method("DELETE")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1")
+              .endpoint(BASE_URL + 
"/myproject/zones/us-central1-a/disks/testimage1")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -220,8 +218,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/zones/us-central1-a/disks")
+              .endpoint(BASE_URL + "/myproject/zones/us-central1-a/disks")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 
@@ -239,8 +236,7 @@ public class DiskApiExpectTest extends 
BaseGoogleComputeEngineApiExpectTest {
       HttpRequest list = HttpRequest
               .builder()
               .method("GET")
-              .endpoint("https://www.googleapis"; +
-                      
".com/compute/v1/projects/myproject/zones/us-central1-a/disks")
+              .endpoint(BASE_URL + "/myproject/zones/us-central1-a/disks")
               .addHeader("Accept", "application/json")
               .addHeader("Authorization", "Bearer " + TOKEN).build();
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/b41b0d04/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiLiveTest.java
index 3db43fc..625b820 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/DiskApiLiveTest.java
@@ -77,9 +77,9 @@ public class DiskApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    }
 
    private void assertDiskEquals(Disk result) {
-      assertEquals(result.getName(), DISK_NAME);
-      assertEquals(result.getSizeGb(), sizeGb);
-      assertEquals(result.getZone(), getDefaultZoneUrl(userProject.get()));
+      assertEquals(result.name(), DISK_NAME);
+      assertEquals(result.sizeGb(), sizeGb);
+      assertEquals(result.zone(), getDefaultZoneUrl(userProject.get()));
    }
 
    @Test(groups = "live")
@@ -104,9 +104,9 @@ public class DiskApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    }
 
    private void assertSSDDiskEquals(Disk result) {
-      assertEquals(result.getName(), SSD_DISK_NAME);
-      assertEquals(result.getSizeGb(), sizeGb);
-      assertEquals(result.getZone(), getDefaultZoneUrl(userProject.get()));
-      assertEquals(result.getType().orNull(), 
getDiskTypeUrl(userProject.get(), DEFAULT_ZONE_NAME, "pd-ssd"));
+      assertEquals(result.name(), SSD_DISK_NAME);
+      assertEquals(result.sizeGb(), sizeGb);
+      assertEquals(result.zone(), getDefaultZoneUrl(userProject.get()));
+      assertEquals(result.type(), getDiskTypeUrl(userProject.get(), 
DEFAULT_ZONE_NAME, "pd-ssd"));
    }
 }

Reply via email to