You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by de...@apache.org on 2016/02/19 16:33:40 UTC

[30/35] jclouds git commit: JCLOUDS-947: Properly configure live tests in ProfitBricks

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiLiveTest.java
index e7c2eda..12670cd 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiLiveTest.java
@@ -16,45 +16,46 @@
  */
 package org.jclouds.profitbricks.features;
 
-import com.google.common.collect.Iterables;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
 import java.util.List;
+
+import com.google.common.collect.Iterables;
+
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
+import org.jclouds.profitbricks.domain.DataCenter;
 import org.jclouds.profitbricks.domain.IpBlock;
-import org.jclouds.profitbricks.domain.Location;
 import org.jclouds.profitbricks.domain.Nic;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-@Test(groups = "live", testName = "IpBlockApiLiveTest", singleThreaded = true)
+@Test(groups = "live", testName = "IpBlockApiLiveTest")
 public class IpBlockApiLiveTest extends BaseProfitBricksLiveTest {
 
-   private String nicid;
-   private IpBlock newIpBlock;
-
-   @Override
-   public void initialize() {
-      super.initialize();
-
-      List<Nic> nics = api.nicApi().getAllNics();
+   private DataCenter dataCenter;
+   private Nic nic;
 
-      assertFalse(nics.isEmpty(), "At least one NIC is requred to test IpBlocks");
-
-      Nic nic = Iterables.getFirst(nics, null);
+   private IpBlock newIpBlock;
 
-      nicid = nic.id();
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("ipBlockApiLiveTest" + System.currentTimeMillis());
+      nic = findOrCreateNic(dataCenter);
    }
 
    @Test
    public void testReservePublicIpBlock() {
-      newIpBlock = api.ipBlockApi().reservePublicIpBlock("2", Location.US_LAS.getId());
+      assertDataCenterAvailable(dataCenter);
+      newIpBlock = api.ipBlockApi().reservePublicIpBlock(1, testLocation);
 
       assertNotNull(newIpBlock);
-      assertNotNull(newIpBlock.ips());
       assertFalse(newIpBlock.ips().isEmpty());
    }
 
-   @Test
+   @Test(dependsOnMethods = "testReservePublicIpBlock")
    public void testGetAllIpBlocks() {
       List<IpBlock> ipBlocks = api.ipBlockApi().getAllIpBlock();
 
@@ -71,22 +72,40 @@ public class IpBlockApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test(dependsOnMethods = "testReservePublicIpBlock")
    public void testAddPublicIpToNic() {
-      String requestId = api.ipBlockApi().addPublicIpToNic(newIpBlock.ips().get(0), nicid);
+      assertDataCenterAvailable(dataCenter);
+      String ipToAdd = Iterables.getFirst(newIpBlock.ips(), null);
+      String requestId = api.ipBlockApi().addPublicIpToNic(
+              ipToAdd, nic.id());
 
       assertNotNull(requestId);
+      assertDataCenterAvailable(dataCenter);
+      List<String> ips = api.nicApi().getNic(nic.id()).ips();
+      assertTrue(ips.contains(ipToAdd), "NIC didn't contain added public ip");
    }
 
    @Test(dependsOnMethods = "testAddPublicIpToNic")
    public void testRemovePublicIpFromNic() {
-      String requestId = api.ipBlockApi().removePublicIpFromNic(newIpBlock.ips().get(0), nicid);
+      assertDataCenterAvailable(dataCenter);
+      String ipToRemove = Iterables.getFirst(newIpBlock.ips(), null);
+      String requestId = api.ipBlockApi().removePublicIpFromNic(
+              ipToRemove, nic.id());
 
       assertNotNull(requestId);
+      assertDataCenterAvailable(dataCenter);
+      List<String> ips = api.nicApi().getNic(nic.id()).ips();
+      assertFalse(ips.contains(ipToRemove), "NIC still contains removed public ip");
    }
 
    @Test(dependsOnMethods = "testRemovePublicIpFromNic")
    public void testReleasePublicIpBlock() {
+      assertDataCenterAvailable(dataCenter);
       String requestId = api.ipBlockApi().releasePublicIpBlock(newIpBlock.id());
 
       assertNotNull(requestId);
    }
+
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiMockTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiMockTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiMockTest.java
index e948e76..234f163 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiMockTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/IpBlockApiMockTest.java
@@ -119,12 +119,12 @@ public class IpBlockApiMockTest extends BaseProfitBricksMockTest {
       ProfitBricksApi pbApi = api(server.getUrl(rootUrl));
       IpBlockApi api = pbApi.ipBlockApi();
 
-      String blockSize = "2";
+      int blockSize = 2;
       Location location = Location.US_LAS;
 
       String content = "<ws:reservePublicIpBlock><request><blockSize>" + blockSize + "</blockSize><location>" + location.getId() + "</location></request></ws:reservePublicIpBlock>";
       try {
-         IpBlock ipBlock = api.reservePublicIpBlock(blockSize, location.getId());
+         IpBlock ipBlock = api.reservePublicIpBlock(blockSize, location);
          assertRequestHasCommonProperties(server.takeRequest(), content);
          assertNotNull(ipBlock);
       } finally {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiLiveTest.java
index e293e1c..0780f78 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiLiveTest.java
@@ -16,61 +16,58 @@
  */
 package org.jclouds.profitbricks.features;
 
+import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.List;
+import java.util.Objects;
 
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
-import org.assertj.core.util.Lists;
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
 import org.jclouds.profitbricks.domain.DataCenter;
 import org.jclouds.profitbricks.domain.LoadBalancer;
 import org.jclouds.profitbricks.domain.LoadBalancer.Algorithm;
 import org.jclouds.profitbricks.domain.Server;
-import org.testng.Assert;
 import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 @Test(groups = "unit", testName = "LoadBalancerApiLiveTest")
 public class LoadBalancerApiLiveTest extends BaseProfitBricksLiveTest {
 
-   private String dataCenterId;
-   private String loadBalancerId;
-   private String serverId;
-
-   @Override
-   protected void initialize() {
-      super.initialize();
-      List<DataCenter> dataCenters = api.dataCenterApi().getAllDataCenters();
-      assertFalse(dataCenters.isEmpty(), "At least 1 datacenter has to be available for loadbalancer testing.");
-
-      dataCenterId = Iterables.getFirst(dataCenters, null).id();
+   private DataCenter dataCenter;
+   private Server server;
 
-      List<Server> servers = api.serverApi().getAllServers();
-      assertFalse(servers.isEmpty(), "At least 1 server has to be available for loadbalancer testing.");
+   private String loadBalancerId;
 
-      serverId = Iterables.getFirst(servers, null).id();
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("loadBalancerApiLiveTest" + System.currentTimeMillis());
+      server = findOrCreateServer(dataCenter);
    }
 
    @Test
    public void testCreateLoadBalancer() {
-      List<String> serverIds = com.google.common.collect.Lists.newArrayList();
-      serverIds.add("server-ids");
-
-      LoadBalancer.Request.CreatePayload payload = LoadBalancer.Request.creatingBuilder()
-              .dataCenterId(dataCenterId)
+      assertDataCenterAvailable(dataCenter);
+      String createdId = api.loadBalancerApi().createLoadBalancer(
+              LoadBalancer.Request.creatingBuilder()
+              .dataCenterId(dataCenter.id())
               .name("testName")
               .algorithm(Algorithm.ROUND_ROBIN)
-              .ip("0.0.0.1")
+              .ip("192.168.0.200")
               .lanId(1)
-              .serverIds(serverIds)
-              .build();
-
-      String requestId = api.loadBalancerApi().createLoadBalancer(payload);
+              .build()
+      );
 
-      assertNotNull(requestId);
+      assertNotNull(createdId);
+      assertDataCenterAvailable(dataCenter);
+      this.loadBalancerId = createdId;
    }
 
    @Test(dependsOnMethods = "testCreateLoadBalancer")
@@ -85,50 +82,76 @@ public class LoadBalancerApiLiveTest extends BaseProfitBricksLiveTest {
       LoadBalancer loadBalancer = api.loadBalancerApi().getLoadBalancer(loadBalancerId);
 
       assertNotNull(loadBalancer);
+      assertEquals(loadBalancer.id(), loadBalancerId);
    }
 
-   @Test(dependsOnMethods = "testCreateLoadBalancer")
+   @Test(dependsOnMethods = "testGetLoadBalancer")
    public void testRegisterLoadBalancer() {
-      List<String> serverIds = Lists.newArrayList();
-      serverIds.add(serverId);
-
-      LoadBalancer.Request.RegisterPayload payload = LoadBalancer.Request
-              .createRegisteringPaylod(loadBalancerId, serverIds);
-
-      LoadBalancer loadBalancer = api.loadBalancerApi().registerLoadBalancer(payload);
+      assertDataCenterAvailable(dataCenter);
+      LoadBalancer loadBalancer = api.loadBalancerApi().registerLoadBalancer(
+              LoadBalancer.Request
+              .createRegisteringPaylod(loadBalancerId, ImmutableList.of(server.id()))
+      );
 
       assertNotNull(loadBalancer);
+      assertDataCenterAvailable(dataCenter);
+      Optional<Server> balancedServer = Iterables.tryFind(loadBalancer.balancedServers(), new Predicate<Server>() {
+
+         @Override
+         public boolean apply(Server t) {
+            return Objects.equals(t.id(), server.id());
+         }
+      });
+      assertTrue(balancedServer.isPresent(), "Server input wasn't registered to loadbalancer");
    }
 
    @Test(dependsOnMethods = "testRegisterLoadBalancer")
    public void testDeregisterLoadBalancer() {
-      List<String> serverIds = Lists.newArrayList();
-      serverIds.add(serverId);
-
-      LoadBalancer.Request.DeregisterPayload payload = LoadBalancer.Request
-              .createDeregisteringPayload(loadBalancerId, serverIds);
-
-      LoadBalancer loadBalancer = api.loadBalancerApi().deregisterLoadBalancer(payload);
+      assertDataCenterAvailable(dataCenter);
+      String requestId = api.loadBalancerApi().deregisterLoadBalancer(
+              LoadBalancer.Request
+              .createDeregisteringPayload(loadBalancerId, ImmutableList.of(server.id()))
+      );
 
-      assertNotNull(loadBalancer);
+      assertNotNull(requestId);
+      assertDataCenterAvailable(dataCenter);
+      LoadBalancer loadBalancer = api.loadBalancerApi().getLoadBalancer(loadBalancerId);
+      Optional<Server> balancedServer = Iterables.tryFind(loadBalancer.balancedServers(), new Predicate<Server>() {
+
+         @Override
+         public boolean apply(Server t) {
+            return Objects.equals(t.id(), loadBalancerId);
+         }
+      });
+      assertFalse(balancedServer.isPresent(), "Server input wasn't deregistered from loadbalancer");
    }
 
-   @Test(dependsOnMethods = "testCreateLoadBalancer")
+   @Test(dependsOnMethods = "testDeregisterLoadBalancer")
    public void testUpdateLoadBalancer() {
-      LoadBalancer.Request.UpdatePayload payload = LoadBalancer.Request.updatingBuilder()
+      assertDataCenterAvailable(dataCenter);
+      String newName = "whatever";
+      String requestId = api.loadBalancerApi().updateLoadBalancer(
+              LoadBalancer.Request.updatingBuilder()
               .id(loadBalancerId)
-              .name("whatever")
-              .build();
-
-      LoadBalancer loadBalancer = api.loadBalancerApi().updateLoadBalancer(payload);
+              .name(newName)
+              .build()
+      );
 
-      assertNotNull(loadBalancer);
+      assertNotNull(requestId);
+      assertDataCenterAvailable(dataCenter);
+      LoadBalancer loadBalancer = api.loadBalancerApi().getLoadBalancer(loadBalancerId);
+      assertEquals(loadBalancer.name(), newName);
    }
 
-   @AfterClass(alwaysRun = true)
+   @Test(dependsOnMethods = "testUpdateLoadBalancer")
    public void testDeleteLoadBalancer() {
+      assertDataCenterAvailable(dataCenter);
       boolean result = api.loadBalancerApi().deleteLoadBalancer(loadBalancerId);
+      assertTrue(result, "Test load balancer wasn't deleted");
+   }
 
-      Assert.assertTrue(result);
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiMockTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiMockTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiMockTest.java
index c4f26aa..e4e8fd7 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiMockTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/LoadBalancerApiMockTest.java
@@ -23,9 +23,11 @@ import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.List;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.squareup.okhttp.mockwebserver.MockResponse;
 import com.squareup.okhttp.mockwebserver.MockWebServer;
+
 import org.jclouds.profitbricks.ProfitBricksApi;
 import org.jclouds.profitbricks.domain.LoadBalancer;
 import org.jclouds.profitbricks.domain.LoadBalancer.Algorithm;
@@ -142,7 +144,7 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
       try {
          List<String> serverIds = Lists.newArrayList();
          serverIds.add("server-ids");
-         String requestId = api.createLoadBalancer(LoadBalancer.Request.creatingBuilder()
+         String loadBalancerId = api.createLoadBalancer(LoadBalancer.Request.creatingBuilder()
                  .dataCenterId("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeee")
                  .name("load-balancer-name")
                  .algorithm(Algorithm.ROUND_ROBIN)
@@ -152,7 +154,7 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
                  .build());
 
          assertRequestHasCommonProperties(server.takeRequest(), content);
-
+         assertEquals(loadBalancerId, "1234-1234-1234-1234");
       } finally {
          pbApi.close();
          server.shutdown();
@@ -162,7 +164,7 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
    @Test
    public void testUpdateLoadBalancer() throws Exception {
       MockWebServer server = mockWebServer();
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-create.xml")));
+      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-update.xml")));
 
       ProfitBricksApi pbApi = api(server.getUrl(rootUrl));
       LoadBalancerApi api = pbApi.loadBalancerApi();
@@ -187,10 +189,10 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
                  .ip("192.168.0.1")
                  .build();
 
-         LoadBalancer loadBalancer = api.updateLoadBalancer(toUpdate);
+         String requestId = api.updateLoadBalancer(toUpdate);
 
          assertRequestHasCommonProperties(server.takeRequest(), content);
-         assertNotNull(loadBalancer);
+         assertEquals(requestId, "request-id");
       } finally {
          pbApi.close();
          server.shutdown();
@@ -207,11 +209,9 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
       LoadBalancerApi api = pbApi.loadBalancerApi();
 
       String content = "<ws:registerServersOnLoadBalancer>"
-              + "<request>"
               + "<loadBalancerId>1234</loadBalancerId>"
               + "<serverIds>1</serverIds>"
               + "<serverIds>2</serverIds>"
-              + "</request>"
               + "</ws:registerServersOnLoadBalancer>";
 
       try {
@@ -225,6 +225,7 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
 
          assertRequestHasCommonProperties(server.takeRequest(), content);
          assertNotNull(loadBalancer);
+         assertEquals(loadBalancer.id(), "load-balancer-id");
       } finally {
          pbApi.close();
          server.shutdown();
@@ -234,31 +235,25 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
    @Test
    public void testDeregisterLoadBalancer() throws Exception {
       MockWebServer server = mockWebServer();
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-update.xml")));
+      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-deregister.xml")));
 
       ProfitBricksApi pbApi = api(server.getUrl(rootUrl));
       LoadBalancerApi api = pbApi.loadBalancerApi();
 
       String content = "<ws:deregisterServersOnLoadBalancer>"
-              + "<request>"
               + "<serverIds>1</serverIds>"
               + "<serverIds>2</serverIds>"
               + "<loadBalancerId>load-balancer-id</loadBalancerId>"
-              + "</request>"
               + "</ws:deregisterServersOnLoadBalancer>";
 
       try {
-         List<String> serverIds = Lists.newArrayList();
-         serverIds.add("1");
-         serverIds.add("2");
-
          LoadBalancer.Request.DeregisterPayload payload = LoadBalancer.Request
-                 .createDeregisteringPayload("load-balancer-id", serverIds);
+                 .createDeregisteringPayload("load-balancer-id", ImmutableList.of("1", "2"));
 
-         LoadBalancer loadBalancer = api.deregisterLoadBalancer(payload);
+         String requestId = api.deregisterLoadBalancer(payload);
 
          assertRequestHasCommonProperties(server.takeRequest(), content);
-         assertNotNull(loadBalancer);
+         assertEquals(requestId, "request-id");
       } finally {
          pbApi.close();
          server.shutdown();
@@ -268,7 +263,7 @@ public class LoadBalancerApiMockTest extends BaseProfitBricksMockTest {
    @Test
    public void testDeleteLoadBalancer() throws Exception {
       MockWebServer server = mockWebServer();
-      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-register.xml")));
+      server.enqueue(new MockResponse().setBody(payloadFromResource("/loadbalancer/loadbalancer-delete.xml")));
 
       ProfitBricksApi pbApi = api(server.getUrl(rootUrl));
       LoadBalancerApi api = pbApi.loadBalancerApi();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiLiveTest.java
index fbbef8b..5253d1f 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiLiveTest.java
@@ -17,68 +17,47 @@
 package org.jclouds.profitbricks.features;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
-import com.google.common.collect.Iterables;
-
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate;
+import org.jclouds.profitbricks.domain.DataCenter;
 import org.jclouds.profitbricks.domain.Nic;
-import org.jclouds.profitbricks.domain.ProvisioningState;
 import org.jclouds.profitbricks.domain.Server;
-import org.jclouds.util.Predicates2;
-
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
+import org.testng.annotations.BeforeClass;
 
-import com.google.common.base.Predicate;
-
-@Test(groups = "live", testName = "NicApiLiveTest", singleThreaded = true)
+@Test(groups = "live", testName = "NicApiLiveTest")
 public class NicApiLiveTest extends BaseProfitBricksLiveTest {
 
-   private Predicate<String> waitUntilAvailable;
+   private DataCenter dataCenter;
    private Server server;
-   private Nic createdNic;
 
-   @Override
-   protected void initialize() {
-      super.initialize();
-      List<Server> servers = api.serverApi().getAllServers();
-      assertFalse(servers.isEmpty(), "Must atleast have 1 server available for NIC testing.");
+   private String createdNicId;
 
-      this.server = Iterables.tryFind(servers, new Predicate<Server>() {
-
-         @Override
-         public boolean apply(Server input) {
-            return input.state() == ProvisioningState.AVAILABLE;
-         }
-      }).orNull();
-
-      this.waitUntilAvailable = Predicates2.retry(
-              new ProvisioningStatusPollingPredicate(api, ProvisioningStatusAware.NIC, ProvisioningState.AVAILABLE),
-              2l * 60l, 2l, TimeUnit.SECONDS);
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("nicApiLiveTest-" + System.currentTimeMillis());
+      server = findOrCreateServer(dataCenter);
    }
 
    @Test
    public void testCreateNic() {
-      Nic.Request.CreatePayload payload = Nic.Request.creatingBuilder()
+      assertDataCenterAvailable(dataCenter);
+      String nicId = api.nicApi().createNic(Nic.Request.creatingBuilder()
               .name("name nr1")
               .dhcpActive(true)
               .serverId(server.id())
               .lanId(1)
-              .build();
+              .build());
 
-      Nic nic = api.nicApi().createNic(payload);
-      assertNotNull(nic);
+      assertNotNull(nicId);
+      assertDataCenterAvailable(dataCenter);
 
-      waitUntilAvailable.apply(nic.id());
-      this.createdNic = nic;
+      this.createdNicId = nicId;
    }
 
    @Test(dependsOnMethods = "testCreateNic")
@@ -90,47 +69,56 @@ public class NicApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test(dependsOnMethods = "testCreateNic")
    public void testGetNic() {
-      Nic nic = api.nicApi().getNic(createdNic.id());
+      Nic nic = api.nicApi().getNic(createdNicId);
 
       assertNotNull(nic);
-      assertEquals(nic.id(), createdNic.id());
+      assertEquals(nic.id(), createdNicId);
    }
 
-   @Test(dependsOnMethods = "testCreateNic")
+   @Test(dependsOnMethods = "testGetNic")
    public void testUpdateNic() {
-      Nic.Request.UpdatePayload payload = Nic.Request.updatingBuilder()
+      assertDataCenterAvailable(dataCenter);
+      String newName = "name nr2";
+      String requestId = api.nicApi().updateNic(
+              Nic.Request.updatingBuilder()
               .name("name nr2")
-              .id(createdNic.id())
-              .build();
-
-      Nic updatedNic = api.nicApi().updateNic(payload);
-      assertNotNull(updatedNic);
-      waitUntilAvailable.apply(payload.id());
+              .id(createdNicId)
+              .build()
+      );
 
-      updatedNic = api.nicApi().getNic(payload.id());
+      assertNotNull(requestId);
+      assertDataCenterAvailable(dataCenter);
 
-      assertEquals(updatedNic.name(), payload.name());
+      Nic nic = api.nicApi().getNic(createdNicId);
+      assertEquals(nic.name(), newName);
    }
 
    @Test(dependsOnMethods = "testUpdateNic")
    public void testSetInternetAccess() {
+      assertDataCenterAvailable(dataCenter);
 
-      Nic.Request.SetInternetAccessPayload payload = Nic.Request.setInternetAccessBuilder()
-              .dataCenterId(createdNic.dataCenterId())
+      String requestId = api.nicApi().setInternetAccess(Nic.Request.setInternetAccessBuilder()
+              .dataCenterId(dataCenter.id())
               .lanId(1)
               .internetAccess(true)
-              .build();
+              .build()
+      );
+      assertDataCenterAvailable(dataCenter);
+      assertNotNull(requestId);
 
-      Nic result = api.nicApi().setInternetAccess(payload);
-      assertNotNull(result);
+      Nic nic = api.nicApi().getNic(createdNicId);
+      assertTrue(nic.internetAccess(), "Expected nic to have internet access");
    }
 
-   @AfterClass(alwaysRun = true)
+   @Test(dependsOnMethods = "testSetInternetAccess")
    public void testDeleteNic() {
-      if (createdNic != null) {
-         boolean result = api.nicApi().deleteNic(createdNic.id());
+      assertDataCenterAvailable(dataCenter);
+      boolean result = api.nicApi().deleteNic(createdNicId);
+      assertTrue(result, "Created test NIC was not deleted.");
+   }
 
-         assertTrue(result, "Created test NIC was not deleted.");
-      }
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiMockTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiMockTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiMockTest.java
index 2129b25..940efa7 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiMockTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/NicApiMockTest.java
@@ -16,17 +16,20 @@
  */
 package org.jclouds.profitbricks.features;
 
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-import java.util.List;
-import org.jclouds.profitbricks.ProfitBricksApi;
-import org.jclouds.profitbricks.domain.Nic;
-import org.jclouds.profitbricks.internal.BaseProfitBricksMockTest;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
+
+import java.util.List;
+
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+
+import org.jclouds.profitbricks.ProfitBricksApi;
+import org.jclouds.profitbricks.domain.Nic;
+import org.jclouds.profitbricks.internal.BaseProfitBricksMockTest;
 import org.testng.annotations.Test;
 
 @Test(groups = "unit", testName = "NicApiMockTest")
@@ -111,7 +114,7 @@ public class NicApiMockTest extends BaseProfitBricksMockTest {
               + "</ws:createNic>";
 
       try {
-         Nic nic = api.createNic(
+         String nicId = api.createNic(
                  Nic.Request.creatingBuilder()
                  .ip("192.168.0.1")
                  .name("nic-name")
@@ -121,7 +124,7 @@ public class NicApiMockTest extends BaseProfitBricksMockTest {
                  .build());
 
          assertRequestHasCommonProperties(server.takeRequest(), content);
-         assertNotNull(nic.id());
+         assertNotNull(nicId);
 
       } finally {
          pbApi.close();
@@ -147,7 +150,7 @@ public class NicApiMockTest extends BaseProfitBricksMockTest {
               + "</request>"
               + "</ws:updateNic>";
       try {
-         Nic nic = api.updateNic(Nic.Request.updatingBuilder()
+         String requestId = api.updateNic(Nic.Request.updatingBuilder()
                  .id("nic-id")
                  .ip("10.0.0.1")
                  .name("nic-name")
@@ -155,7 +158,7 @@ public class NicApiMockTest extends BaseProfitBricksMockTest {
                  .lanId(1)
                  .build());
          assertRequestHasCommonProperties(server.takeRequest(), content);
-         assertNotNull(nic);
+         assertEquals(requestId, "request-id");
       } finally {
          pbApi.close();
          server.shutdown();
@@ -176,13 +179,13 @@ public class NicApiMockTest extends BaseProfitBricksMockTest {
               + "<internetAccess>true</internetAccess>"
               + "</ws:setInternetAccess>";
       try {
-         Nic nic = api.setInternetAccess(Nic.Request.setInternetAccessBuilder()
+         String requestId = api.setInternetAccess(Nic.Request.setInternetAccessBuilder()
                  .dataCenterId("datacenter-id")
                  .lanId(1)
                  .internetAccess(true)
                  .build());
          assertRequestHasCommonProperties(server.takeRequest(), content);
-         assertNotNull(nic);
+         assertEquals(requestId, "request-id");
       } finally {
          pbApi.close();
          server.shutdown();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/ServerApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/ServerApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/ServerApiLiveTest.java
index 6ceffcd..be1a60c 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/ServerApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/ServerApiLiveTest.java
@@ -16,46 +16,35 @@
  */
 package org.jclouds.profitbricks.features;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
 import java.util.List;
-import java.util.concurrent.TimeUnit;
+
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate;
 import org.jclouds.profitbricks.domain.DataCenter;
 import org.jclouds.profitbricks.domain.ProvisioningState;
 import org.jclouds.profitbricks.domain.Server;
-import org.jclouds.util.Predicates2;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
 import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-@Test(groups = "live", testName = "ServerApiLiveTest", singleThreaded = true)
+@Test(groups = "live", testName = "ServerApiLiveTest")
 public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
 
-   private Predicate<String> waitUntilAvailable;
    private DataCenter dataCenter;
    private String createdServerId;
 
-   @Override
-   protected void initialize() {
-      super.initialize();
-      List<DataCenter> dataCenters = api.dataCenterApi().getAllDataCenters();
-      assertFalse(dataCenters.isEmpty(), "Must atleast have 1 datacenter available for server testing.");
-
-      this.dataCenter = Iterables.getFirst(dataCenters, null);
-
-      this.waitUntilAvailable = Predicates2.retry(
-              new ProvisioningStatusPollingPredicate(api, ProvisioningStatusAware.SERVER, ProvisioningState.AVAILABLE),
-              2l * 60l, 2l, TimeUnit.SECONDS);
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("serverApiLiveTest-" + System.currentTimeMillis());
    }
 
    @Test
    public void testCreateServer() {
+      assertDataCenterAvailable(dataCenter);
       String serverId = api.serverApi().createServer(
               Server.Request.creatingBuilder()
               .dataCenterId(dataCenter.id())
@@ -65,6 +54,9 @@ public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
               .build());
 
       assertNotNull(serverId);
+      assertDataCenterAvailable(dataCenter);
+      assertNodeRunning(serverId);
+
       this.createdServerId = serverId;
    }
 
@@ -84,15 +76,9 @@ public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
       assertFalse(servers.isEmpty());
    }
 
-   @Test(dependsOnMethods = "testCreateServer")
-   public void testWaitUntilAvailable() {
-      boolean available = waitUntilAvailable.apply(createdServerId);
-
-      assertTrue(available);
-   }
-
-   @Test(dependsOnMethods = "testWaitUntilAvailable")
+   @Test(dependsOnMethods = "testGetServer")
    public void testUpdateServer() {
+      assertDataCenterAvailable(dataCenter);
       String requestId = api.serverApi().updateServer(
               Server.Request.updatingBuilder()
               .id(createdServerId)
@@ -102,7 +88,7 @@ public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
               .build());
 
       assertNotNull(requestId);
-      waitUntilAvailable.apply(createdServerId);
+      assertDataCenterAvailable(dataCenter);
 
       Server server = api.serverApi().getServer(createdServerId);
       assertEquals(server.state(), ProvisioningState.AVAILABLE);
@@ -112,11 +98,8 @@ public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
    public void testStopServer() {
       String requestId = api.serverApi().stopServer(createdServerId);
       assertNotNull(requestId);
+      assertNodeSuspended(createdServerId);
 
-      Predicate<String> waitUntilInactive = Predicates2.retry(new ProvisioningStatusPollingPredicate(
-              api, ProvisioningStatusAware.SERVER, ProvisioningState.INACTIVE), 2l * 60l, 2l, TimeUnit.SECONDS);
-
-      waitUntilInactive.apply(createdServerId);
       Server server = api.serverApi().getServer(createdServerId);
       assertEquals(server.status(), Server.Status.SHUTOFF);
    }
@@ -125,20 +108,22 @@ public class ServerApiLiveTest extends BaseProfitBricksLiveTest {
    public void testStartServer() {
       String requestId = api.serverApi().startServer(createdServerId);
       assertNotNull(requestId);
-
-      waitUntilAvailable.apply(createdServerId);
+      assertNodeRunning(createdServerId);
 
       Server server = api.serverApi().getServer(createdServerId);
       assertEquals(server.status(), Server.Status.RUNNING);
    }
 
-   @AfterClass(alwaysRun = true)
+   @Test(dependsOnMethods = "testStartServer")
    public void testDeleteServer() {
-      if (createdServerId != null) {
-         boolean result = api.serverApi().deleteServer(createdServerId);
+      assertDataCenterAvailable(dataCenter);
+      boolean result = api.serverApi().deleteServer(createdServerId);
+      assertTrue(result, "Created test server was not deleted.");
+   }
 
-         assertTrue(result, "Created test server was not deleted.");
-      }
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
    }
 
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/SnapshotApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/SnapshotApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/SnapshotApiLiveTest.java
index 500d218..10a3f38 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/SnapshotApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/SnapshotApiLiveTest.java
@@ -16,59 +16,78 @@
  */
 package org.jclouds.profitbricks.features;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.List;
+
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
 import org.jclouds.profitbricks.domain.OsType;
 import org.jclouds.profitbricks.domain.Snapshot;
+import org.jclouds.profitbricks.domain.Storage;
 import org.testng.annotations.Test;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate;
+import org.jclouds.profitbricks.domain.DataCenter;
 import org.jclouds.profitbricks.domain.ProvisioningState;
-import org.jclouds.profitbricks.domain.Storage;
-import org.jclouds.util.Predicates2;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
 import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
 
-@Test(groups = "live", testName = "SnapshotApiLiveTest", singleThreaded = true)
-public class SnapshotApiLiveTest extends BaseProfitBricksLiveTest {
-
-   protected Predicate<String> snapshotWaitingPredicate;
-   private String snapshotId;
-   private String storageId;
-
-   @Override
-   protected void initialize() {
-      super.initialize();
-
-      initializeWaitPredicate();
+import com.google.common.base.Predicate;
+import com.google.common.base.Supplier;
+import com.google.common.collect.FluentIterable;
 
-      List<Storage> storages = api.storageApi().getAllStorages();
-      assertFalse(storages.isEmpty(), "Must atleast have 1 storage available for snapshot testing.");
+@Test(groups = "live", testName = "SnapshotApiLiveTest")
+public class SnapshotApiLiveTest extends BaseProfitBricksLiveTest {
 
-      storageId = Iterables.getFirst(storages, null).id();
+   private DataCenter dataCenter;
+   private Storage storage;
+
+   private String createdSnapshotId;
+
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("snapshotApiLiveTest-" + System.currentTimeMillis());
+      storage = FluentIterable.from(dataCenter.storages()).firstMatch(new Predicate<Storage>() {
+
+         @Override
+         public boolean apply(Storage input) {
+            return input.state() == ProvisioningState.AVAILABLE
+                    && input.size() <= 10f;
+         }
+      }).or(new Supplier<Storage>() {
+
+         @Override
+         public Storage get() {
+            StorageApi storageApi = api.storageApi();
+            String name = String.format("server-%d", dataCenter.servers().size());
+            String createdStorageId = storageApi.createStorage(
+                    Storage.Request.creatingBuilder()
+                    .dataCenterId(dataCenter.id())
+                    .name(name)
+                    .size(2f)
+                    .build()
+            );
+            assertDataCenterAvailable(dataCenter);
+
+            return storageApi.getStorage(createdStorageId);
+         }
+      });
    }
 
    @Test
    public void testCreateSnapshot() {
-      Snapshot snapshot = api.snapshotApi().createSnapshot(Snapshot.Request.creatingBuilder()
-              .storageId(storageId)
+      assertDataCenterAvailable(dataCenter);
+      Snapshot snapshot = api.snapshotApi().createSnapshot(
+              Snapshot.Request.creatingBuilder()
+              .storageId(storage.id())
               .description("my description")
               .name("test snapshot")
               .build());
 
       assertNotNull(snapshot);
+      assertSnapshotAvailable(snapshot.id());
 
-      snapshotWaitingPredicate.apply(snapshot.id());
-
-      snapshotId = snapshot.id();
+      createdSnapshotId = snapshot.id();
    }
 
    @Test(dependsOnMethods = "testCreateSnapshot")
@@ -81,20 +100,22 @@ public class SnapshotApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test(dependsOnMethods = "testCreateSnapshot")
    public void testGetSnapshot() {
-      Snapshot snapshot = api.snapshotApi().getSnapshot(snapshotId);
+      Snapshot snapshot = api.snapshotApi().getSnapshot(createdSnapshotId);
 
       assertNotNull(snapshot);
-      assertEquals(snapshot.id(), snapshotId);
+      assertEquals(snapshot.id(), createdSnapshotId);
    }
 
-   @Test(dependsOnMethods = "testCreateSnapshot")
+   @Test(dependsOnMethods = "testGetSnapshot")
    public void testUpdateSnapshot() {
-
+      assertSnapshotAvailable(createdSnapshotId);
       String newName = "new name";
+      String newDescription = "new description";
 
-      api.snapshotApi().updateSnapshot(Snapshot.Request.updatingBuilder()
-              .id(snapshotId)
-              .description("new description")
+      String requestId = api.snapshotApi().updateSnapshot(
+              Snapshot.Request.updatingBuilder()
+              .id(createdSnapshotId)
+              .description(newDescription)
               .name(newName)
               .bootable(true)
               .osType(OsType.LINUX)
@@ -107,30 +128,26 @@ public class SnapshotApiLiveTest extends BaseProfitBricksLiveTest {
               .isRamHotPlug(true)
               .isRamHotUnPlug(true)
               .build());
-
-      Snapshot snapshot = api.snapshotApi().getSnapshot(snapshotId);
-
-      assertNotNull(snapshot);
-      assertEquals(snapshot.name(), newName);
+      assertNotNull(requestId);
    }
 
-   @Test(dependsOnMethods = "testCreateSnapshot")
+   @Test(dependsOnMethods = "testUpdateSnapshot")
    public void testRollbackSnapshot() {
-      String result = api.snapshotApi().rollbackSnapshot(Snapshot.Request.createRollbackPayload(snapshotId, storageId));
-
-      assertNotNull(result);
+      assertSnapshotAvailable(createdSnapshotId);
+      String requestid = api.snapshotApi().rollbackSnapshot(
+              Snapshot.Request.createRollbackPayload(createdSnapshotId, storage.id()));
+      assertNotNull(requestid);
    }
 
-   @AfterClass(alwaysRun = true)
+   @Test(dependsOnMethods = "testRollbackSnapshot", alwaysRun = true)
    public void testDeleteSnapshot() {
-      boolean result = api.snapshotApi().deleteSnapshot(snapshotId);
-
-      assertTrue(result);
+      assertSnapshotAvailable(createdSnapshotId);
+      boolean result = api.snapshotApi().deleteSnapshot(createdSnapshotId);
+      assertTrue(result, "Created snapshot wasn't deleted");
    }
 
-   private void initializeWaitPredicate() {
-      this.snapshotWaitingPredicate = Predicates2.retry(
-              new ProvisioningStatusPollingPredicate(api, ProvisioningStatusAware.SNAPSHOT, ProvisioningState.AVAILABLE),
-              2l * 60l, 2l, TimeUnit.SECONDS);
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/StorageApiLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/StorageApiLiveTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/StorageApiLiveTest.java
index 08ffba2..cdaac80 100644
--- a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/StorageApiLiveTest.java
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/features/StorageApiLiveTest.java
@@ -22,44 +22,28 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 import org.jclouds.profitbricks.BaseProfitBricksLiveTest;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusAware;
-import org.jclouds.profitbricks.compute.internal.ProvisioningStatusPollingPredicate;
 import org.jclouds.profitbricks.domain.DataCenter;
-import org.jclouds.profitbricks.domain.ProvisioningState;
 import org.jclouds.profitbricks.domain.Server;
 import org.jclouds.profitbricks.domain.Storage;
 import org.jclouds.rest.InsufficientResourcesException;
-import org.jclouds.util.Predicates2;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
+import org.testng.annotations.BeforeClass;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
-@Test(groups = "live", testName = "StorageApiLiveTest", singleThreaded = true)
+@Test(groups = "live", testName = "StorageApiLiveTest")
 public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
 
-   private Predicate<String> waitUntilAvailable;
    private DataCenter dataCenter;
    private Server server;
-   private String createdStorageId;
-
-   @Override
-   protected void initialize() {
-      super.initialize();
-      List<DataCenter> dataCenters = api.dataCenterApi().getAllDataCenters();
-      assertFalse(dataCenters.isEmpty(), "Must atleast have 1 datacenter available for storage testing.");
 
-      dataCenter = Iterables.getFirst(dataCenters, null);
-      if (dataCenter != null)
-         dataCenter = api.dataCenterApi().getDataCenter(dataCenter.id()); // fetch individual to load more properties
+   private String createdStorageId;
 
-      this.waitUntilAvailable = Predicates2.retry(
-              new ProvisioningStatusPollingPredicate(api, ProvisioningStatusAware.STORAGE, ProvisioningState.AVAILABLE),
-              6l * 60l, 2l, TimeUnit.SECONDS);
+   @BeforeClass
+   public void setupTest() {
+      dataCenter = findOrCreateDataCenter("storageApiLiveTest" + System.currentTimeMillis());
+      server = findOrCreateServer(dataCenter);
    }
 
    @Test(expectedExceptions = InsufficientResourcesException.class)
@@ -74,6 +58,7 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test
    public void testCreateStorage() {
+      assertDataCenterAvailable(dataCenter);
       String storageId = api.storageApi().createStorage(
               Storage.Request.creatingBuilder()
               .dataCenterId(dataCenter.id())
@@ -82,6 +67,8 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
               .build());
 
       assertNotNull(storageId);
+      assertDataCenterAvailable(dataCenter);
+
       createdStorageId = storageId;
    }
 
@@ -102,14 +89,8 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
    }
 
    @Test(dependsOnMethods = "testCreateStorage")
-   public void testWaitUntilAvailable() {
-      boolean available = waitUntilAvailable.apply(createdStorageId);
-
-      assertTrue(available);
-   }
-
-   @Test(dependsOnMethods = "testWaitUntilAvailable")
    public void testUpdateStorage() {
+      assertDataCenterAvailable(dataCenter);
       String requestId = api.storageApi().updateStorage(
               Storage.Request.updatingBuilder()
               .id(createdStorageId)
@@ -118,7 +99,7 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
               .build());
 
       assertNotNull(requestId);
-      waitUntilAvailable.apply(createdStorageId);
+      assertDataCenterAvailable(dataCenter);
 
       Storage storage = api.storageApi().getStorage(createdStorageId);
       assertEquals(storage.size(), 5f);
@@ -127,9 +108,7 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test(dependsOnMethods = "testUpdateStorage")
    public void testConnectStorage() {
-      server = Iterables.getFirst(dataCenter.servers(), null);
-      assertNotNull(server, "No server to attach to.");
-
+      assertDataCenterAvailable(dataCenter);
       String requestId = api.storageApi().connectStorageToServer(
               Storage.Request.connectingBuilder()
               .storageId(createdStorageId)
@@ -138,7 +117,7 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
       );
 
       assertNotNull(requestId);
-      waitUntilAvailable.apply(createdStorageId);
+      assertDataCenterAvailable(dataCenter);
 
       Storage storage = api.storageApi().getStorage(createdStorageId);
       assertTrue(storage.serverIds().contains(server.id()));
@@ -146,22 +125,26 @@ public class StorageApiLiveTest extends BaseProfitBricksLiveTest {
 
    @Test(dependsOnMethods = "testConnectStorage")
    public void testDisconnectStorage() {
+      assertDataCenterAvailable(dataCenter);
       String requestId = api.storageApi()
               .disconnectStorageFromServer(createdStorageId, server.id());
 
       assertNotNull(requestId);
-      waitUntilAvailable.apply(createdStorageId);
+      assertDataCenterAvailable(dataCenter);
 
       Storage storage = api.storageApi().getStorage(createdStorageId);
       assertFalse(storage.serverIds().contains(server.id()));
    }
 
-   @AfterClass(alwaysRun = true)
+   @Test(dependsOnMethods = "testDisconnectStorage")
    public void testDeleteStorage() {
-      if (createdStorageId != null) {
-         boolean result = api.storageApi().deleteStorage(createdStorageId);
+      assertDataCenterAvailable(dataCenter);
+      boolean result = api.storageApi().deleteStorage(createdStorageId);
+      assertTrue(result, "Created test storage was not deleted");
+   }
 
-         assertTrue(result, "Created test storage was not delete.");
-      }
+   @AfterClass(alwaysRun = true)
+   public void cleanUp() {
+      destroyDataCenter(dataCenter);
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerIdOnlyResponseHandlerTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerIdOnlyResponseHandlerTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerIdOnlyResponseHandlerTest.java
new file mode 100644
index 0000000..9aa18ef
--- /dev/null
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerIdOnlyResponseHandlerTest.java
@@ -0,0 +1,41 @@
+/*
+ * 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.profitbricks.http.parser.loadbalancer;
+
+import static org.testng.Assert.assertEquals;
+
+import org.jclouds.http.functions.ParseSax;
+import org.jclouds.profitbricks.http.parser.BaseResponseHandlerTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "LoadBalancerIdOnlyResponseHandlerTest")
+public class LoadBalancerIdOnlyResponseHandlerTest extends BaseResponseHandlerTest<String> {
+
+   @Override
+   protected ParseSax<String> createParser() {
+      return factory.create(injector.getInstance(LoadBalancerIdOnlyResponseHandler.class));
+   }
+
+   @Test
+   public void testParseResponseFromCreateLoadBalancer() {
+      ParseSax<String> parser = createParser();
+
+      String loadBalancerId = parser.parse(payloadFromResource("/loadbalancer/loadbalancer-create.xml"));
+
+      assertEquals("1234-1234-1234-1234", loadBalancerId);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/nic/NicIdOnlyResponseHandlerTest.java
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/nic/NicIdOnlyResponseHandlerTest.java b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/nic/NicIdOnlyResponseHandlerTest.java
new file mode 100644
index 0000000..23b9c4c
--- /dev/null
+++ b/providers/profitbricks/src/test/java/org/jclouds/profitbricks/http/parser/nic/NicIdOnlyResponseHandlerTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.profitbricks.http.parser.nic;
+
+import static org.testng.Assert.assertEquals;
+
+import org.jclouds.http.functions.ParseSax;
+import org.jclouds.profitbricks.http.parser.BaseResponseHandlerTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "NicIdOnlyResponseHandlerTest")
+public class NicIdOnlyResponseHandlerTest extends BaseResponseHandlerTest<String> {
+
+   @Override
+   protected ParseSax<String> createParser() {
+      return factory.create(injector.getInstance(NicIdOnlyResponseHandler.class));
+   }
+
+   @Test
+   public void testParseResponseFromCreateNic() {
+      ParseSax<String> parser = createParser();
+      String nicId = parser.parse(payloadFromResource("/nic/nic-create.xml"));
+      assertEquals("nic-id", nicId);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-create.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-create.xml b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-create.xml
index 5c1afb0..58b97c1 100644
--- a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-create.xml
+++ b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-create.xml
@@ -1,17 +1,13 @@
-<soapenv:Envelope
-    xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'
-    xmlns:ws='http://ws.api.profitbricks.com/'>
-    <soapenv:Header />
-    <soapenv:Body>
-        <ws:createLoadBalancer>
-            <request>
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+    <S:Body>
+        <ns2:createLoadBalancerResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+            <return>
+                <requestId>request-id</requestId>
                 <dataCenterId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</dataCenterId>
-                <loadBalancerName>load-balancer-name</loadBalancerName>
-                <loadBalancerAlgorithm>ROUND_ROBIN</loadBalancerAlgorithm>
-                <ip>192.168.0.1</ip>
-                <lanId>1</lanId>
-                <serverIds>server-ids</serverIds>
-            </request>
-        </ws:createLoadBalancer>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+                <dataCenterVersion>10</dataCenterVersion>
+                <loadBalancerId>1234-1234-1234-1234</loadBalancerId>
+            </return>
+        </ns2:createLoadBalancerResponse>
+    </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-deregister.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-deregister.xml b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-deregister.xml
index 86ef94c..b149be8 100644
--- a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-deregister.xml
+++ b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-deregister.xml
@@ -1,14 +1,12 @@
-<soapenv:Envelope
-    xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'
-    xmlns:ws='http://ws.api.profitbricks.com/'>
-    <soapenv:Header />
-    <soapenv:Body>
-        <ws:deregisterServersOnLoadBalancer>
-            <request>
-                <serverIds>1</serverIds>
-                <serverIds>2</serverIds>
-                <loadBalancerId>load-balancer-id</loadBalancerId>
-                <request>
-        </ws:deregisterServersOnLoadBalancer>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+    <S:Body>
+        <ns2:deregisterServersOnLoadBalancerResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+            <return>
+                <requestId>request-id</requestId>
+                <dataCenterId>datacenter-id</dataCenterId>
+                <dataCenterVersion>10</dataCenterVersion>
+            </return>
+        </ns2:deregisterServersOnLoadBalancerResponse>
+    </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-register.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-register.xml b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-register.xml
index a32c65a..c338883 100644
--- a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-register.xml
+++ b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-register.xml
@@ -1,13 +1,19 @@
-<soapenv:Envelope
-    xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'
-    xmlns:ws='http://ws.api.profitbricks.com/'>
-    <soapenv:Header/>
-    <soapenv:Body>
-        <ws:registerServersOnLoadBalancer>
-            <request>
-                <serverIds>1234</serverIds>
-                <loadBalancerId>load-balancer-id</loadBalancerId>
-            </request>
-        </ws:registerServersOnLoadBalancer>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+  <S:Body>
+    <ns2:registerServersOnLoadBalancerResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+      <return>
+        <dataCenterId>datacenter-id</dataCenterId>
+        <dataCenterVersion>4</dataCenterVersion>
+        <loadBalancerId>load-balancer-id</loadBalancerId>
+        <lanId>1</lanId>
+        <balancedServers>
+          <activate>true</activate>
+          <balancedNicId>balanced-nic-id</balancedNicId>
+          <serverId>server-id</serverId>
+          <serverName>server-name</serverName>
+        </balancedServers>
+      </return>
+    </ns2:registerServersOnLoadBalancerResponse>
+  </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-update.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-update.xml b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-update.xml
index 87c1f02..0da544d 100644
--- a/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-update.xml
+++ b/providers/profitbricks/src/test/resources/loadbalancer/loadbalancer-update.xml
@@ -1,15 +1,12 @@
-<soapenv:Envelope
-    xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'
-    xmlns:ws='http://ws.api.profitbricks.com/'>
-    <soapenv:Header />
-    <soapenv:Body>
-        <ws:updateLoadBalancer>
-            <request>
-                <loadBalancerId>aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee</loadBalancerId>
-                <loadBalancerName>load-balancer-name</loadBalancerName>
-                <loadBalancerAlgorithm>ROUND_ROBIN</loadBalancerAlgorithm>
-                <ip>192.168.0.1</ip>              
-            </request>
-        </ws:updateLoadBalancer>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+    <S:Body>
+        <ns2:updateLoadBalancerResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+            <return>
+                <requestId>request-id</requestId>
+                <dataCenterId>datacenter-id</dataCenterId>
+                <dataCenterVersion>10</dataCenterVersion>
+            </return>
+        </ns2:updateLoadBalancerResponse>
+    </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/logback-test.xml b/providers/profitbricks/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..902e5cd
--- /dev/null
+++ b/providers/profitbricks/src/test/resources/logback-test.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<configuration scan="false">
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%m%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-wire.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-compute.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <appender name="SSHFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-ssh.log</file>
+
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <root>
+        <level value="info" />
+    </root>
+
+    <logger name="org.jclouds">
+        <level value="DEBUG" />
+        <appender-ref ref="FILE" />
+    </logger>
+
+    <logger name="jclouds.compute">
+        <level value="DEBUG" />
+        <appender-ref ref="COMPUTEFILE" />
+    </logger>
+
+    <logger name="jclouds.wire">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
+
+    <logger name="jclouds.headers">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
+
+    <logger name="jclouds.ssh">
+        <level value="DEBUG" />
+        <appender-ref ref="SSHFILE" />
+    </logger>
+
+    <logger name="net.schmizz">
+        <level value="DEBUG" />
+        <appender-ref ref="SSHFILE" />
+    </logger>
+</configuration>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/nic/nic-delete.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/nic/nic-delete.xml b/providers/profitbricks/src/test/resources/nic/nic-delete.xml
index 0b5cc83..281bd09 100644
--- a/providers/profitbricks/src/test/resources/nic/nic-delete.xml
+++ b/providers/profitbricks/src/test/resources/nic/nic-delete.xml
@@ -1,9 +1,12 @@
-<?xml version="1.0" ?>
-<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.api.profitbricks.com/">
-    <soapenv:Header/>
-    <soapenv:Body>
-        <ws:deleteNic>
-            <nicId>nic-id</nicId>
-        </ws:deleteNic>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+   <S:Body>
+      <ns2:deleteNicResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+         <return>
+            <requestId>request-id</requestId>
+            <dataCenterId>datacenter-id</dataCenterId>
+            <dataCenterVersion>datacenter-version</dataCenterVersion>
+         </return>
+      </ns2:deleteNicResponse>
+   </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/nic/nic-internetaccess.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/nic/nic-internetaccess.xml b/providers/profitbricks/src/test/resources/nic/nic-internetaccess.xml
index 6594894..3468ee4 100644
--- a/providers/profitbricks/src/test/resources/nic/nic-internetaccess.xml
+++ b/providers/profitbricks/src/test/resources/nic/nic-internetaccess.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" ?>
-<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.api.profitbricks.com/">
-    <soapenv:Header/>
-    <soapenv:Body>
-        <ws:setInternetAccess>
-            <dataCenterId>datacenter-id</dataCenterId>
-            <lanId>1</lanId>
-            <internetAccess>internet-access</internetAccess>
-        </ws:setInternetAccess>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+    <S:Body>
+        <ns2:setInternetAccessResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+            <return>
+                <requestId>request-id</requestId>
+                <dataCenterId>datacenter-id</dataCenterId>
+                <dataCenterVersion>8</dataCenterVersion>
+            </return>
+        </ns2:setInternetAccessResponse>
+    </S:Body>
+</S:Envelope>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52c6c2b7/providers/profitbricks/src/test/resources/nic/nic-update.xml
----------------------------------------------------------------------
diff --git a/providers/profitbricks/src/test/resources/nic/nic-update.xml b/providers/profitbricks/src/test/resources/nic/nic-update.xml
index 451914c..70ce539 100644
--- a/providers/profitbricks/src/test/resources/nic/nic-update.xml
+++ b/providers/profitbricks/src/test/resources/nic/nic-update.xml
@@ -1,15 +1,12 @@
-<?xml version="1.0" ?>
-<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.api.profitbricks.com/">
-    <soapenv:Header/>
-    <soapenv:Body>
-        <ws:updateNic>
-            <request>
-                <nicId>nic-id</nicId>
-                <ip>ip</ip>
-                <nicName>nic-name</nicName>
-                <dhcpActive>true</dhcpActive>
-                <lanId>1</lanId>
-            </request>
-        </ws:updateNic>
-    </soapenv:Body>
-</soapenv:Envelope>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+   <S:Body>
+      <ns2:updateNicResponse xmlns:ns2="http://ws.api.profitbricks.com/">
+         <return>
+            <requestId>request-id</requestId>
+            <dataCenterId>datacenter-id</dataCenterId>
+            <dataCenterVersion>2</dataCenterVersion>
+         </return>
+      </ns2:updateNicResponse>
+   </S:Body>
+</S:Envelope>
\ No newline at end of file