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 2016/01/21 01:11:10 UTC

[2/6] jclouds-labs git commit: Promoted DigitalOcean v2

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
deleted file mode 100644
index e0ec1c9..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiLiveTest.java
+++ /dev/null
@@ -1,99 +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.digitalocean2.features;
-
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
-
-import org.jclouds.digitalocean2.domain.Key;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiLiveTest;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
-import com.google.common.io.Resources;
-
-@Test(groups = "live", testName = "KeyApiLiveTest")
-public class KeyApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
-
-   private Key dsa;
-   private Key ecdsa;
-
-   public void testCreateKey() {
-      dsa = api().create("jclouds-test-dsa", loadKey("/ssh-dsa.pub"));
-      ecdsa = api().create("jclouds-test-ecdsa", loadKey("/ssh-ecdsa.pub"));
-      
-      assertEquals(dsa.name(), "jclouds-test-dsa");
-      assertEquals(ecdsa.name(), "jclouds-test-ecdsa");
-   }
-   
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testListKeys() {
-      FluentIterable<Key> keys = api().list().concat();
-      assertTrue(keys.size() >= 2, "At least the two created keys must exist");
-   }
-   
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testListKeysOnePAge() {
-      FluentIterable<Key> keys = api().list(page(1));
-      assertTrue(keys.size() >= 2, "At least the two created keys must exist");
-   }
-
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testGetKey() {
-      assertEquals(api().get(dsa.id()).fingerprint(), dsa.fingerprint());
-      assertEquals(api().get(ecdsa.fingerprint()).id(), ecdsa.id());
-   }
-   
-   @Test(dependsOnMethods = "testCreateKey")
-   public void testUpdateKey() {
-      api().update(dsa.id(), "jclouds-test-dsa-updated");
-      assertEquals(api().get(dsa.id()).name(), "jclouds-test-dsa-updated");
-   }
-
-   @AfterClass(alwaysRun = true)
-   public void testDeleteKey() {
-      if (dsa != null) {
-         api().delete(dsa.id());
-         FluentIterable<Key> keys = api().list().concat();
-         assertFalse(keys.contains(dsa), "dsa key must not be present in list");
-      }
-      if (ecdsa != null) {
-         api().delete(ecdsa.fingerprint());
-         FluentIterable<Key>  keys = api().list().concat();
-         assertFalse(keys.contains(ecdsa), "dsa key must not be present in list");
-      }
-   }
-   
-   private String loadKey(String resourceName) {
-      try {
-         return Resources.toString(getClass().getResource(resourceName), Charsets.UTF_8);
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-   private KeyApi api() {
-      return api.keyApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiMockTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiMockTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiMockTest.java
deleted file mode 100644
index 2f9d5d3..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/KeyApiMockTest.java
+++ /dev/null
@@ -1,203 +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.digitalocean2.features;
-
-import static com.google.common.collect.Iterables.isEmpty;
-import static com.google.common.collect.Iterables.size;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Map;
-
-import org.jclouds.digitalocean2.domain.Key;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiMockTest;
-import org.testng.annotations.Test;
-
-import com.google.common.reflect.TypeToken;
-
-@Test(groups = "unit", testName = "KeyApiMockTest", singleThreaded = true)
-public class KeyApiMockTest extends BaseDigitalOcean2ApiMockTest {
-
-   public void testListKeys() throws InterruptedException {
-      server.enqueue(jsonResponse("/keys-first.json"));
-      server.enqueue(jsonResponse("/keys-last.json"));
-
-      Iterable<Key> keys = api.keyApi().list().concat();
-
-      assertEquals(size(keys), 7); // Force the PagedIterable to advance
-      assertEquals(server.getRequestCount(), 2);
-
-      assertSent(server, "GET", "/account/keys");
-      assertSent(server, "GET", "/account/keys?page=2&per_page=5");
-   }
-
-   public void testListKeysReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Key> keys = api.keyApi().list().concat();
-
-      assertTrue(isEmpty(keys));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys");
-   }
-
-   public void testListKeysWithOptions() throws InterruptedException {
-      server.enqueue(jsonResponse("/keys-first.json"));
-
-      Iterable<Key> keys = api.keyApi().list(page(1).perPage(5));
-
-      assertEquals(size(keys), 5);
-      assertEquals(server.getRequestCount(), 1);
-
-      assertSent(server, "GET", "/account/keys?page=1&per_page=5");
-   }
-
-   public void testListKeysWithOptionsReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Key> keys = api.keyApi().list(page(1).perPage(5));
-
-      assertTrue(isEmpty(keys));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys?page=1&per_page=5");
-   }
-   
-   public void testCreateKey() throws InterruptedException {
-      server.enqueue(jsonResponse("/key.json").setStatus("HTTP/1.1 201 Created"));
-      
-      String dsa = stringFromResource("/ssh-dsa.pub");
-      
-      Key key = api.keyApi().create("foo", dsa);
-      
-      assertEquals(key, keyFromResource("/key.json"));
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "POST", "/account/keys", String.format("{\"name\":\"foo\", \"public_key\":\"%s\"}", dsa));
-   }
-   
-   public void testGetKey() throws InterruptedException {
-      server.enqueue(jsonResponse("/key.json"));
-
-      Key key = api.keyApi().get(1);
-
-      assertEquals(key, keyFromResource("/key.json"));
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys/1");
-   }
-
-   public void testGetKeyReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Key key = api.keyApi().get(1);
-
-      assertNull(key);
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys/1");
-   }
-   
-   public void testGetKeyUsingFingerprint() throws InterruptedException {
-      server.enqueue(jsonResponse("/key.json"));
-
-      Key key = api.keyApi().get("1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-
-      assertEquals(key, keyFromResource("/key.json"));
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys/1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-   }
-
-   public void testGetKeyUsingFingerprintReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Key key = api.keyApi().get("1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-
-      assertNull(key);
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/account/keys/1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-   }
-   
-   public void testUpdateKey() throws InterruptedException {
-      server.enqueue(jsonResponse("/key.json"));
-
-      Key key = api.keyApi().update(1, "foo");
-
-      assertEquals(key, keyFromResource("/key.json"));
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "PUT", "/account/keys/1", "{\"name\":\"foo\"}");
-   }
-   
-   public void testUpdateKeyUsingFingerprint() throws InterruptedException {
-      server.enqueue(jsonResponse("/key.json"));
-
-      Key key = api.keyApi().update("1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90", "foo");
-
-      assertEquals(key, keyFromResource("/key.json"));
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "PUT", "/account/keys/1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90", "{\"name\":\"foo\"}");
-   }
-   
-   public void testDeleteKey() throws InterruptedException {
-      server.enqueue(response204());
-
-      api.keyApi().delete(1);
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/account/keys/1");
-   }
-
-   public void testDeleteKeyReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      api.keyApi().delete(1);
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/account/keys/1");
-   }
-   
-   public void testDeleteKeyUsingFingerprint() throws InterruptedException {
-      server.enqueue(response204());
-
-      api.keyApi().delete("1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-      
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/account/keys/1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-   }
-
-   public void testDeleteKeyUsingfingerprintReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      api.keyApi().delete("1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "DELETE", "/account/keys/1a:cc:9b:88:c8:4f:b8:77:96:15:d2:0c:95:86:ff:90");
-   }
-   
-   private Key keyFromResource(String resource) {
-      return onlyObjectFromResource(resource, new TypeToken<Map<String, Key>>() {
-         private static final long serialVersionUID = 1L;
-      }); 
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiLiveTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiLiveTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiLiveTest.java
deleted file mode 100644
index 73c7451..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiLiveTest.java
+++ /dev/null
@@ -1,62 +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.digitalocean2.features;
-
-import static org.testng.Assert.assertTrue;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.jclouds.digitalocean2.domain.Region;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiLiveTest;
-import org.testng.annotations.Test;
-import org.testng.util.Strings;
-
-import com.google.common.base.Predicate;
-
-@Test(groups = "live", testName = "RegionApiLiveTest")
-public class RegionApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
-   
-   public void testListRegions() {
-      final AtomicInteger found = new AtomicInteger(0);
-      // DigitalOcean return 25 records per page by default. Inspect at most 2 pages
-      assertTrue(api().list().concat().limit(50).allMatch(new Predicate<Region>() {
-         @Override
-         public boolean apply(Region input) {
-            found.incrementAndGet();
-            return !Strings.isNullOrEmpty(input.slug());
-         }
-      }), "All regions must have the 'slug' field populated");
-      assertTrue(found.get() > 0, "Expected some regions to be returned");
-   }
-   
-   public void testListRegionsOnePage() {
-      final AtomicInteger found = new AtomicInteger(0);
-      assertTrue(api().list(page(1)).allMatch(new Predicate<Region>() {
-         @Override
-         public boolean apply(Region input) {
-            found.incrementAndGet();
-            return !Strings.isNullOrEmpty(input.slug());
-         }
-      }), "All regions must have the 'slug' field populated");
-      assertTrue(found.get() > 0, "Expected some regions to be returned");
-   }
-   
-   private RegionApi api() {
-      return api.regionApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiMockTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiMockTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiMockTest.java
deleted file mode 100644
index 8c8c326..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/RegionApiMockTest.java
+++ /dev/null
@@ -1,77 +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.digitalocean2.features;
-
-import static com.google.common.collect.Iterables.isEmpty;
-import static com.google.common.collect.Iterables.size;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.digitalocean2.domain.Region;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiMockTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "RegionApiMockTest", singleThreaded = true)
-public class RegionApiMockTest extends BaseDigitalOcean2ApiMockTest {
-
-   public void testListRegions() throws InterruptedException {
-      server.enqueue(jsonResponse("/regions-first.json"));
-      server.enqueue(jsonResponse("/regions-last.json"));
-
-      Iterable<Region> regions = api.regionApi().list().concat();
-
-      assertEquals(size(regions), 10); // Force the PagedIterable to advance
-      assertEquals(server.getRequestCount(), 2);
-
-      assertSent(server, "GET", "/regions");
-      assertSent(server, "GET", "/regions?page=2&per_page=5");
-   }
-
-   public void testListRegionsReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Region> regions = api.regionApi().list().concat();
-
-      assertTrue(isEmpty(regions));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/regions");
-   }
-
-   public void testListRegionsWithOptions() throws InterruptedException {
-      server.enqueue(jsonResponse("/regions-first.json"));
-
-      Iterable<Region> regions = api.regionApi().list(page(1).perPage(5));
-
-      assertEquals(size(regions), 5);
-      assertEquals(server.getRequestCount(), 1);
-
-      assertSent(server, "GET", "/regions?page=1&per_page=5");
-   }
-
-   public void testListRegionsWithOptionsReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Region> regions = api.regionApi().list(page(1).perPage(5));
-
-      assertTrue(isEmpty(regions));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/regions?page=1&per_page=5");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiLiveTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiLiveTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiLiveTest.java
deleted file mode 100644
index a9a8566..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiLiveTest.java
+++ /dev/null
@@ -1,62 +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.digitalocean2.features;
-
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-import static org.testng.Assert.assertTrue;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.jclouds.digitalocean2.domain.Size;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiLiveTest;
-import org.testng.annotations.Test;
-import org.testng.util.Strings;
-
-import com.google.common.base.Predicate;
-
-@Test(groups = "live", testName = "SizeApiLiveTest")
-public class SizeApiLiveTest extends BaseDigitalOcean2ApiLiveTest {
-   
-   public void testListSizes() {
-      final AtomicInteger found = new AtomicInteger(0);
-      // DigitalOcean return 25 records per page by default. Inspect at most 2 pages
-      assertTrue(api().list().concat().limit(50).allMatch(new Predicate<Size>() {
-         @Override
-         public boolean apply(Size input) {
-            found.incrementAndGet();
-            return !Strings.isNullOrEmpty(input.slug());
-         }
-      }), "All sizes must have the 'slug' field populated");
-      assertTrue(found.get() > 0, "Expected some sizes to be returned");
-   }
-   
-   public void testListSizesOnePage() {
-      final AtomicInteger found = new AtomicInteger(0);
-      assertTrue(api().list(page(1)).allMatch(new Predicate<Size>() {
-         @Override
-         public boolean apply(Size input) {
-            found.incrementAndGet();
-            return !Strings.isNullOrEmpty(input.slug());
-         }
-      }), "All sizes must have the 'slug' field populated");
-      assertTrue(found.get() > 0, "Expected some sizes to be returned");
-   }
-   
-   private SizeApi api() {
-      return api.sizeApi();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiMockTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiMockTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiMockTest.java
deleted file mode 100644
index 7403518..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/features/SizeApiMockTest.java
+++ /dev/null
@@ -1,77 +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.digitalocean2.features;
-
-import static com.google.common.collect.Iterables.isEmpty;
-import static com.google.common.collect.Iterables.size;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.Builder.page;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.digitalocean2.domain.Size;
-import org.jclouds.digitalocean2.internal.BaseDigitalOcean2ApiMockTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "SizeApiMockTest", singleThreaded = true)
-public class SizeApiMockTest extends BaseDigitalOcean2ApiMockTest {
-
-   public void testListSizes() throws InterruptedException {
-      server.enqueue(jsonResponse("/sizes-first.json"));
-      server.enqueue(jsonResponse("/sizes-last.json"));
-
-      Iterable<Size> sizes = api.sizeApi().list().concat();
-
-      assertEquals(size(sizes), 9); // Force the PagedIterable to advance
-      assertEquals(server.getRequestCount(), 2);
-
-      assertSent(server, "GET", "/sizes");
-      assertSent(server, "GET", "/sizes?page=2&per_page=5");
-   }
-
-   public void testListSizesReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Size> sizes = api.sizeApi().list().concat();
-
-      assertTrue(isEmpty(sizes));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/sizes");
-   }
-
-   public void testListSizesWithOptions() throws InterruptedException {
-      server.enqueue(jsonResponse("/sizes-first.json"));
-
-      Iterable<Size> sizes = api.sizeApi().list(page(1).perPage(5));
-
-      assertEquals(size(sizes), 5);
-      assertEquals(server.getRequestCount(), 1);
-
-      assertSent(server, "GET", "/sizes?page=1&per_page=5");
-   }
-
-   public void testListSizesWithOptionsReturns404() throws InterruptedException {
-      server.enqueue(response404());
-
-      Iterable<Size> sizes = api.sizeApi().list(page(1).perPage(5));
-
-      assertTrue(isEmpty(sizes));
-
-      assertEquals(server.getRequestCount(), 1);
-      assertSent(server, "GET", "/sizes?page=1&per_page=5");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToImageListOptionsTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToImageListOptionsTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToImageListOptionsTest.java
deleted file mode 100644
index 22985fa..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToImageListOptionsTest.java
+++ /dev/null
@@ -1,65 +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.digitalocean2.functions;
-
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static org.jclouds.digitalocean2.domain.options.ImageListOptions.PRIVATE_PARAM;
-import static org.jclouds.digitalocean2.domain.options.ImageListOptions.TYPE_PARAM;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.PAGE_PARAM;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.PER_PAGE_PARAM;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-
-import java.net.URI;
-
-import org.jclouds.digitalocean2.domain.options.ImageListOptions;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.Multimap;
-
-@Test(groups = "unit", testName = "LinkToImageListOptionsTest")
-public class LinkToImageListOptionsTest {
-
-   public void testNoOptions() {
-      LinkToImageListOptions function = new LinkToImageListOptions();
-
-      ImageListOptions options = function.apply(URI.create("https://api.digitalocean.com/v2/images"));
-      assertNotNull(options);
-
-      Multimap<String, String> params = options.buildQueryParameters();
-      assertFalse(params.containsKey(PAGE_PARAM));
-      assertFalse(params.containsKey(PER_PAGE_PARAM));
-      assertFalse(params.containsKey(TYPE_PARAM));
-      assertFalse(params.containsKey(PRIVATE_PARAM));
-   }
-
-   public void testWithOptions() {
-      LinkToImageListOptions function = new LinkToImageListOptions();
-
-      ImageListOptions options = function.apply(URI
-            .create("https://api.digitalocean.com/v2/images?page=1&per_page=5&type=distribution&private=true"));
-      assertNotNull(options);
-
-      Multimap<String, String> params = options.buildQueryParameters();
-      assertEquals(getOnlyElement(params.get(PAGE_PARAM)), "1");
-      assertEquals(getOnlyElement(params.get(PER_PAGE_PARAM)), "5");
-      assertEquals(getOnlyElement(params.get(TYPE_PARAM)), "distribution");
-      assertEquals(getOnlyElement(params.get(PRIVATE_PARAM)), "true");
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToListOptionsTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToListOptionsTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToListOptionsTest.java
deleted file mode 100644
index 2bb3544..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/functions/LinkToListOptionsTest.java
+++ /dev/null
@@ -1,58 +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.digitalocean2.functions;
-
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.PAGE_PARAM;
-import static org.jclouds.digitalocean2.domain.options.ListOptions.PER_PAGE_PARAM;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-
-import java.net.URI;
-
-import org.jclouds.digitalocean2.domain.options.ListOptions;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.Multimap;
-
-@Test(groups = "unit", testName = "LinkToListOptionsTest")
-public class LinkToListOptionsTest {
-
-   public void testNoOptions() {
-      LinkToListOptions function = new LinkToListOptions();
-
-      ListOptions options = function.apply(URI.create("https://api.digitalocean.com/v2/actions"));
-      assertNotNull(options);
-
-      Multimap<String, String> params = options.buildQueryParameters();
-      assertFalse(params.containsKey(PAGE_PARAM));
-      assertFalse(params.containsKey(PER_PAGE_PARAM));
-   }
-
-   public void testWithOptions() {
-      LinkToListOptions function = new LinkToListOptions();
-
-      ListOptions options = function.apply(URI.create("https://api.digitalocean.com/v2/actions?page=2&per_page=5"));
-      assertNotNull(options);
-
-      Multimap<String, String> params = options.buildQueryParameters();
-      assertEquals(getOnlyElement(params.get(PAGE_PARAM)), "2");
-      assertEquals(getOnlyElement(params.get(PER_PAGE_PARAM)), "5");
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/handlers/RateLimitRetryHandlerTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/handlers/RateLimitRetryHandlerTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/handlers/RateLimitRetryHandlerTest.java
deleted file mode 100644
index 6c7c87f..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/handlers/RateLimitRetryHandlerTest.java
+++ /dev/null
@@ -1,153 +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.digitalocean2.handlers;
-
-import static org.jclouds.digitalocean2.handlers.RateLimitRetryHandler.RATE_LIMIT_RESET_HEADER;
-import static org.jclouds.http.HttpUtils.releasePayload;
-import static org.jclouds.io.Payloads.newInputStreamPayload;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
-import java.util.concurrent.TimeUnit;
-
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.io.Payload;
-import org.testng.annotations.Test;
-
-import com.google.common.util.concurrent.Uninterruptibles;
-
-@Test(groups = "unit", testName = "RateLimitRetryHandlerTest")
-public class RateLimitRetryHandlerTest {
-
-   // Configure a safe timeout of one minute to abort the tests in case they get
-   // stuck
-   private static final long TEST_SAFE_TIMEOUT = 60000;
-
-   private final RateLimitRetryHandler rateLimitRetryHandler = new RateLimitRetryHandler();
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDoNotRetryIfNoRateLimit() {
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(450).build();
-
-      assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDoNotRetryIfNotReplayable() {
-      // InputStream payloads are not replayable
-      Payload payload = newInputStreamPayload(new ByteArrayInputStream(new byte[0]));
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost")
-            .payload(payload).build());
-      HttpResponse response = HttpResponse.builder().statusCode(429).build();
-
-      try {
-         assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-      } finally {
-         releasePayload(command.getCurrentRequest());
-      }
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDoNotRetryIfNoRateLimitResetHeader() {
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(429).build();
-
-      assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDoNotRetryIfTooMuchWait() {
-      // 5 minutes Unix epoch timestamp
-      long rateLimitResetEpoch = (System.currentTimeMillis() + 300000) / 1000;
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(429)
-            .addHeader(RATE_LIMIT_RESET_HEADER, String.valueOf(rateLimitResetEpoch)).build();
-
-      assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testRequestIsDelayed() {
-      // 5 seconds Unix epoch timestamp
-      long rateLimitResetEpoch = (System.currentTimeMillis() + 5000) / 1000;
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(429)
-            .addHeader(RATE_LIMIT_RESET_HEADER, String.valueOf(rateLimitResetEpoch)).build();
-
-      long start = System.currentTimeMillis();
-
-      assertTrue(rateLimitRetryHandler.shouldRetryRequest(command, response));
-      // Should have blocked the amount of time configured in the header. Use a
-      // smaller value to compensate the time it takes to reach the code that
-      // computes the amount of time to wait.
-      assertTrue(System.currentTimeMillis() - start > 2500);
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDoNotRetryIfRequestIsAborted() throws Exception {
-      // 10 seconds Unix epoch timestamp
-      long rateLimitResetEpoch = (System.currentTimeMillis() + 10000) / 1000;
-      final HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost")
-            .build());
-      final HttpResponse response = HttpResponse.builder().statusCode(429)
-            .addHeader(RATE_LIMIT_RESET_HEADER, String.valueOf(rateLimitResetEpoch)).build();
-
-      final Thread requestThread = Thread.currentThread();
-      Thread killer = new Thread() {
-         @Override
-         public void run() {
-            Uninterruptibles.sleepUninterruptibly(2, TimeUnit.SECONDS);
-            requestThread.interrupt();
-         }
-      };
-
-      // Start the killer thread that will abort the rate limit wait
-      killer.start();
-      assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testIncrementsFailureCount() {
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(429).build();
-
-      rateLimitRetryHandler.shouldRetryRequest(command, response);
-      assertEquals(command.getFailureCount(), 1);
-
-      rateLimitRetryHandler.shouldRetryRequest(command, response);
-      assertEquals(command.getFailureCount(), 2);
-
-      rateLimitRetryHandler.shouldRetryRequest(command, response);
-      assertEquals(command.getFailureCount(), 3);
-   }
-
-   @Test(timeOut = TEST_SAFE_TIMEOUT)
-   public void testDisallowExcessiveRetries() {
-      HttpCommand command = new HttpCommand(HttpRequest.builder().method("GET").endpoint("http://localhost").build());
-      HttpResponse response = HttpResponse.builder().statusCode(429).addHeader(RATE_LIMIT_RESET_HEADER, "0").build();
-
-      for (int i = 0; i < 5; i++) {
-         assertTrue(rateLimitRetryHandler.shouldRetryRequest(command, response));
-      }
-      assertFalse(rateLimitRetryHandler.shouldRetryRequest(command, response));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
deleted file mode 100644
index ee5bb55..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiLiveTest.java
+++ /dev/null
@@ -1,140 +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.digitalocean2.internal;
-
-import static com.google.common.base.Preconditions.checkState;
-import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING;
-import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED;
-import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-import static org.testng.util.Strings.isNullOrEmpty;
-
-import java.util.Properties;
-
-import org.jclouds.apis.BaseApiLiveTest;
-import org.jclouds.compute.config.ComputeServiceProperties;
-import org.jclouds.digitalocean2.DigitalOcean2Api;
-import org.jclouds.digitalocean2.config.DigitalOcean2RateLimitModule;
-import org.jclouds.digitalocean2.domain.Action;
-import org.jclouds.digitalocean2.domain.Image;
-import org.jclouds.digitalocean2.domain.Region;
-import org.jclouds.digitalocean2.domain.Size;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ComparisonChain;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Ordering;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.Module;
-import com.google.inject.TypeLiteral;
-import com.google.inject.name.Names;
-
-public class BaseDigitalOcean2ApiLiveTest extends BaseApiLiveTest<DigitalOcean2Api> {
-
-   private Predicate<Integer> actionCompleted;
-   private Predicate<Integer> nodeTerminated;
-   private Predicate<Integer> nodeStopped;
-   private Predicate<Integer> nodeRunning;
-
-   public BaseDigitalOcean2ApiLiveTest() {
-      provider = "digitalocean2";
-   }
-
-   @Override protected Properties setupProperties() {
-      Properties props = super.setupProperties();
-      props.put(ComputeServiceProperties.POLL_INITIAL_PERIOD, 1000);
-      props.put(ComputeServiceProperties.POLL_MAX_PERIOD, 10000);
-      return props;
-   }
-
-   @Override protected DigitalOcean2Api create(Properties props, Iterable<Module> modules) {
-      Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();
-      actionCompleted = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){}));
-      nodeTerminated = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
-            Names.named(TIMEOUT_NODE_TERMINATED)));
-      nodeStopped = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
-            Names.named(TIMEOUT_NODE_SUSPENDED)));
-      nodeRunning = injector.getInstance(Key.get(new TypeLiteral<Predicate<Integer>>(){},
-            Names.named(TIMEOUT_NODE_RUNNING)));
-      return injector.getInstance(DigitalOcean2Api.class);
-   }
-
-   @Override protected Iterable<Module> setupModules() {
-      return ImmutableSet.<Module> builder().addAll(super.setupModules()).add(new DigitalOcean2RateLimitModule())
-            .build();
-   }
-
-   protected void assertActionCompleted(int actionId) {
-      checkState(actionCompleted.apply(actionId), "Timeout waiting for action: %s", actionId);
-      Action action = api.actionApi().get(actionId);
-      assertEquals(action.status(), Action.Status.COMPLETED);
-   }
-
-   protected void assertNodeStopped(int dropletId) {
-      assertTrue(nodeStopped.apply(dropletId), String.format("Droplet %s did not stop in the configured timeout", dropletId));
-   }
-
-   protected void assertNodeRunning(int dropletId) {
-      assertTrue(nodeRunning.apply(dropletId), String.format("Droplet %s did not start in the configured timeout", dropletId));
-   }
-
-   protected void assertNodeTerminated(int dropletId) {
-      assertTrue(nodeTerminated.apply(dropletId), String.format("Droplet %s was not terminated in the configured timeout", dropletId));
-   }
-   
-   protected Region firstAvailableRegion() {
-      return api.regionApi().list().concat().firstMatch(new Predicate<Region>() {
-         @Override
-         public boolean apply(Region input) {
-            return input.available();
-         }
-      }).get();
-   }
-   
-   protected Size cheapestSizeInRegion(final Region region) {
-      return sizesByPrice().min(api.sizeApi().list().concat().filter(new Predicate<Size>() {
-         @Override
-         public boolean apply(Size input) {
-            return input.available() && input.regions().contains(region.slug());
-         }
-      }));
-   }
-   
-   protected Image ubuntuImageInRegion(final Region region) {
-      return api.imageApi().list().concat().firstMatch(new Predicate<Image>() {
-         @Override
-         public boolean apply(Image input) {
-            return "Ubuntu".equalsIgnoreCase(input.distribution()) && !isNullOrEmpty(input.slug())
-                  && input.regions().contains(region.slug());
-         }
-      }).get();
-   }
-   
-   protected static Ordering<Size> sizesByPrice() {
-      return new Ordering<Size>() {
-         @Override
-         public int compare(Size left, Size right) {
-            return ComparisonChain.start()
-                  .compare(left.priceHourly(), right.priceHourly())
-                  .compare(left.priceMonthly(), right.priceMonthly())
-                  .result();
-         }
-      };
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiMockTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiMockTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiMockTest.java
deleted file mode 100644
index ca0c4bd..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/internal/BaseDigitalOcean2ApiMockTest.java
+++ /dev/null
@@ -1,142 +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.digitalocean2.internal;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor;
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.jclouds.ContextBuilder;
-import org.jclouds.concurrent.config.ExecutorServiceModule;
-import org.jclouds.digitalocean2.DigitalOcean2Api;
-import org.jclouds.digitalocean2.DigitalOcean2ProviderMetadata;
-import org.jclouds.json.Json;
-import org.jclouds.rest.ApiContext;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.io.Resources;
-import com.google.common.reflect.TypeToken;
-import com.google.gson.JsonParser;
-import com.google.inject.Module;
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-import com.squareup.okhttp.mockwebserver.RecordedRequest;
-
-public class BaseDigitalOcean2ApiMockTest {
-   
-   private static final String MOCK_BEARER_TOKEN = "c5401990f0c24135e8d6b5d260603fc71696d4738da9aa04a720229a01a2521d";
-   private static final String DEFAULT_ENDPOINT = new DigitalOcean2ProviderMetadata().getEndpoint();
-   
-   private final Set<Module> modules = ImmutableSet.<Module> of(new ExecutorServiceModule(sameThreadExecutor()));
-   
-   protected MockWebServer server;
-   protected DigitalOcean2Api api;
-   private Json json;
-   
-   // So that we can ignore formatting.
-   private final JsonParser parser = new JsonParser();
-   
-   @BeforeMethod
-   public void start() throws IOException {
-      server = new MockWebServer();
-      server.play();
-      ApiContext<DigitalOcean2Api> ctx = ContextBuilder.newBuilder("digitalocean2")
-            .credentials("", MOCK_BEARER_TOKEN)
-            .endpoint(url(""))
-            .modules(modules)
-            .overrides(overrides())
-            .build();
-      json = ctx.utils().injector().getInstance(Json.class);
-      api = ctx.getApi();
-   }
-
-   @AfterMethod(alwaysRun = true)
-   public void stop() throws IOException {
-      server.shutdown();
-      api.close();
-   }
-   
-   protected Properties overrides() {
-      return new Properties();
-   }
-
-   protected String url(String path) {
-      return server.getUrl(path).toString();
-   }
-
-   protected MockResponse jsonResponse(String resource) {
-      return new MockResponse().addHeader("Content-Type", "application/json").setBody(stringFromResource(resource));
-   }
-
-   protected MockResponse response404() {
-      return new MockResponse().setStatus("HTTP/1.1 404 Not Found");
-   }
-   
-   protected MockResponse response204() {
-      return new MockResponse().setStatus("HTTP/1.1 204 No Content");
-   }
-
-   protected String stringFromResource(String resourceName) {
-      try {
-         return Resources.toString(getClass().getResource(resourceName), Charsets.UTF_8)
-               .replace(DEFAULT_ENDPOINT, url(""));
-      } catch (IOException e) {
-         throw Throwables.propagate(e);
-      }
-   }
-   
-   protected <T> T onlyObjectFromResource(String resourceName, TypeToken<Map<String, T>> type) {
-      // Assume JSON objects passed here will be in the form: { "entity": { ... } }
-      String text = stringFromResource(resourceName);
-      Map<String, T> object = json.fromJson(text, type.getType());
-      checkArgument(!object.isEmpty(), "The given json does not contain any object: %s", text);
-      checkArgument(object.keySet().size() == 1, "The given json does not contain more than one object: %s", text);
-      return object.get(getOnlyElement(object.keySet()));
-   }
-   
-   protected <T> T objectFromResource(String resourceName, Class<T> type) {
-      String text = stringFromResource(resourceName);
-      return json.fromJson(text, type);
-   }
-
-   protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException {
-      RecordedRequest request = server.takeRequest();
-      assertEquals(request.getMethod(), method);
-      assertEquals(request.getPath(), path);
-      assertEquals(request.getHeader("Accept"), "application/json");
-      assertEquals(request.getHeader("Authorization"), "Bearer " + MOCK_BEARER_TOKEN);
-      return request;
-   }
-
-   protected RecordedRequest assertSent(MockWebServer server, String method, String path, String json)
-         throws InterruptedException {
-      RecordedRequest request = assertSent(server, method, path);
-      assertEquals(request.getHeader("Content-Type"), "application/json");
-      assertEquals(parser.parse(new String(request.getBody(), Charsets.UTF_8)), parser.parse(json));
-      return request;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/DSAKeysTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/DSAKeysTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/DSAKeysTest.java
deleted file mode 100644
index 91f3c96..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/DSAKeysTest.java
+++ /dev/null
@@ -1,54 +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.digitalocean2.ssh;
-
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-import java.security.KeyFactory;
-import java.security.NoSuchAlgorithmException;
-import java.security.interfaces.DSAPublicKey;
-import java.security.spec.DSAPublicKeySpec;
-import java.security.spec.InvalidKeySpecException;
-
-import org.jclouds.util.Strings2;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link DSAKeys} class.
- */
-@Test(groups = "unit", testName = "DSAKeysTest")
-public class DSAKeysTest {
-
-   private static final String expectedFingerPrint = "2a:54:bb:8e:ba:44:96:c8:6c:9c:40:34:3c:4d:38:e4";
-
-   @Test
-   public void testCanReadRsaAndCompareFingerprintOnPublicRSAKey() throws IOException {
-      String dsa = Strings2.toStringAndClose(getClass().getResourceAsStream("/ssh-dsa.pub"));
-      String fingerPrint = DSAKeys.fingerprintPublicKey(dsa);
-      assertEquals(fingerPrint, expectedFingerPrint);
-   }
-
-   @Test
-   public void testEncodeAsOpenSSH() throws IOException, InvalidKeySpecException, NoSuchAlgorithmException {
-      String dsa = Strings2.toStringAndClose(getClass().getResourceAsStream("/ssh-dsa.pub"));
-      DSAPublicKeySpec spec = DSAKeys.publicKeySpecFromOpenSSH(dsa);
-      DSAPublicKey key = (DSAPublicKey) KeyFactory.getInstance("DSA").generatePublic(spec);
-
-      assertEquals(DSAKeys.encodeAsOpenSSH(key), dsa);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/ECDSAKeysTest.java
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/ECDSAKeysTest.java b/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/ECDSAKeysTest.java
deleted file mode 100644
index 2053ac7..0000000
--- a/digitalocean2/src/test/java/org/jclouds/digitalocean2/ssh/ECDSAKeysTest.java
+++ /dev/null
@@ -1,55 +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.digitalocean2.ssh;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
-import java.security.KeyFactory;
-import java.security.NoSuchAlgorithmException;
-import java.security.interfaces.ECPublicKey;
-import java.security.spec.ECPublicKeySpec;
-import java.security.spec.InvalidKeySpecException;
-
-import org.jclouds.util.Strings2;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for the {@link ECDSAKeysTest} class.
- */
-@Test(groups = "unit", testName = "ECDSAKeysTest")
-public class ECDSAKeysTest {
-
-   private static final String expectedFingerPrint = "0e:9f:aa:cc:3e:79:5d:1e:f9:19:58:08:dc:c4:5e:1c";
-
-   @Test
-   public void testCanReadRsaAndCompareFingerprintOnPublicECDSAKey() throws IOException {
-      String ecdsa = Strings2.toStringAndClose(getClass().getResourceAsStream("/ssh-ecdsa.pub"));
-      String fingerPrint = ECDSAKeys.fingerprintPublicKey(ecdsa);
-      assertEquals(fingerPrint, expectedFingerPrint);
-   }
-
-   @Test
-   public void testEncodeAsOpenSSH() throws IOException, InvalidKeySpecException, NoSuchAlgorithmException {
-      String ecdsa = Strings2.toStringAndClose(getClass().getResourceAsStream("/ssh-ecdsa.pub"));
-      ECPublicKeySpec spec = ECDSAKeys.publicKeySpecFromOpenSSH(ecdsa);
-      ECPublicKey key = (ECPublicKey) KeyFactory.getInstance("EC").generatePublic(spec);
-
-      assertTrue(ecdsa.startsWith(ECDSAKeys.encodeAsOpenSSH(key)));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/action.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/action.json b/digitalocean2/src/test/resources/action.json
deleted file mode 100644
index 0202ca0..0000000
--- a/digitalocean2/src/test/resources/action.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "action": {
-         "region" : {
-            "name" : "New York 1",
-            "available" : true,
-            "slug" : "nyc1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ]
-         },
-         "started_at" : "2015-05-19T15:17:55Z",
-         "status" : "completed",
-         "resource_type" : "droplet",
-         "resource_id" : 5347489,
-         "region_slug" : "nyc1",
-         "id" : 50900149,
-         "completed_at" : "2015-05-19T15:18:01Z",
-         "type" : "destroy"
-      }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/actions-first.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/actions-first.json b/digitalocean2/src/test/resources/actions-first.json
deleted file mode 100644
index c19fde3..0000000
--- a/digitalocean2/src/test/resources/actions-first.json
+++ /dev/null
@@ -1,168 +0,0 @@
-{
-   "actions" : [
-      {
-         "region" : {
-            "name" : "New York 1",
-            "available" : true,
-            "slug" : "nyc1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ]
-         },
-         "started_at" : "2015-05-19T15:17:55Z",
-         "status" : "completed",
-         "resource_type" : "droplet",
-         "resource_id" : 5347489,
-         "region_slug" : "nyc1",
-         "id" : 50900149,
-         "completed_at" : "2015-05-19T15:18:01Z",
-         "type" : "destroy"
-      },
-      {
-         "started_at" : "2015-05-19T15:07:55Z",
-         "region" : {
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true,
-            "slug" : "nyc1",
-            "name" : "New York 1"
-         },
-         "status" : "completed",
-         "resource_type" : "droplet",
-         "region_slug" : "nyc1",
-         "id" : 50899364,
-         "resource_id" : 5346565,
-         "completed_at" : "2015-05-19T15:08:04Z",
-         "type" : "destroy"
-      },
-      {
-         "completed_at" : "2015-05-19T13:39:59Z",
-         "type" : "create",
-         "region" : {
-            "name" : "New York 1",
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true,
-            "slug" : "nyc1"
-         },
-         "started_at" : "2015-05-19T13:39:12Z",
-         "resource_type" : "droplet",
-         "status" : "completed",
-         "resource_id" : 5347489,
-         "region_slug" : "nyc1",
-         "id" : 50892713
-      },
-      {
-         "resource_id" : 5346565,
-         "region_slug" : "nyc1",
-         "id" : 50888077,
-         "status" : "completed",
-         "resource_type" : "droplet",
-         "region" : {
-            "name" : "New York 1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true,
-            "slug" : "nyc1",
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ]
-         },
-         "started_at" : "2015-05-19T12:37:23Z",
-         "type" : "create",
-         "completed_at" : "2015-05-19T12:38:13Z"
-      },
-      {
-         "completed_at" : "2015-05-19T11:33:00Z",
-         "type" : "destroy",
-         "status" : "completed",
-         "resource_type" : "droplet",
-         "started_at" : "2015-05-19T11:32:55Z",
-         "region" : {
-            "available" : true,
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "slug" : "nyc1",
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "name" : "New York 1"
-         },
-         "region_slug" : "nyc1",
-         "id" : 50884032,
-         "resource_id" : 5344505
-      }
-   ],
-   "links" : {
-      "pages" : {
-         "last" : "https://api.digitalocean.com/v2/actions?page=2&per_page=5",
-         "next" : "https://api.digitalocean.com/v2/actions?page=2&per_page=5"
-      }
-   },
-   "meta" : {
-      "total" : 8
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/actions-last.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/actions-last.json b/digitalocean2/src/test/resources/actions-last.json
deleted file mode 100644
index 5d86e7a..0000000
--- a/digitalocean2/src/test/resources/actions-last.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
-   "meta" : {
-      "total" : 8
-   },
-   "links" : {
-      "pages" : {
-         "first" : "https://api.digitalocean.com/v2/actions?page=1&per_page=5",
-         "prev" : "https://api.digitalocean.com/v2/actions?page=1&per_page=5"
-      }
-   },
-   "actions" : [
-      {
-         "region" : {
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "available" : true,
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "slug" : "nyc1",
-            "name" : "New York 1"
-         },
-         "started_at" : "2014-01-18T22:39:08Z",
-         "type" : "create",
-         "resource_type" : "droplet",
-         "id" : 14115951,
-         "completed_at" : "2014-01-18T22:41:14Z",
-         "region_slug" : "nyc1",
-         "resource_id" : 1010699,
-         "status" : "completed"
-      },
-      {
-         "started_at" : "2014-01-18T22:39:06Z",
-         "type" : "create",
-         "resource_type" : "droplet",
-         "region" : {
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "slug" : "nyc1",
-            "name" : "New York 1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true
-         },
-         "resource_id" : 1010697,
-         "region_slug" : "nyc1",
-         "status" : "completed",
-         "id" : 14115948,
-         "completed_at" : "2014-01-18T22:40:43Z"
-      },
-      {
-         "region_slug" : "nyc1",
-         "resource_id" : 1010698,
-         "status" : "completed",
-         "id" : 14115949,
-         "completed_at" : "2014-01-18T22:44:08Z",
-         "type" : "create",
-         "started_at" : "2014-01-18T22:39:06Z",
-         "resource_type" : "droplet",
-         "region" : {
-            "sizes" : [
-               "512mb",
-               "8gb",
-               "16gb",
-               "32gb",
-               "48gb",
-               "64gb",
-               "1gb",
-               "2gb",
-               "4gb"
-            ],
-            "slug" : "nyc1",
-            "name" : "New York 1",
-            "available" : true,
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ]
-         }
-      }
-   ]
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/backups-first.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/backups-first.json b/digitalocean2/src/test/resources/backups-first.json
deleted file mode 100644
index f1083f1..0000000
--- a/digitalocean2/src/test/resources/backups-first.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "backups": [
-    {
-      "id": 7622989,
-      "name": "example.com 2014-11-14",
-      "distribution": "Ubuntu",
-      "slug": null,
-      "public": false,
-      "regions": [
-        "nyc3"
-      ],
-      "created_at": "2014-11-14T16:07:38Z",
-      "type": "snapshot",
-      "min_disk_size": 20
-    }
-  ],
-  "links" : {
-      "pages" : {
-         "last" : "https://api.digitalocean.com/v2/droplets/3067509/backups?page=2",
-         "next" : "https://api.digitalocean.com/v2/droplets/3067509/backups?page=2"
-      }
-  },
-  "meta": {
-    "total": 2
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/backups-last.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/backups-last.json b/digitalocean2/src/test/resources/backups-last.json
deleted file mode 100644
index c927c19..0000000
--- a/digitalocean2/src/test/resources/backups-last.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "backups": [
-    {
-      "id": 76229890,
-      "name": "example.com 2014-11-14",
-      "distribution": "Ubuntu",
-      "slug": null,
-      "public": false,
-      "regions": [
-        "nyc3"
-      ],
-      "created_at": "2014-11-14T16:07:38Z",
-      "type": "snapshot",
-      "min_disk_size": 20
-    }
-  ],
-  "links" : {
-      "pages" : {
-         "first" : "https://api.digitalocean.com/v2/droplets/3067509/backups?page=1",
-         "prev" : "https://api.digitalocean.com/v2/droplets/3067509/backups?page=1"
-      }
-  },
-  "meta": {
-    "total": 2
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/droplet-create-req.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/droplet-create-req.json b/digitalocean2/src/test/resources/droplet-create-req.json
deleted file mode 100644
index 3ed5273..0000000
--- a/digitalocean2/src/test/resources/droplet-create-req.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "name": "digitalocean2-s-d5e",
-    "region": "sfo1",
-    "size": "512mb",
-    "image": "6374124",
-    "ssh_keys": [
-        421192
-    ],
-    "backups": false,
-    "ipv6": false,
-    "private_networking": false
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/droplet-create-res.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/droplet-create-res.json b/digitalocean2/src/test/resources/droplet-create-res.json
deleted file mode 100644
index a7d37a5..0000000
--- a/digitalocean2/src/test/resources/droplet-create-res.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "droplet": {
-        "id": 2987224,
-        "name": "digitalocean2-s-d5e",
-        "memory": 512,
-        "vcpus": 1,
-        "disk": 20,
-        "locked": true,
-        "status": "new",
-        "kernel": {
-            "id": 70,
-            "name": "Ubuntu 10.04 x64 vmlinuz-2.6.32-41-server",
-            "version": "2.6.32-41-server"
-        },
-        "created_at": "2014-10-27T19:33:34Z",
-        "features": [
-            "virtio"
-        ],
-        "backup_ids": [],
-        "snapshot_ids": [],
-        "image": {},
-        "size_slug": "512mb",
-        "networks": {},
-        "region": {}
-    },
-    "links": {
-        "actions": [
-            {
-                "id": 35383956,
-                "rel": "create",
-                "href": "https://api.digitalocean.com/v2/actions/35383956"
-            }
-        ]
-    }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/droplet.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/droplet.json b/digitalocean2/src/test/resources/droplet.json
deleted file mode 100644
index fb995c5..0000000
--- a/digitalocean2/src/test/resources/droplet.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-   "droplet" :
-      {
-         "created_at" : "2015-05-25T15:50:48Z",
-         "region" : {
-            "name" : "New York 1",
-            "sizes" : [
-               "32gb",
-               "16gb",
-               "2gb",
-               "1gb",
-               "4gb",
-               "8gb",
-               "512mb",
-               "64gb",
-               "48gb"
-            ],
-            "slug" : "nyc1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true
-         },
-         "id" : 5425561,
-         "disk" : 20,
-         "networks" : {
-            "v6" : [],
-            "v4" : [
-               {
-                  "type" : "public",
-                  "ip_address" : "162.243.167.46",
-                  "netmask" : "255.255.255.0",
-                  "gateway" : "162.243.167.1"
-               }
-            ]
-         },
-         "backup_ids" : [],
-         "image" : {
-            "slug" : "ubuntu-14-10-x32",
-            "public" : true,
-            "created_at" : "2015-01-08T18:41:22Z",
-            "distribution" : "Ubuntu",
-            "id" : 9801951,
-            "type" : "snapshot",
-            "regions" : [
-               "nyc1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "ams2",
-               "sgp1",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "fra1"
-            ],
-            "name" : "14.10 x32",
-            "min_disk_size" : 20
-         },
-         "vcpus" : 1,
-         "next_backup_window" : {
-            "end" : "2015-06-01T23:00:00Z",
-            "start" : "2015-06-01T00:00:00Z"
-         },
-         "locked" : false,
-         "snapshot_ids" : [],
-         "kernel" : {
-            "name" : "Ubuntu 14.10 x32 vmlinuz-3.16.0-28-generic",
-            "id" : 2926,
-            "version" : "3.16.0-28-generic"
-         },
-         "status" : "active",
-         "features" : [
-            "backups",
-            "virtio"
-         ],
-         "size" : {
-            "price_hourly" : 0.00744,
-            "slug" : "512mb",
-            "disk" : 20,
-            "available" : true,
-            "transfer" : 1,
-            "price_monthly" : 5,
-            "regions" : [
-               "nyc1",
-               "sgp1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "ams2",
-               "fra1"
-            ],
-            "memory" : 512,
-            "vcpus" : 1
-         },
-         "name" : "test1",
-         "size_slug" : "512mb",
-         "memory" : 512
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/droplets-first.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/droplets-first.json b/digitalocean2/src/test/resources/droplets-first.json
deleted file mode 100644
index 5493f7f..0000000
--- a/digitalocean2/src/test/resources/droplets-first.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
-   "links" : {
-      "pages" : {
-         "next" : "https://api.digitalocean.com/v2/droplets/5425561?page=2&per_page=1",
-         "last" : "https://api.digitalocean.com/v2/droplets/5425561?page=2&per_page=1"
-      }
-   },
-   "meta" : {
-      "total" : 2
-   },
-   "droplets" : [
-      {
-         "created_at" : "2015-05-25T15:50:48Z",
-         "region" : {
-            "name" : "New York 1",
-            "sizes" : [
-               "32gb",
-               "16gb",
-               "2gb",
-               "1gb",
-               "4gb",
-               "8gb",
-               "512mb",
-               "64gb",
-               "48gb"
-            ],
-            "slug" : "nyc1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true
-         },
-         "id" : 5425561,
-         "disk" : 20,
-         "networks" : {
-            "v6" : [],
-            "v4" : [
-               {
-                  "type" : "public",
-                  "ip_address" : "162.243.167.46",
-                  "netmask" : "255.255.255.0",
-                  "gateway" : "162.243.167.1"
-               }
-            ]
-         },
-         "backup_ids" : [],
-         "image" : {
-            "slug" : "ubuntu-14-10-x32",
-            "public" : true,
-            "created_at" : "2015-01-08T18:41:22Z",
-            "distribution" : "Ubuntu",
-            "id" : 9801951,
-            "type" : "snapshot",
-            "regions" : [
-               "nyc1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "ams2",
-               "sgp1",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "fra1"
-            ],
-            "name" : "14.10 x32",
-            "min_disk_size" : 20
-         },
-         "vcpus" : 1,
-         "next_backup_window" : {
-            "end" : "2015-06-01T23:00:00Z",
-            "start" : "2015-06-01T00:00:00Z"
-         },
-         "locked" : false,
-         "snapshot_ids" : [],
-         "kernel" : {
-            "name" : "Ubuntu 14.10 x32 vmlinuz-3.16.0-28-generic",
-            "id" : 2926,
-            "version" : "3.16.0-28-generic"
-         },
-         "status" : "active",
-         "features" : [
-            "backups",
-            "virtio"
-         ],
-         "size" : {
-            "price_hourly" : 0.00744,
-            "slug" : "512mb",
-            "disk" : 20,
-            "available" : true,
-            "transfer" : 1,
-            "price_monthly" : 5,
-            "regions" : [
-               "nyc1",
-               "sgp1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "ams2",
-               "fra1"
-            ],
-            "memory" : 512,
-            "vcpus" : 1
-         },
-         "name" : "test1",
-         "size_slug" : "512mb",
-         "memory" : 512
-      }
-   ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/droplets-last.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/droplets-last.json b/digitalocean2/src/test/resources/droplets-last.json
deleted file mode 100644
index beeb654..0000000
--- a/digitalocean2/src/test/resources/droplets-last.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
-   "links" : {
-      "pages" : {
-         "first" : "https://api.digitalocean.com/v2/droplets/5425561?page=2&per_page=1",
-         "prev" : "https://api.digitalocean.com/v2/droplets/5425561?page=2&per_page=1"
-      }
-   },
-   "meta" : {
-      "total" : 2
-   },
-   "droplets" : [
-      {
-         "created_at" : "2015-05-25T15:50:48Z",
-         "region" : {
-            "name" : "New York 1",
-            "sizes" : [
-               "32gb",
-               "16gb",
-               "2gb",
-               "1gb",
-               "4gb",
-               "8gb",
-               "512mb",
-               "64gb",
-               "48gb"
-            ],
-            "slug" : "nyc1",
-            "features" : [
-               "virtio",
-               "backups",
-               "metadata"
-            ],
-            "available" : true
-         },
-         "id" : 5425561,
-         "disk" : 20,
-         "networks" : {
-            "v6" : [],
-            "v4" : [
-               {
-                  "type" : "public",
-                  "ip_address" : "162.243.167.46",
-                  "netmask" : "255.255.255.0",
-                  "gateway" : "162.243.167.1"
-               }
-            ]
-         },
-         "backup_ids" : [],
-         "image" : {
-            "slug" : "ubuntu-14-10-x32",
-            "public" : true,
-            "created_at" : "2015-01-08T18:41:22Z",
-            "distribution" : "Ubuntu",
-            "id" : 9801951,
-            "type" : "snapshot",
-            "regions" : [
-               "nyc1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "ams2",
-               "sgp1",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "fra1"
-            ],
-            "name" : "14.10 x32",
-            "min_disk_size" : 20
-         },
-         "vcpus" : 1,
-         "next_backup_window" : {
-            "end" : "2015-06-01T23:00:00Z",
-            "start" : "2015-06-01T00:00:00Z"
-         },
-         "locked" : false,
-         "snapshot_ids" : [],
-         "kernel" : {
-            "name" : "Ubuntu 14.10 x32 vmlinuz-3.16.0-28-generic",
-            "id" : 2926,
-            "version" : "3.16.0-28-generic"
-         },
-         "status" : "active",
-         "features" : [
-            "backups",
-            "virtio"
-         ],
-         "size" : {
-            "price_hourly" : 0.00744,
-            "slug" : "512mb",
-            "disk" : 20,
-            "available" : true,
-            "transfer" : 1,
-            "price_monthly" : 5,
-            "regions" : [
-               "nyc1",
-               "sgp1",
-               "ams1",
-               "sfo1",
-               "nyc2",
-               "lon1",
-               "nyc3",
-               "ams3",
-               "ams2",
-               "fra1"
-            ],
-            "memory" : 512,
-            "vcpus" : 1
-         },
-         "name" : "test1",
-         "size_slug" : "512mb",
-         "memory" : 512
-      }
-   ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/image.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/image.json b/digitalocean2/src/test/resources/image.json
deleted file mode 100644
index e66fda9..0000000
--- a/digitalocean2/src/test/resources/image.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-   "image" : {
-         "type" : "snapshot",
-         "id" : 11732785,
-         "name" : "Maintenance Mode",
-         "min_disk_size" : 20,
-         "distribution" : "Debian",
-         "created_at" : "2015-05-05T21:21:25Z",
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "slug" : null,
-         "public" : true
-    }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/images-first.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/images-first.json b/digitalocean2/src/test/resources/images-first.json
deleted file mode 100644
index 7d98cf9..0000000
--- a/digitalocean2/src/test/resources/images-first.json
+++ /dev/null
@@ -1,108 +0,0 @@
-{
-   "meta" : {
-      "total" : 54
-   },
-   "links" : {
-      "pages" : {
-         "next" : "https://api.digitalocean.com/v2/images?page=2&per_page=5&type=distribution",
-         "last" : "https://api.digitalocean.com/v2/images?page=11&per_page=5&type=distribution"
-      }
-   },
-   "images" : [
-      {
-         "type" : "snapshot",
-         "id" : 11732785,
-         "name" : "Maintenance Mode",
-         "min_disk_size" : 20,
-         "distribution" : "Debian",
-         "created_at" : "2015-05-05T21:21:25Z",
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "slug" : null,
-         "public" : true
-      },
-      {
-         "type" : "snapshot",
-         "id" : 11833262,
-         "distribution" : "CoreOS",
-         "created_at" : "2015-05-12T17:41:36Z",
-         "regions" : [
-            "nyc1",
-            "sfo1",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "public" : true,
-         "slug" : "coreos-stable",
-         "name" : "647.0.0 (stable)",
-         "min_disk_size" : 20
-      },
-      {
-         "min_disk_size" : 20,
-         "name" : "668.3.0 (beta)",
-         "created_at" : "2015-05-18T18:14:12Z",
-         "public" : true,
-         "regions" : [
-            "nyc1",
-            "sfo1",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "slug" : "coreos-beta",
-         "distribution" : "CoreOS",
-         "id" : 11919888,
-         "type" : "snapshot"
-      },
-      {
-         "type" : "snapshot",
-         "id" : 11919908,
-         "distribution" : "CoreOS",
-         "created_at" : "2015-05-18T18:20:08Z",
-         "public" : true,
-         "regions" : [
-            "nyc1",
-            "sfo1",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "slug" : "coreos-alpha",
-         "name" : "681.0.0 (alpha)",
-         "min_disk_size" : 20
-      },
-      {
-         "min_disk_size" : 30,
-         "name" : "vum-easter-move",
-         "slug" : null,
-         "regions" : [
-            "ams1"
-         ],
-         "public" : true,
-         "created_at" : "2015-04-10T07:31:20Z",
-         "distribution" : "Debian",
-         "id" : 11385199,
-         "type" : "snapshot"
-      }
-   ]
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a6044372/digitalocean2/src/test/resources/images-last.json
----------------------------------------------------------------------
diff --git a/digitalocean2/src/test/resources/images-last.json b/digitalocean2/src/test/resources/images-last.json
deleted file mode 100644
index 89642fe..0000000
--- a/digitalocean2/src/test/resources/images-last.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
-   "meta" : {
-      "total" : 54
-   },
-   "links" : {
-      "pages" : {
-         "prev" : "https://api.digitalocean.com/v2/images?page=1&per_page=5&type=distribution",
-         "first" : "https://api.digitalocean.com/v2/images?page=1&per_page=5&type=distribution"
-      }
-   },
-   "images" : [
-      {
-         "distribution" : "Fedora",
-         "min_disk_size" : 20,
-         "id" : 6370882,
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "name" : "20 x64",
-         "type" : "snapshot",
-         "slug" : "fedora-20-x64",
-         "public" : true,
-         "created_at" : "2014-09-26T15:29:01Z"
-      },
-      {
-         "name" : "20 x32",
-         "type" : "snapshot",
-         "distribution" : "Fedora",
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "id" : 6370885,
-         "min_disk_size" : 20,
-         "created_at" : "2014-09-26T15:29:18Z",
-         "public" : true,
-         "slug" : "fedora-20-x32"
-      },
-      {
-         "created_at" : "2014-09-26T16:40:18Z",
-         "slug" : "centos-5-8-x64",
-         "public" : true,
-         "type" : "snapshot",
-         "name" : "5.10 x64",
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "min_disk_size" : 20,
-         "id" : 6372321,
-         "distribution" : "CentOS"
-      },
-      {
-         "public" : true,
-         "slug" : "centos-5-8-x32",
-         "created_at" : "2014-09-26T16:45:29Z",
-         "id" : 6372425,
-         "min_disk_size" : 20,
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "distribution" : "CentOS",
-         "type" : "snapshot",
-         "name" : "5.10 x32"
-      },
-      {
-         "created_at" : "2014-09-26T16:56:00Z",
-         "public" : true,
-         "slug" : "debian-6-0-x64",
-         "type" : "snapshot",
-         "name" : "6.0 x64",
-         "regions" : [
-            "nyc1",
-            "ams1",
-            "sfo1",
-            "nyc2",
-            "ams2",
-            "sgp1",
-            "lon1",
-            "nyc3",
-            "ams3",
-            "fra1"
-         ],
-         "min_disk_size" : 20,
-         "id" : 6372581,
-         "distribution" : "Debian"
-      }
-   ]
-}