You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2014/11/27 15:32:22 UTC

[07/24] jclouds-labs git commit: JCLOUDS-785: Leave only Abiquo skeleton to start coding Abiquo 3 provider

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java b/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
deleted file mode 100644
index c7f455d..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/environment/InfrastructureTestEnvironment.java
+++ /dev/null
@@ -1,493 +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.abiquo.environment;
-
-import static com.google.common.collect.Iterables.find;
-import static com.google.common.collect.Iterables.size;
-import static org.jclouds.abiquo.reference.AbiquoTestConstants.PREFIX;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.UUID;
-
-import org.jclouds.abiquo.AbiquoContext;
-import org.jclouds.abiquo.domain.config.License;
-import org.jclouds.abiquo.domain.enterprise.Enterprise;
-import org.jclouds.abiquo.domain.enterprise.Limits;
-import org.jclouds.abiquo.domain.enterprise.Role;
-import org.jclouds.abiquo.domain.enterprise.User;
-import org.jclouds.abiquo.domain.infrastructure.Datacenter;
-import org.jclouds.abiquo.domain.infrastructure.Datastore;
-import org.jclouds.abiquo.domain.infrastructure.Machine;
-import org.jclouds.abiquo.domain.infrastructure.NetworkInterface;
-import org.jclouds.abiquo.domain.infrastructure.Rack;
-import org.jclouds.abiquo.domain.infrastructure.RemoteService;
-import org.jclouds.abiquo.domain.infrastructure.StorageDevice;
-import org.jclouds.abiquo.domain.infrastructure.StorageDeviceMetadata;
-import org.jclouds.abiquo.domain.infrastructure.StoragePool;
-import org.jclouds.abiquo.domain.infrastructure.Tier;
-import org.jclouds.abiquo.domain.network.ExternalNetwork;
-import org.jclouds.abiquo.domain.network.NetworkServiceType;
-import org.jclouds.abiquo.domain.network.PublicNetwork;
-import org.jclouds.abiquo.domain.network.UnmanagedNetwork;
-import org.jclouds.abiquo.features.AdminApi;
-import org.jclouds.abiquo.features.ConfigApi;
-import org.jclouds.abiquo.features.EnterpriseApi;
-import org.jclouds.abiquo.features.InfrastructureApi;
-import org.jclouds.abiquo.features.services.AdministrationService;
-import org.jclouds.abiquo.util.Config;
-
-import com.abiquo.model.enumerator.HypervisorType;
-import com.google.common.base.Predicate;
-import com.google.common.io.LineProcessor;
-import com.google.common.io.Resources;
-
-/**
- * Test environment for infrastructure live tests.
- */
-public class InfrastructureTestEnvironment implements TestEnvironment {
-   /** The rest context. */
-   public AbiquoContext context;
-
-   // Environment data made public so tests can use them easily
-
-   public AdministrationService administrationService;
-
-   public InfrastructureApi infrastructureApi;
-
-   public EnterpriseApi enterpriseApi;
-
-   public AdminApi adminApi;
-
-   public ConfigApi configApi;
-
-   // Resources
-
-   public License license;
-
-   public Datacenter datacenter;
-
-   public PublicNetwork publicNetwork;
-
-   public ExternalNetwork externalNetwork;
-
-   public UnmanagedNetwork unmanagedNetwork;
-
-   public Iterable<RemoteService> remoteServices;
-
-   public Rack rack;
-
-   public Machine machine;
-
-   public Enterprise enterprise;
-
-   public StorageDevice storageDevice;
-
-   public StoragePool storagePool;
-
-   public Tier tier;
-
-   public User user;
-
-   public User enterpriseAdmin;
-
-   public Role role;
-
-   public Role anotherRole;
-
-   public InfrastructureTestEnvironment(final AbiquoContext context) {
-      super();
-      this.context = context;
-      this.administrationService = context.getAdministrationService();
-      this.context = context;
-      this.enterpriseApi = context.getApiContext().getApi().getEnterpriseApi();
-      this.infrastructureApi = context.getApiContext().getApi().getInfrastructureApi();
-      this.adminApi = context.getApiContext().getApi().getAdminApi();
-      this.configApi = context.getApiContext().getApi().getConfigApi();
-   }
-
-   @Override
-   public void setup() throws Exception {
-      // Configuration
-      createLicense();
-
-      // Intrastructure
-      createDatacenter();
-      createRack();
-      createMachine();
-      createStorageDevice();
-      createStoragePool();
-      createPublicNetwork();
-
-      // Enterprise
-      createEnterprise();
-      createRoles();
-      createUsers();
-
-      // Networking
-      createExternalNetwork();
-      createUnmanagedNetwork();
-   }
-
-   @Override
-   public void tearDown() throws Exception {
-      deleteUsers();
-
-      deleteRole(role);
-      deleteRole(anotherRole);
-
-      deleteUnmanagedNetwork();
-      deleteExternalNetwork();
-      deletePublicNetwork();
-      deleteStoragePool();
-      deleteStorageDevice();
-      deleteMachine();
-      deleteRack();
-      deleteDatacenter();
-      deleteEnterprise();
-
-      deleteLicense();
-   }
-
-   // Setup
-
-   protected void createLicense() throws IOException {
-      license = License.builder(context.getApiContext(), readLicense()).build();
-
-      license.add();
-      assertNotNull(license.getId());
-   }
-
-   protected void createDatacenter() {
-      // Assume a monolithic install
-      URI endpoint = URI.create(context.getApiContext().getProviderMetadata().getEndpoint());
-      String remoteServicesAddress = endpoint.getHost();
-
-      datacenter = Datacenter.builder(context.getApiContext()).name(randomName()).location("Honolulu")
-            .remoteServices(remoteServicesAddress).build();
-      datacenter.save();
-      assertNotNull(datacenter.getId());
-
-      remoteServices = datacenter.listRemoteServices();
-      assertEquals(size(remoteServices), 7);
-   }
-
-   protected void createMachine() {
-      String ip = Config.get("abiquo.hypervisor.address");
-      HypervisorType type = HypervisorType.valueOf(Config.get("abiquo.hypervisor.type"));
-      String user = Config.get("abiquo.hypervisor.user");
-      String pass = Config.get("abiquo.hypervisor.pass");
-      final String vswitchName = Config.get("abiquo.hypervisor.vswitch");
-      final String datastoreName = Config.get("abiquo.hypervisor.datastore");
-
-      machine = datacenter.discoverSingleMachine(ip, type, user, pass);
-
-      NetworkServiceType nst = datacenter.defaultNetworkServiceType();
-      NetworkInterface vswitch = find(machine.getNetworkInterfaces(), new Predicate<NetworkInterface>() {
-         @Override
-         public boolean apply(NetworkInterface input) {
-            return input.getName().equals(vswitchName);
-         }
-      });
-      vswitch.setNetworkServiceType(nst);
-
-      Datastore datastore = find(machine.getDatastores(), new Predicate<Datastore>() {
-         @Override
-         public boolean apply(Datastore input) {
-            return input.getName().equals(datastoreName);
-         }
-      });
-      datastore.setEnabled(true);
-
-      machine.setRack(rack);
-      machine.save();
-      assertNotNull(machine.getId());
-   }
-
-   protected void createRack() {
-      rack = Rack.builder(context.getApiContext(), datacenter).name(PREFIX + "Aloha").build();
-      rack.save();
-      assertNotNull(rack.getId());
-   }
-
-   protected void createStorageDevice() {
-      String ip = Config.get("abiquo.storage.address");
-      final String type = Config.get("abiquo.storage.type");
-      String user = Config.get("abiquo.storage.user");
-      String pass = Config.get("abiquo.storage.pass");
-
-      Iterable<StorageDeviceMetadata> devices = datacenter.listSupportedStorageDevices();
-      StorageDeviceMetadata metadata = find(devices, new Predicate<StorageDeviceMetadata>() {
-         @Override
-         public boolean apply(StorageDeviceMetadata input) {
-            return input.getType().equals(type);
-         }
-      });
-
-      storageDevice = StorageDevice.builder(context.getApiContext(), datacenter) //
-            .name(PREFIX + "Storage Device")//
-            .type(type)//
-            .managementIp(ip).managementPort(metadata.getDefaultManagementPort())//
-            .iscsiIp(ip).iscsiPort(metadata.getDefaultIscsiPort()) //
-            .username(user)//
-            .password(pass) //
-            .build();
-
-      storageDevice.save();
-      assertNotNull(storageDevice.getId());
-   }
-
-   protected void createStoragePool() {
-      final String pool = Config.get("abiquo.storage.pool");
-
-      storagePool = find(storageDevice.listRemoteStoragePools(), new Predicate<StoragePool>() {
-         @Override
-         public boolean apply(StoragePool input) {
-            return input.getName().equals(pool);
-         }
-      });
-      tier = find(datacenter.listTiers(), new Predicate<Tier>() {
-         @Override
-         public boolean apply(Tier input) {
-            return input.getName().equals("Default Tier 1");
-         }
-      });
-
-      storagePool.setTier(tier);
-      storagePool.save();
-
-      assertNotNull(storagePool.getUUID());
-   }
-
-   protected void createUsers() {
-      Iterable<Role> roles = administrationService.listRoles();
-      Role userRole = find(roles, role("USER"));
-      Role enterpriseAdminRole = find(roles, role("ENTERPRISE_ADMIN"));
-
-      user = User.builder(context.getApiContext(), enterprise, userRole).name(randomName(), randomName())
-            .nick("jclouds").authType("ABIQUO").description(randomName()).email(randomName() + "@abiquo.com")
-            .locale("en_US").password("user").build();
-
-      user.save();
-      assertNotNull(user.getId());
-      assertEquals(userRole.getId(), user.getRole().getId());
-
-      enterpriseAdmin = User.builder(context.getApiContext(), enterprise, enterpriseAdminRole)
-            .name(randomName(), randomName()).nick("jclouds-admin").authType("ABIQUO").description(randomName())
-            .email(randomName() + "@abiquo.com").locale("en_US").password("admin").build();
-
-      enterpriseAdmin.save();
-      assertNotNull(enterpriseAdmin.getId());
-      assertEquals(enterpriseAdminRole.getId(), enterpriseAdmin.getRole().getId());
-   }
-
-   protected void createRoles() {
-      role = Role.builder(context.getApiContext()).name(randomName()).blocked(false).build();
-      role.save();
-
-      anotherRole = Role.Builder.fromRole(role).build();
-      anotherRole.setName("Another role");
-      anotherRole.save();
-
-      assertNotNull(role.getId());
-      assertNotNull(anotherRole.getId());
-   }
-
-   protected void createEnterprise() {
-      enterprise = Enterprise.builder(context.getApiContext()).name(randomName()).build();
-      enterprise.save();
-      assertNotNull(enterprise.getId());
-      Limits limits = enterprise.allowDatacenter(datacenter);
-      assertNotNull(limits);
-   }
-
-   protected void createPublicNetwork() {
-      publicNetwork = PublicNetwork.builder(context.getApiContext(), datacenter).name("PublicNetwork")
-            .gateway("80.80.80.1").address("80.80.80.0").mask(24).tag(5).build();
-      publicNetwork.save();
-      assertNotNull(publicNetwork.getId());
-   }
-
-   protected void createExternalNetwork() {
-      externalNetwork = ExternalNetwork.builder(context.getApiContext(), datacenter, enterprise)
-            .name("ExternalNetwork").gateway("10.0.0.1").address("10.0.0.0").mask(24).tag(7).build();
-      externalNetwork.save();
-      assertNotNull(externalNetwork.getId());
-   }
-
-   protected void createUnmanagedNetwork() {
-      unmanagedNetwork = UnmanagedNetwork.builder(context.getApiContext(), datacenter, enterprise)
-            .name("UnmanagedNetwork").gateway("10.0.1.1").address("10.0.1.0").mask(24).tag(8).build();
-      unmanagedNetwork.save();
-      assertNotNull(unmanagedNetwork.getId());
-   }
-
-   // Tear down
-
-   protected void deleteUnmanagedNetwork() {
-      if (unmanagedNetwork != null) {
-         Integer id = unmanagedNetwork.getId();
-         unmanagedNetwork.delete();
-         assertNull(datacenter.getNetwork(id));
-      }
-   }
-
-   protected void deleteExternalNetwork() {
-      if (externalNetwork != null) {
-         Integer id = externalNetwork.getId();
-         externalNetwork.delete();
-         assertNull(datacenter.getNetwork(id));
-      }
-   }
-
-   protected void deletePublicNetwork() {
-      if (publicNetwork != null) {
-         Integer id = publicNetwork.getId();
-         publicNetwork.delete();
-         assertNull(datacenter.getNetwork(id));
-      }
-   }
-
-   protected void deleteUsers() {
-      if (user != null) {
-         String nick = user.getNick();
-         user.delete();
-         // Nick is unique in an enterprise
-         assertNull(find(enterprise.listUsers(), nick(nick), null));
-      }
-
-      if (enterpriseAdmin != null) {
-         String nick = enterpriseAdmin.getNick();
-         enterpriseAdmin.delete();
-         // Nick is unique in an enterprise
-         assertNull(find(enterprise.listUsers(), nick(nick), null));
-      }
-   }
-
-   protected void deleteRole(final Role role) {
-      if (role != null) {
-         Integer roleId = role.getId();
-         role.delete();
-         assertNull(adminApi.getRole(roleId));
-      }
-   }
-
-   protected void deleteStoragePool() {
-      if (storagePool != null) {
-         String idStoragePool = storagePool.getUUID();
-         storagePool.delete();
-         assertNull(infrastructureApi.getStoragePool(storageDevice.unwrap(), idStoragePool));
-      }
-
-   }
-
-   protected void deleteStorageDevice() {
-      if (storageDevice != null) {
-         Integer idStorageDevice = storageDevice.getId();
-         storageDevice.delete();
-         assertNull(infrastructureApi.getStorageDevice(datacenter.unwrap(), idStorageDevice));
-      }
-   }
-
-   protected void deleteMachine() {
-      if (machine != null && rack != null) {
-         Integer idMachine = machine.getId();
-         machine.delete();
-         assertNull(infrastructureApi.getMachine(rack.unwrap(), idMachine));
-      }
-   }
-
-   protected void deleteRack() {
-      if (rack != null && datacenter != null) {
-         Integer idRack = rack.getId();
-         rack.delete();
-         assertNull(infrastructureApi.getRack(datacenter.unwrap(), idRack));
-      }
-   }
-
-   protected void deleteDatacenter() {
-      if (datacenter != null) {
-         // Remove limits first
-         enterprise.prohibitDatacenter(datacenter);
-
-         Integer idDatacenter = datacenter.getId();
-         datacenter.delete(); // Abiquo API will delete remote services too
-         assertNull(infrastructureApi.getDatacenter(idDatacenter));
-      }
-   }
-
-   protected void deleteEnterprise() {
-      if (enterprise != null) {
-         Integer idEnterprise = enterprise.getId();
-         enterprise.delete();
-         assertNull(enterpriseApi.getEnterprise(idEnterprise));
-      }
-   }
-
-   protected void deleteLicense() {
-      license.remove();
-   }
-
-   protected static String randomName() {
-      return PREFIX + UUID.randomUUID().toString().substring(0, 12);
-   }
-
-   // Utility methods
-
-   public static String readLicense() throws IOException {
-      URL url = CloudTestEnvironment.class.getResource("/license/expired");
-      return Resources.readLines(url, Charset.defaultCharset(), new LineProcessor<String>() {
-         StringBuilder sb = new StringBuilder();
-
-         @Override
-         public String getResult() {
-            return sb.toString();
-         }
-
-         @Override
-         public boolean processLine(String line) throws IOException {
-            if (!line.startsWith("#")) {
-               sb.append(line);
-            }
-            return true;
-         }
-      });
-   }
-
-   private static Predicate<Role> role(final String role) {
-      return new Predicate<Role>() {
-         @Override
-         public boolean apply(Role input) {
-            return input.getName().equals(role);
-         }
-      };
-   }
-
-   private static Predicate<User> nick(final String nick) {
-      return new Predicate<User>() {
-         @Override
-         public boolean apply(User input) {
-            return input.getNick().equals(nick);
-         }
-      };
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/environment/TestEnvironment.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/environment/TestEnvironment.java b/abiquo/src/test/java/org/jclouds/abiquo/environment/TestEnvironment.java
deleted file mode 100644
index eb165b1..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/environment/TestEnvironment.java
+++ /dev/null
@@ -1,35 +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.abiquo.environment;
-
-/**
- * Base class fot test environment populators.
- * <p>
- * This class should be used to populate and clean the test environment used in
- * live tests.
- */
-public interface TestEnvironment {
-   /**
-    * Builds the test environment.
-    */
-   void setup() throws Exception;
-
-   /**
-    * Cleans the test environment.
-    */
-   void tearDown() throws Exception;
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/AppendApiVersionToAbiquoMimeTypeTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/AppendApiVersionToAbiquoMimeTypeTest.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/AppendApiVersionToAbiquoMimeTypeTest.java
deleted file mode 100644
index 141d220..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/AppendApiVersionToAbiquoMimeTypeTest.java
+++ /dev/null
@@ -1,60 +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.abiquo.fallbacks;
-
-import static org.testng.Assert.assertEquals;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.functions.AppendApiVersionToAbiquoMimeType;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Function;
-
-/**
- * Unit tests for the {@link AppendApiVersionToAbiquoMimeType} function.
- */
-@Test(groups = "unit", testName = "AppendApiVersionToAbiquoMimeTypeTest")
-public class AppendApiVersionToAbiquoMimeTypeTest {
-   @Test(expectedExceptions = NullPointerException.class)
-   public void testApplyWithNullInput() {
-      Function<String, String> function = new AppendApiVersionToAbiquoMimeType(AbiquoApi.API_VERSION);
-      function.apply(null);
-   }
-
-   @Test(expectedExceptions = IllegalArgumentException.class)
-   public void testApplyWithInvalidMediaType() {
-      Function<String, String> function = new AppendApiVersionToAbiquoMimeType(AbiquoApi.API_VERSION);
-      function.apply("foo");
-   }
-
-   public void testApplyToStandardMediaType() {
-      Function<String, String> function = new AppendApiVersionToAbiquoMimeType(AbiquoApi.API_VERSION);
-      assertEquals(function.apply("application/xml"), "application/xml");
-   }
-
-   public void testApplyToAbiquoMediaTypeWithVersion() {
-      Function<String, String> function = new AppendApiVersionToAbiquoMimeType(AbiquoApi.API_VERSION);
-      assertEquals(function.apply("application/vnd.abiquo.datacenters+xml;version=1.8.5"),
-            "application/vnd.abiquo.datacenters+xml;version=1.8.5");
-   }
-
-   public void testApplyToAbiquoMediaTypeWithoutVersion() {
-      Function<String, String> function = new AppendApiVersionToAbiquoMimeType(AbiquoApi.API_VERSION);
-      assertEquals(function.apply("application/vnd.abiquo.datacenters+xml"),
-            "application/vnd.abiquo.datacenters+xml;version=" + AbiquoApi.API_VERSION);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseIfNotAvailableTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseIfNotAvailableTest.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseIfNotAvailableTest.java
deleted file mode 100644
index 8566e0d..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseIfNotAvailableTest.java
+++ /dev/null
@@ -1,105 +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.abiquo.fallbacks;
-
-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 static org.testng.Assert.assertFalse;
-
-import org.easymock.EasyMock;
-import org.jclouds.abiquo.AbiquoFallbacks.FalseIfNotAvailable;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.rest.ResourceNotFoundException;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link FalseIfNotAvailable} function.
- */
-@Test(groups = "unit", testName = "FalseIfNotAvailableTest")
-public class FalseIfNotAvailableTest {
-   public void testOriginalExceptionIfUnknownException() {
-      FalseIfNotAvailable function = new FalseIfNotAvailable();
-      RuntimeException exception = new RuntimeException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testFalseIf5xx() throws Exception {
-      FalseIfNotAvailable function = new FalseIfNotAvailable();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called twice
-      expect(response.getStatusCode()).andReturn(503);
-      expect(response.getStatusCode()).andReturn(503);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      assertFalse(function.createOrPropagate(exception));
-
-      verify(response);
-      verify(exception);
-   }
-
-   public void testExceptionIfNot5xx() {
-      FalseIfNotAvailable function = new FalseIfNotAvailable();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called twice
-      expect(response.getStatusCode()).andReturn(600);
-      expect(response.getStatusCode()).andReturn(600);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-
-      verify(response);
-      verify(exception);
-   }
-
-   public void testFalseIfResourceNotFound() throws Exception {
-      FalseIfNotAvailable function = new FalseIfNotAvailable();
-      ResourceNotFoundException exception = new ResourceNotFoundException();
-
-      assertFalse(function.createOrPropagate(exception));
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseOn5xxTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseOn5xxTest.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseOn5xxTest.java
deleted file mode 100644
index 111cfeb..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/FalseOn5xxTest.java
+++ /dev/null
@@ -1,96 +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.abiquo.fallbacks;
-
-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 static org.testng.Assert.assertFalse;
-
-import org.easymock.EasyMock;
-import org.jclouds.abiquo.AbiquoFallbacks.FalseOn5xx;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link FalseOn5xx} function.
- */
-@Test(groups = "unit", testName = "FalseOn5xxTest")
-public class FalseOn5xxTest {
-   public void testOriginalExceptionIfNotHttpResponseException() {
-      FalseOn5xx function = new FalseOn5xx();
-      RuntimeException exception = new RuntimeException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testFalseIf5xx() throws Exception {
-      FalseOn5xx function = new FalseOn5xx();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called twice
-      expect(response.getStatusCode()).andReturn(503);
-      expect(response.getStatusCode()).andReturn(503);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      assertFalse(function.createOrPropagate(exception));
-
-      verify(response);
-      verify(exception);
-   }
-
-   public void testExceptionIfNot5xx() {
-      FalseOn5xx function = new FalseOn5xx();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called twice
-      expect(response.getStatusCode()).andReturn(600);
-      expect(response.getStatusCode()).andReturn(600);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-
-      verify(response);
-      verify(exception);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/MovedVolumeTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/MovedVolumeTest.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/MovedVolumeTest.java
deleted file mode 100644
index 8d372fa..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/MovedVolumeTest.java
+++ /dev/null
@@ -1,93 +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.abiquo.fallbacks;
-
-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 javax.ws.rs.core.Response.Status;
-
-import org.easymock.EasyMock;
-import org.jclouds.abiquo.fallbacks.MovedVolume.ReturnMoveVolumeReference;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.io.Payload;
-import org.jclouds.io.Payloads;
-import org.jclouds.xml.internal.JAXBParser;
-import org.testng.annotations.Test;
-
-import com.abiquo.server.core.infrastructure.storage.MovedVolumeDto;
-import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
-import com.google.common.io.ByteSource;
-import com.google.inject.TypeLiteral;
-
-/**
- * Unit tests for the {@link MovedVolume} function.
- */
-@Test(groups = "unit", testName = "MovedVolumeTest")
-public class MovedVolumeTest {
-   public void testReturnOriginalExceptionIfNotHttpResponseException() {
-      MovedVolume function = new MovedVolume(new ReturnMoveVolumeReference(new JAXBParser("false"),
-            TypeLiteral.get(MovedVolumeDto.class)));
-
-      RuntimeException exception = new RuntimeException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testReturnVolume() throws Exception {
-      JAXBParser xmlParser = new JAXBParser("false");
-      MovedVolume function = new MovedVolume(new ReturnMoveVolumeReference(new JAXBParser("false"),
-            TypeLiteral.get(MovedVolumeDto.class)));
-
-      VolumeManagementDto volume = new VolumeManagementDto();
-      volume.setName("Test volume");
-      MovedVolumeDto movedRef = new MovedVolumeDto();
-      movedRef.setVolume(volume);
-
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-      Payload payload = Payloads.newByteSourcePayload(ByteSource.wrap(xmlParser.toXML(movedRef).getBytes()));
-
-      // Status code is called once
-      expect(response.getStatusCode()).andReturn(Status.MOVED_PERMANENTLY.getStatusCode());
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get payload is called three times: one to deserialize it, and twice to
-      // release it
-      expect(response.getPayload()).andReturn(payload);
-      expect(response.getPayload()).andReturn(payload);
-      expect(response.getPayload()).andReturn(payload);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      function.createOrPropagate(exception);
-
-      verify(response);
-      verify(exception);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/NullOn303Test.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/NullOn303Test.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/NullOn303Test.java
deleted file mode 100644
index 6e6cda0..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/NullOn303Test.java
+++ /dev/null
@@ -1,94 +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.abiquo.fallbacks;
-
-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 static org.testng.Assert.assertNull;
-
-import org.easymock.EasyMock;
-import org.jclouds.abiquo.AbiquoFallbacks.NullOn303;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link NullOn303} function.
- */
-@Test(groups = "unit", testName = "NullOn303Test")
-public class NullOn303Test {
-   public void testOriginalExceptionIfNotHttpResponseException() {
-      NullOn303 function = new NullOn303();
-      RuntimeException exception = new RuntimeException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testNullIf303() throws Exception {
-      NullOn303 function = new NullOn303();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called once
-      expect(response.getStatusCode()).andReturn(303);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      assertNull(function.createOrPropagate(exception));
-
-      verify(response);
-      verify(exception);
-   }
-
-   public void testExceptionIfNot303() {
-      NullOn303 function = new NullOn303();
-      HttpResponse response = EasyMock.createMock(HttpResponse.class);
-      HttpResponseException exception = EasyMock.createMock(HttpResponseException.class);
-
-      // Status code is called once
-      expect(response.getStatusCode()).andReturn(600);
-      // Get response gets called twice
-      expect(exception.getResponse()).andReturn(response);
-      expect(exception.getResponse()).andReturn(response);
-      // Get cause is called to determine the root cause
-      expect(exception.getCause()).andReturn(null);
-
-      replay(response);
-      replay(exception);
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-
-      verify(response);
-      verify(exception);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/PropagateAbiquoExceptionOnNotFoundOr4xxTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/PropagateAbiquoExceptionOnNotFoundOr4xxTest.java b/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/PropagateAbiquoExceptionOnNotFoundOr4xxTest.java
deleted file mode 100644
index ecb472a..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/fallbacks/PropagateAbiquoExceptionOnNotFoundOr4xxTest.java
+++ /dev/null
@@ -1,68 +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.abiquo.fallbacks;
-
-import static org.testng.Assert.assertEquals;
-
-import javax.ws.rs.core.Response.Status;
-
-import org.jclouds.abiquo.AbiquoFallbacks.PropagateAbiquoExceptionOnNotFoundOr4xx;
-import org.jclouds.abiquo.domain.exception.AbiquoException;
-import org.jclouds.rest.ResourceNotFoundException;
-import org.testng.annotations.Test;
-
-import com.abiquo.model.transport.error.ErrorsDto;
-
-/**
- * Unit tests for the {@link PropagateAbiquoExceptionOnNotFoundOr4xx} function.
- */
-@Test(groups = "unit", testName = "PropagateAbiquoExceptionOnNotFoundOr4xxTest")
-public class PropagateAbiquoExceptionOnNotFoundOr4xxTest {
-   public void testOriginalExceptionIfNotResourceNotFound() {
-      PropagateAbiquoExceptionOnNotFoundOr4xx function = new PropagateAbiquoExceptionOnNotFoundOr4xx();
-      RuntimeException exception = new RuntimeException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testOriginalExceptionIfNotAbiquoException() {
-      PropagateAbiquoExceptionOnNotFoundOr4xx function = new PropagateAbiquoExceptionOnNotFoundOr4xx();
-      ResourceNotFoundException exception = new ResourceNotFoundException();
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, exception);
-      }
-   }
-
-   public void testAbiquoException() {
-      PropagateAbiquoExceptionOnNotFoundOr4xx function = new PropagateAbiquoExceptionOnNotFoundOr4xx();
-      AbiquoException abiquoException = new AbiquoException(Status.NOT_FOUND, new ErrorsDto());
-      ResourceNotFoundException exception = new ResourceNotFoundException(abiquoException);
-
-      try {
-         function.createOrPropagate(exception);
-      } catch (Exception ex) {
-         assertEquals(ex, abiquoException);
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/features/AdminApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/AdminApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/AdminApiTest.java
deleted file mode 100644
index dd2b91a..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/AdminApiTest.java
+++ /dev/null
@@ -1,175 +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.abiquo.features;
-
-import static org.jclouds.abiquo.domain.DomainUtils.withHeader;
-import static org.jclouds.reflect.Reflection2.method;
-
-import java.io.IOException;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.abiquo.domain.AdminResources;
-import org.jclouds.abiquo.domain.EnterpriseResources;
-import org.jclouds.http.functions.ParseXMLWithJAXB;
-import org.jclouds.http.functions.ReleasePayloadAndReturn;
-import org.jclouds.reflect.Invocation;
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-import org.testng.annotations.Test;
-
-import com.abiquo.server.core.enterprise.PrivilegesDto;
-import com.abiquo.server.core.enterprise.RoleDto;
-import com.abiquo.server.core.enterprise.RolesDto;
-import com.abiquo.server.core.enterprise.UserDto;
-import com.google.common.collect.ImmutableList;
-import com.google.common.reflect.Invokable;
-
-/**
- * Tests annotation parsing of {@code AdminApi}
- */
-@Test(groups = "unit", testName = "AdminApiTest")
-public class AdminApiTest extends BaseAbiquoApiTest<AdminApi> {
-   /*********************** Role ***********************/
-
-   public void testListRoles() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "listRoles");
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.of()));
-
-      assertRequestLineEquals(request, "GET http://localhost/api/admin/roles HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + RolesDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-
-   public void testGetRoleFromUser() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "getRole", UserDto.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method,
-            ImmutableList.<Object> of(EnterpriseResources.userPut())));
-
-      assertRequestLineEquals(request, "GET http://localhost/api/admin/roles/1 HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + RoleDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, NullOnNotFoundOr404.class);
-
-      checkFilters(request);
-   }
-
-   public void testCreateRole() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "createRole", RoleDto.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method,
-            ImmutableList.<Object> of(AdminResources.rolePost())));
-
-      assertRequestLineEquals(request, "POST http://localhost/api/admin/roles HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + RoleDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, withHeader(AdminResources.rolePostPayload()), RoleDto.class,
-            RoleDto.BASE_MEDIA_TYPE, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-
-   public void testDeleteRole() throws SecurityException, NoSuchMethodException {
-      Invokable<?, ?> method = method(AdminApi.class, "deleteRole", RoleDto.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method,
-            ImmutableList.<Object> of(AdminResources.rolePut())));
-
-      assertRequestLineEquals(request, "DELETE http://localhost/api/admin/roles/1 HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-
-   public void testUpdateRole() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "updateRole", RoleDto.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method,
-            ImmutableList.<Object> of(AdminResources.rolePut())));
-
-      assertRequestLineEquals(request, "PUT http://localhost/api/admin/roles/1 HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + RoleDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, withHeader(AdminResources.rolePutPayload()), RoleDto.class, RoleDto.BASE_MEDIA_TYPE,
-            false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-
-   public void testGetRoleById() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "getRole", Integer.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.<Object> of(1)));
-
-      assertRequestLineEquals(request, "GET http://localhost/api/admin/roles/1 HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + RoleDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, NullOnNotFoundOr404.class);
-
-      checkFilters(request);
-   }
-
-   public void testListPrivilegesByRoles() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "listPrivileges", RoleDto.class);
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method,
-            ImmutableList.<Object> of(AdminResources.rolePut())));
-
-      assertRequestLineEquals(request, "GET http://localhost/api/admin/roles/1/action/privileges HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + PrivilegesDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-
-   /*********************** Current User **********************/
-
-   public void testGetCurrentUser() throws SecurityException, NoSuchMethodException, IOException {
-      Invokable<?, ?> method = method(AdminApi.class, "getCurrentUser");
-      GeneratedHttpRequest request = processor.apply(Invocation.create(method, ImmutableList.<Object> of(1)));
-
-      assertRequestLineEquals(request, "GET http://localhost/api/login HTTP/1.1");
-      assertNonPayloadHeadersEqual(request, "Accept: " + UserDto.BASE_MEDIA_TYPE + "\n");
-      assertPayloadEquals(request, null, null, false);
-
-      assertResponseParserClassEquals(method, request, ParseXMLWithJAXB.class);
-      assertSaxResponseParserClassEquals(method, null);
-      assertFallbackClassEquals(method, null);
-
-      checkFilters(request);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiExpectTest.java
deleted file mode 100644
index a9c242c..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiExpectTest.java
+++ /dev/null
@@ -1,89 +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.abiquo.features;
-
-import java.util.Properties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.AbiquoApiMetadata;
-import org.jclouds.abiquo.functions.auth.GetTokenFromApi;
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.domain.Credentials;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.rest.HttpClient;
-import org.jclouds.rest.internal.BaseRestApiExpectTest;
-
-import com.google.common.base.Function;
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-
-/**
- * Base class for Abiquo expect tests.
- */
-public abstract class BaseAbiquoApiExpectTest<S> extends BaseRestApiExpectTest<S> {
-   protected final String tokenAuth = "auth=mock-token";
-
-   public BaseAbiquoApiExpectTest() {
-      provider = "abiquo";
-   }
-
-   @Override
-   protected ApiMetadata createApiMetadata() {
-      return new AbiquoApiMetadata();
-   }
-
-   @Override
-   protected Module createModule() {
-      return new AbstractModule() {
-         @Override
-         protected void configure() {
-            bind(GetTokenFromApi.class).to(MockTokenFromApi.class);
-         }
-      };
-   }
-
-   @Override
-   public S createClient(final Function<HttpRequest, HttpResponse> fn, final Module module, final Properties props) {
-      return clientFrom(createInjector(fn, module, props).getInstance(AbiquoApi.class));
-   }
-
-   protected abstract S clientFrom(AbiquoApi api);
-
-   protected String normalize(final String mediatType) {
-      return MediaType.valueOf(mediatType).toString();
-   }
-
-   @Singleton
-   private static class MockTokenFromApi extends GetTokenFromApi {
-      @Inject
-      public MockTokenFromApi(ProviderMetadata provider, HttpClient http) {
-         super(provider, http);
-      }
-
-      @Override
-      public String apply(Credentials input) {
-         return "mock-token";
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiTest.java
deleted file mode 100644
index 6f2adf0..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/BaseAbiquoApiTest.java
+++ /dev/null
@@ -1,87 +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.abiquo.features;
-
-import static org.jclouds.Constants.PROPERTY_PRETTY_PRINT_PAYLOADS;
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.jclouds.abiquo.AbiquoApiMetadata;
-import org.jclouds.abiquo.config.AbiquoHttpApiModule;
-import org.jclouds.abiquo.http.filters.AbiquoAuthentication;
-import org.jclouds.abiquo.http.filters.AppendApiVersionToMediaType;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.providers.AnonymousProviderMetadata;
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.rest.internal.BaseRestAnnotationProcessingTest;
-import org.jclouds.xml.XMLParser;
-import org.testng.annotations.BeforeClass;
-
-import com.abiquo.model.transport.SingleResourceTransportDto;
-import com.google.inject.Module;
-
-/**
- * Base class for Abiquo api tests.
- */
-public abstract class BaseAbiquoApiTest<T> extends BaseRestAnnotationProcessingTest<T> {
-   private XMLParser xml;
-
-   @BeforeClass
-   @Override
-   protected void setupFactory() throws IOException {
-      super.setupFactory();
-      xml = injector.getInstance(XMLParser.class);
-   }
-
-   @Override
-   protected void checkFilters(final HttpRequest request) {
-      assertEquals(request.getFilters().size(), 2);
-      assertEquals(request.getFilters().get(0).getClass(), AbiquoAuthentication.class);
-      assertEquals(request.getFilters().get(1).getClass(), AppendApiVersionToMediaType.class);
-   }
-
-   @Override
-   protected Module createModule() {
-      return new AbiquoHttpApiModule();
-   }
-
-   @Override
-   protected ProviderMetadata createProviderMetadata() {
-      return AnonymousProviderMetadata.forApiWithEndpoint(new AbiquoApiMetadata(), "http://localhost/api");
-   }
-
-   @Override
-   protected Properties setupProperties() {
-      Properties props = super.setupProperties();
-      // Do not pretty print payloads in tests
-      props.setProperty(PROPERTY_PRETTY_PRINT_PAYLOADS, "false");
-      return props;
-   }
-
-   protected void assertPayloadEquals(final HttpRequest request, final String toMatch,
-         final Class<? extends SingleResourceTransportDto> entityClass, final String contentType,
-         final boolean contentMD5) throws IOException {
-      // Make sure we don't have formatting issues
-      SingleResourceTransportDto entity = xml.fromXML(toMatch, entityClass);
-      String stringToMatch = xml.toXML(entity, entityClass);
-
-      super.assertPayloadEquals(request, stringToMatch, contentType, contentMD5);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1b689dc1/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
----------------------------------------------------------------------
diff --git a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java b/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
deleted file mode 100644
index 6a05030..0000000
--- a/abiquo/src/test/java/org/jclouds/abiquo/features/CloudApiExpectTest.java
+++ /dev/null
@@ -1,590 +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.abiquo.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-
-import java.net.URI;
-import java.util.List;
-
-import org.jclouds.abiquo.AbiquoApi;
-import org.jclouds.abiquo.domain.PaginatedCollection;
-import org.jclouds.abiquo.domain.cloud.options.VirtualMachineOptions;
-import org.jclouds.abiquo.domain.cloud.options.VirtualMachineTemplateOptions;
-import org.jclouds.abiquo.domain.cloud.options.VolumeOptions;
-import org.jclouds.abiquo.domain.network.options.IpOptions;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.testng.annotations.Test;
-
-import com.abiquo.model.rest.RESTLink;
-import com.abiquo.model.transport.AcceptedRequestDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplateDto;
-import com.abiquo.server.core.appslibrary.VirtualMachineTemplatesDto;
-import com.abiquo.server.core.cloud.VirtualApplianceDto;
-import com.abiquo.server.core.cloud.VirtualDatacenterDto;
-import com.abiquo.server.core.cloud.VirtualMachineDto;
-import com.abiquo.server.core.cloud.VirtualMachineInstanceDto;
-import com.abiquo.server.core.cloud.VirtualMachineWithNodeExtendedDto;
-import com.abiquo.server.core.cloud.VirtualMachinesWithNodeExtendedDto;
-import com.abiquo.server.core.infrastructure.network.PrivateIpDto;
-import com.abiquo.server.core.infrastructure.network.PrivateIpsDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpDto;
-import com.abiquo.server.core.infrastructure.network.PublicIpsDto;
-import com.abiquo.server.core.infrastructure.network.VLANNetworkDto;
-import com.abiquo.server.core.infrastructure.storage.VolumeManagementDto;
-import com.abiquo.server.core.infrastructure.storage.VolumesManagementDto;
-
-/**
- * Expect tests for the {@link CloudApi} class.
- */
-@Test(groups = "unit", testName = "CloudApiExpectTest")
-public class CloudApiExpectTest extends BaseAbiquoApiExpectTest<CloudApi> {
-
-   public void testListAllVirtualMachinesWhenResponseIs2xx() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/all-vms.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "2").build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build());
-
-      PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listAllVirtualMachines();
-      List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();
-
-      assertEquals(vms.size(), 2);
-      assertEquals(vms.get(0).getId(), Integer.valueOf(1));
-      assertEquals(vms.get(1).getId(), Integer.valueOf(2));
-      assertEquals(vms.get(0).getName(), "VM");
-      assertNotNull(vms.get(0).getEditLink());
-   }
-
-   public void testListAllVirtualMachinesWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "2").build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/all-vms-lastpage.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
-      PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
-            .listAllVirtualMachines(options);
-
-      assertEquals(vms.size(), 1);
-      assertEquals(vms.getTotalSize().intValue(), 2);
-      assertEquals(vms.get(0).getId().intValue(), 2);
-   }
-
-   public void testListVirtualMachinesWhenResponseIs2xx() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET")
-                  //
-                  .endpoint(
-                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/vms-page.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET")
-                  //
-                  .endpoint(
-                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "2").build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualApplianceDto vapp = new VirtualApplianceDto();
-      vapp.addLink(new RESTLink("virtualmachines",
-            "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));
-
-      PagedIterable<VirtualMachineWithNodeExtendedDto> result = api.listVirtualMachines(vapp);
-      List<VirtualMachineWithNodeExtendedDto> vms = result.concat().toList();
-
-      assertEquals(vms.size(), 2);
-      assertEquals(vms.get(0).getId(), Integer.valueOf(1));
-      assertEquals(vms.get(1).getId(), Integer.valueOf(2));
-      assertEquals(vms.get(0).getName(), "VM");
-      assertNotNull(vms.get(0).getEditLink());
-   }
-
-   public void testLisVirtualMachinesWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET")
-                  //
-                  .endpoint(
-                        URI.create("http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "2").build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/vms-lastpage.xml",
-                              normalize(VirtualMachinesWithNodeExtendedDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualApplianceDto vapp = new VirtualApplianceDto();
-      vapp.addLink(new RESTLink("virtualmachines",
-            "http://localhost/api/cloud/virtualdatacenters/1/virtualappliances/1/virtualmachines"));
-
-      VirtualMachineOptions options = VirtualMachineOptions.builder().startWith(2).build();
-      PaginatedCollection<VirtualMachineWithNodeExtendedDto, VirtualMachinesWithNodeExtendedDto> vms = api
-            .listVirtualMachines(vapp, options);
-
-      assertEquals(vms.size(), 1);
-      assertEquals(vms.getTotalSize().intValue(), 2);
-      assertEquals(vms.get(0).getId().intValue(), 2);
-   }
-
-   public void testSnapshotVirtualMachineReturns2xx() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest
-                  .builder()
-                  .method("POST")
-                  .endpoint(
-                        URI.create("http://localhost/api/admin/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/instance")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(AcceptedRequestDto.MEDIA_TYPE)) //
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/vm-snapshot.xml",
-                              normalize(VirtualMachineInstanceDto.MEDIA_TYPE))) //
-                  .build(), //
-            HttpResponse
-                  .builder()
-                  .statusCode(202)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/vm-accepted-request.xml",
-                              normalize(VirtualMachineInstanceDto.MEDIA_TYPE))).build());
-
-      VirtualMachineDto vm = new VirtualMachineDto();
-      vm.addLink(new RESTLink("instance",
-            "http://localhost/api/admin/virtualdatacenters/1/virtualappliances/1/virtualmachines/1/action/instance"));
-      VirtualMachineInstanceDto snapshotConfig = new VirtualMachineInstanceDto();
-      snapshotConfig.setInstanceName("foo");
-
-      AcceptedRequestDto<String> taskRef = api.snapshotVirtualMachine(vm, snapshotConfig);
-      assertNotNull(taskRef);
-   }
-
-   public void testListAvailablePublicIps() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-available-page.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "3") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));
-
-      PagedIterable<PublicIpDto> publicIps = api.listAvailablePublicIps(vdc);
-      List<PublicIpDto> ips = publicIps.concat().toList();
-
-      assertEquals(ips.size(), 4);
-      assertEquals(ips.get(0).getId().intValue(), 1);
-      assertEquals(ips.get(1).getId().intValue(), 2);
-      assertEquals(ips.get(2).getId().intValue(), 3);
-      assertEquals(ips.get(3).getId().intValue(), 4);
-   }
-
-   public void testListAvailablePublicIpsWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "3") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-available-lastpage.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("topurchase", "http://localhost/api/cloud/virtualdatacenters/1/publicips/topurchase"));
-
-      IpOptions options = IpOptions.builder().startWith(3).build();
-      PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listAvailablePublicIps(vdc, options);
-
-      assertEquals(ips.size(), 2);
-      assertEquals(ips.getTotalSize().intValue(), 4);
-      assertEquals(ips.get(0).getId().intValue(), 3);
-      assertEquals(ips.get(1).getId().intValue(), 4);
-   }
-
-   public void testListPurchasedPublicIps() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-purchased-page.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "3") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));
-
-      PagedIterable<PublicIpDto> publicIps = api.listPurchasedPublicIps(vdc);
-      List<PublicIpDto> ips = publicIps.concat().toList();
-
-      assertEquals(ips.size(), 4);
-      assertEquals(ips.get(0).getId().intValue(), 1);
-      assertEquals(ips.get(1).getId().intValue(), 2);
-      assertEquals(ips.get(2).getId().intValue(), 3);
-      assertEquals(ips.get(3).getId().intValue(), 4);
-   }
-
-   public void testListPurchasedPublicIpsWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PublicIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "3") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/publicips-purchased-lastpage.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("purchased", "http://localhost/api/cloud/virtualdatacenters/1/publicips/purchased"));
-
-      IpOptions options = IpOptions.builder().startWith(3).build();
-      PaginatedCollection<PublicIpDto, PublicIpsDto> ips = api.listPurchasedPublicIps(vdc, options);
-
-      assertEquals(ips.size(), 2);
-      assertEquals(ips.getTotalSize().intValue(), 4);
-      assertEquals(ips.get(0).getId().intValue(), 3);
-      assertEquals(ips.get(1).getId().intValue(), 4);
-   }
-
-   public void testListPrivteIps() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/privateips-page.xml",
-                              normalize(PublicIpsDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
-                              normalize(PrivateIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VLANNetworkDto vlan = new VLANNetworkDto();
-      vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));
-
-      PagedIterable<PrivateIpDto> privateIps = api.listPrivateNetworkIps(vlan);
-      List<PrivateIpDto> ips = privateIps.concat().toList();
-
-      assertEquals(ips.size(), 2);
-      assertEquals(ips.get(0).getId().intValue(), 1);
-      assertEquals(ips.get(1).getId().intValue(), 2);
-   }
-
-   public void testListPrivateIpsWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(PrivateIpsDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/privateips-lastpage.xml",
-                              normalize(PrivateIpsDto.MEDIA_TYPE))) //
-                  .build());
-
-      VLANNetworkDto vlan = new VLANNetworkDto();
-      vlan.addLink(new RESTLink("ips", "http://localhost/api/cloud/virtualdatacenters/1/privatenetworks/1/ips"));
-
-      IpOptions options = IpOptions.builder().startWith(1).build();
-      PaginatedCollection<PrivateIpDto, PrivateIpsDto> ips = api.listPrivateNetworkIps(vlan, options);
-
-      assertEquals(ips.size(), 1);
-      assertEquals(ips.getTotalSize().intValue(), 2);
-      assertEquals(ips.get(0).getId().intValue(), 2);
-   }
-
-   public void testListAvailableTemplates() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/available-templates-page.xml",
-                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
-                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));
-
-      PagedIterable<VirtualMachineTemplateDto> templates = api.listAvailableTemplates(vdc);
-      List<VirtualMachineTemplateDto> all = templates.concat().toList();
-
-      assertEquals(all.size(), 2);
-      assertEquals(all.get(0).getId().intValue(), 15);
-      assertEquals(all.get(1).getId().intValue(), 16);
-   }
-
-   public void testListAvailableTemplatesWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/action/templates")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VirtualMachineTemplatesDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/available-templates-lastpage.xml",
-                              normalize(VirtualMachineTemplatesDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("templates", "http://example.com/api/cloud/virtualdatacenters/1/action/templates"));
-
-      VirtualMachineTemplateOptions options = VirtualMachineTemplateOptions.builder().startWith(1).build();
-      PaginatedCollection<VirtualMachineTemplateDto, VirtualMachineTemplatesDto> templates = api
-            .listAvailableTemplates(vdc, options);
-
-      assertEquals(templates.size(), 1);
-      assertEquals(templates.getTotalSize().intValue(), 2);
-      assertEquals(templates.get(0).getId().intValue(), 16);
-   }
-
-   public void testListVolumes() {
-      CloudApi api = requestsSendResponses(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/volumes-page.xml",
-                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
-                  .build(),
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
-                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));
-
-      PagedIterable<VolumeManagementDto> volumes = api.listVolumes(vdc);
-      List<VolumeManagementDto> all = volumes.concat().toList();
-
-      assertEquals(all.size(), 2);
-      assertEquals(all.get(0).getId().intValue(), 1530);
-      assertEquals(all.get(1).getId().intValue(), 1531);
-   }
-
-   public void testListVolumesWithPagination() {
-      CloudApi api = requestSendsResponse(
-            HttpRequest.builder() //
-                  .method("GET") //
-                  .endpoint(URI.create("http://example.com/api/cloud/virtualdatacenters/1/volumes")) //
-                  .addHeader("Cookie", tokenAuth) //
-                  .addHeader("Accept", normalize(VolumesManagementDto.MEDIA_TYPE)) //
-                  .addQueryParam("startwith", "1") //
-                  .build(),
-            HttpResponse
-                  .builder()
-                  .statusCode(200)
-                  .payload(
-                        payloadFromResourceWithContentType("/payloads/volumes-lastpage.xml",
-                              normalize(VolumesManagementDto.MEDIA_TYPE))) //
-                  .build());
-
-      VirtualDatacenterDto vdc = new VirtualDatacenterDto();
-      vdc.addLink(new RESTLink("volumes", "http://example.com/api/cloud/virtualdatacenters/1/volumes"));
-
-      VolumeOptions options = VolumeOptions.builder().startWith(1).build();
-      PaginatedCollection<VolumeManagementDto, VolumesManagementDto> templates = api.listVolumes(vdc, options);
-
-      assertEquals(templates.size(), 1);
-      assertEquals(templates.getTotalSize().intValue(), 2);
-      assertEquals(templates.get(0).getId().intValue(), 1531);
-   }
-
-   @Override
-   protected CloudApi clientFrom(AbiquoApi api) {
-      return api.getCloudApi();
-   }
-
-}