Updated Branches: refs/heads/master 80c730dcf -> 40a05b9e5
Concurrent tests with better retries Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/commit/40a05b9e Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/tree/40a05b9e Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/diff/40a05b9e Branch: refs/heads/master Commit: 40a05b9e56813d9dcc125eefbb02715ef2b6caea Parents: 80c730d Author: zack-shoylev <[email protected]> Authored: Fri Jun 28 17:47:05 2013 -0500 Committer: Everett Toews <[email protected]> Committed: Mon Jul 15 09:00:19 2013 -0500 ---------------------------------------------------------------------- openstack-trove/pom.xml | 3 + .../trove/v1/features/DatabaseApiLiveTest.java | 20 ++-- .../trove/v1/features/InstanceApiLiveTest.java | 15 +-- .../trove/v1/features/UserApiLiveTest.java | 22 ++-- .../v1/internal/BaseTroveApiExpectTest.java | 2 +- .../openstack/trove/v1/internal/TroveUtils.java | 102 +++++++++++++++++++ .../trove/v1/internal/TroveUtilsExpectTest.java | 66 ++++++++++++ .../resources/instance_get_bad_instance.json | 37 +++++++ rackspace-clouddatabases-uk/pom.xml | 4 +- rackspace-clouddatabases-us/pom.xml | 4 +- 10 files changed, 241 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/pom.xml ---------------------------------------------------------------------- diff --git a/openstack-trove/pom.xml b/openstack-trove/pom.xml index 6b5f4db..001ded1 100644 --- a/openstack-trove/pom.xml +++ b/openstack-trove/pom.xml @@ -106,6 +106,9 @@ <goal>test</goal> </goals> <configuration> + <forkCount>5</forkCount> + <reuseForks>true</reuseForks> + <parallel>classes</parallel> <systemPropertyVariables> <test.openstack-trove.endpoint>${test.openstack-trove.endpoint}</test.openstack-trove.endpoint> <test.openstack-trove.api-version>${test.openstack-trove.api-version}</test.openstack-trove.api-version> http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java index 5859490..0bcd6a4 100644 --- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/DatabaseApiLiveTest.java @@ -18,14 +18,13 @@ package org.jclouds.openstack.trove.v1.features; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -import static org.testng.Assert.assertEquals; import java.util.List; import java.util.Map; import org.jclouds.openstack.trove.v1.domain.Instance; import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest; -import org.jclouds.openstack.trove.v1.predicates.InstancePredicates; +import org.jclouds.openstack.trove.v1.internal.TroveUtils; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -36,7 +35,7 @@ import com.google.common.collect.Maps; /** * @author Zack Shoylev */ -@Test(groups = "live", testName = "DatabaseApiLiveTest", singleThreaded = true) +@Test(groups = "live", testName = "DatabaseApiLiveTest") public class DatabaseApiLiveTest extends BaseTroveApiLiveTest { // zone to instance @@ -47,16 +46,14 @@ public class DatabaseApiLiveTest extends BaseTroveApiLiveTest { @BeforeClass(groups = { "integration", "live" }) public void setup() { super.setup(); + TroveUtils utils = new TroveUtils(api); for (String zone : api.getConfiguredZones()) { // create instances List<Instance> instanceList = Lists.newArrayList(); - InstanceApi instanceApi = api.getInstanceApiForZone(zone); - Instance first = instanceApi.create("1", 1, "first_database_testing_" + zone); - Instance second = instanceApi.create("1", 1, "second_database_testing_" + zone); + Instance first = utils.getWorkingInstance(zone, "first_database_testing_" + zone, "1", 1); + Instance second = utils.getWorkingInstance(zone, "second_database_testing_" + zone, "1", 1); instanceList.add(first); instanceList.add(second); - InstancePredicates.awaitAvailable(instanceApi).apply(first); - InstancePredicates.awaitAvailable(instanceApi).apply(second); instancesToDelete.put(zone, instanceList); DatabaseApi databaseApiFirst = api.getDatabaseApiForInstanceInZone(first.getId(), zone); @@ -85,7 +82,7 @@ public class DatabaseApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { DatabaseApi databaseApi = api.getDatabaseApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("database_testing"))continue; assertTrue(databaseApi.list().size() >=1); @@ -101,18 +98,15 @@ public class DatabaseApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { DatabaseApi databaseApi = api.getDatabaseApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("database_testing"))continue; assertTrue(databaseApi.list().size() >=1); for(String database : databaseApi.list()){ assertNotNull(database); assertTrue(database.equals("livetest_db1") || database.equals("livetest_db2") || database.equals("livetest_db3") ); - assertEquals(instanceApi.get(instance.getId()).getStatus(), Instance.Status.ACTIVE); assertTrue(databaseApi.delete(database)); - assertEquals(instanceApi.get(instance.getId()).getStatus(), Instance.Status.ACTIVE); assertTrue(databaseApi.create(database)); - assertEquals(instanceApi.get(instance.getId()).getStatus(), Instance.Status.ACTIVE); } } } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java index c416fe9..d092dd7 100644 --- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/InstanceApiLiveTest.java @@ -18,19 +18,22 @@ package org.jclouds.openstack.trove.v1.features; import static com.google.common.base.Preconditions.checkArgument; 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 static org.testng.Assert.assertFalse; + import java.util.Iterator; import java.util.List; import java.util.Map; + import org.jclouds.openstack.trove.v1.domain.Instance; import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest; -import org.jclouds.openstack.trove.v1.predicates.InstancePredicates; +import org.jclouds.openstack.trove.v1.internal.TroveUtils; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; + import com.google.common.collect.FluentIterable; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -38,7 +41,7 @@ import com.google.common.collect.Maps; /** * @author Zack Shoylev */ -@Test(groups = "live", testName = "InstanceApiLiveTest", singleThreaded = true) +@Test(groups = "live", testName = "InstanceApiLiveTest") public class InstanceApiLiveTest extends BaseTroveApiLiveTest { private static Map<String,List<Instance>> created = Maps.newHashMap(); @@ -47,12 +50,12 @@ public class InstanceApiLiveTest extends BaseTroveApiLiveTest { @BeforeClass(groups = { "integration", "live" }) public void setup() { super.setup(); + TroveUtils utils= new TroveUtils(api); for (String zone : api.getConfiguredZones()) { List<Instance> zoneList = Lists.newArrayList(); InstanceApi instanceApi = api.getInstanceApiForZone(zone); - zoneList.add(instanceApi.create("1", 1, "first_instance_testing_" + zone)); - Instance second = instanceApi.create("1", 1, "second_instance_testing_" + zone); - InstancePredicates.awaitAvailable(instanceApi).apply(second); + zoneList.add(utils.getWorkingInstance(zone, "first_instance_testing_" + zone, "1", 1)); + Instance second = utils.getWorkingInstance(zone, "second_instance_testing_" + zone, "1", 1); instanceApi.enableRoot(second.getId()); zoneList.add(second); created.put(zone, zoneList); http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/UserApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/UserApiLiveTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/UserApiLiveTest.java index a4ccd3a..ae92f55 100644 --- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/UserApiLiveTest.java +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/features/UserApiLiveTest.java @@ -31,7 +31,7 @@ import java.util.UUID; import org.jclouds.openstack.trove.v1.domain.Instance; import org.jclouds.openstack.trove.v1.domain.User; import org.jclouds.openstack.trove.v1.internal.BaseTroveApiLiveTest; -import org.jclouds.openstack.trove.v1.predicates.InstancePredicates; +import org.jclouds.openstack.trove.v1.internal.TroveUtils; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -44,7 +44,7 @@ import com.google.common.collect.Maps; /** * @author Zack Shoylev */ -@Test(groups = "live", testName = "UserApiLiveTest", singleThreaded = true) +@Test(groups = "live", testName = "UserApiLiveTest") public class UserApiLiveTest extends BaseTroveApiLiveTest { // zone to instance @@ -55,16 +55,14 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { @BeforeClass(groups = { "integration", "live" }) public void setup() { super.setup(); + TroveUtils utils= new TroveUtils(api); for (String zone : api.getConfiguredZones()) { // create instances List<Instance> instanceList = Lists.newArrayList(); - InstanceApi instanceApi = api.getInstanceApiForZone(zone); - Instance first = instanceApi.create("1", 1, "first_user_trove_live_testing_" + zone); - Instance second = instanceApi.create("1", 1, "second_user_trove_live_testing_" + zone); + Instance first = utils.getWorkingInstance(zone, "first_user_trove_live_testing_" + zone, "1", 1); + Instance second = utils.getWorkingInstance(zone, "second_user_trove_live_testing_" + zone, "1", 1); instanceList.add(first); instanceList.add(second); - InstancePredicates.awaitAvailable(instanceApi).apply(first); - InstancePredicates.awaitAvailable(instanceApi).apply(second); instancesToDelete.put(zone, instanceList); // create users User user1 = User.builder() @@ -117,7 +115,7 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { UserApi userApi = api.getUserApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("user_trove_live_testing"))continue; assertTrue(userApi.list().size() >=1); @@ -133,7 +131,7 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { UserApi userApi = api.getUserApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("user_trove_live_testing"))continue; assertTrue(userApi.list().size() >=1); @@ -154,7 +152,7 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2 ); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { UserApi userApi = api.getUserApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("user_trove_live_testing"))continue; assertTrue(userApi.list().size() >=1); @@ -170,7 +168,7 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { for (String zone : api.getConfiguredZones()) { InstanceApi instanceApi = api.getInstanceApiForZone(zone); assertTrue(instanceApi.list().size() >= 2); - for(Instance instance : instanceApi.list() ) { + for(Instance instance : instancesToDelete.get(zone)) { UserApi userApi = api.getUserApiForInstanceInZone(instance.getId(), zone); if(!instance.getName().contains("user_trove_live_testing"))continue; assertTrue(userApi.list().size() >=1); @@ -201,7 +199,7 @@ public class UserApiLiveTest extends BaseTroveApiLiveTest { @Test public void testGetUserWhenNotFound() { for (String zone : api.getConfiguredZones()) { - String instanceId = api.getInstanceApiForZone(zone).list().iterator().next().getId(); + String instanceId = instancesToDelete.get(zone).iterator().next().getId(); UserApi userApi = api.getUserApiForInstanceInZone(instanceId, zone); assertNull(userApi.get("9999")); } http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/BaseTroveApiExpectTest.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/BaseTroveApiExpectTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/BaseTroveApiExpectTest.java index 3c9aaa7..b8c4216 100644 --- a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/BaseTroveApiExpectTest.java +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/BaseTroveApiExpectTest.java @@ -19,7 +19,7 @@ package org.jclouds.openstack.trove.v1.internal; import org.jclouds.openstack.trove.v1.TroveApi; /** - * Base class for writing Flavor Rest Api Expect tests + * Base class for writing Trove Rest Api Expect tests * * @author Everett Toews */ http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtils.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtils.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtils.java new file mode 100644 index 0000000..0a77c72 --- /dev/null +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtils.java @@ -0,0 +1,102 @@ +/* + * 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.openstack.trove.v1.internal; + +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import javax.annotation.Resource; + +import org.jclouds.openstack.trove.v1.TroveApi; +import org.jclouds.openstack.trove.v1.domain.Instance; +import org.jclouds.openstack.trove.v1.features.InstanceApi; +import org.jclouds.openstack.trove.v1.predicates.InstancePredicates; +import org.jclouds.logging.Logger; + +import com.google.common.util.concurrent.Uninterruptibles; + +/** + * @author Zack Shoylev + * + * Helper methods for dealing with instances that get created with + * errors + */ +public class TroveUtils { + private final TroveApi api; + @Resource + protected Logger logger = Logger.NULL; + + public TroveUtils(TroveApi api) { + this.api = api; + } + + /** + * Create an ACTIVE operational instance + * + * @see InstanceApi#create(String, int, String) + * + * @param zone + * The instance zone or region + * @param name + * Instance name + * @param flavorId + * Id of the flavor to be used when creating the instance + * @param size + * Size of the instance + * @return Instance object in active state or NULL + */ + public Instance getWorkingInstance(String zone, String name, String flavorId, int size) { + InstanceApi instanceApi = api.getInstanceApiForZone(zone); + for (int retries = 0; retries < 10; retries++) { + Instance instance = null; + try { + instance = instanceApi.create(flavorId, size, name); + } catch (Exception e) { + + Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS); + + logger.error(e.getStackTrace().toString()); + continue; + } + + Instance updatedInstance = awaitAvailable(instance, instanceApi); + if (updatedInstance != null) { + return updatedInstance; + } + instanceApi.delete(instance.getId()); + InstancePredicates.awaitDeleted(instanceApi).apply(instance); + + } + return null; + } + + public Instance getWorkingInstance(String zone) { + return getWorkingInstance(zone, UUID.randomUUID().toString(), "1", 1); + } + + private Instance awaitAvailable(Instance instance, InstanceApi iapi) { + for (int n = 0; n < 100; n = n + 1) { + Instance updatedInstance = iapi.get(instance.getId()); + if (updatedInstance.getStatus() == Instance.Status.ACTIVE) + return updatedInstance; + if (updatedInstance.getStatus() == Instance.Status.UNRECOGNIZED) + return null; // fast fail + Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS); + } + return null; + } +} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtilsExpectTest.java ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtilsExpectTest.java b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtilsExpectTest.java new file mode 100644 index 0000000..9ebda6f --- /dev/null +++ b/openstack-trove/src/test/java/org/jclouds/openstack/trove/v1/internal/TroveUtilsExpectTest.java @@ -0,0 +1,66 @@ +/* + * 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.openstack.trove.v1.internal; + +import static org.testng.Assert.assertEquals; + +import java.net.URI; +import java.util.List; + +import javax.ws.rs.core.MediaType; + +import org.jclouds.http.HttpRequest; +import org.jclouds.http.HttpResponse; +import org.jclouds.openstack.trove.v1.TroveApi; +import org.jclouds.openstack.trove.v1.domain.Instance; +import org.testng.annotations.Test; + +import com.google.common.collect.ImmutableList; + +/** + * Tests TroveUtils + * + * @author Zack Shoylev + */ +@Test(groups = "unit", testName = "InstanceApiExpectTest") +public class TroveUtilsExpectTest extends BaseTroveApiExpectTest { + + public void testHelperCreateInstance() { + HttpRequest createInstance = authenticatedGET().endpoint(URI.create("http://172.16.0.1:8776/v1/3456/instances")) + .method("POST") + .payload(payloadFromResourceWithContentType("/instance_create_request.json", MediaType.APPLICATION_JSON)) + .build(); + HttpResponse createInstanceSuccess = HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_create.json")).build(); + HttpResponse createInstanceFail = HttpResponse.builder().statusCode(404).payload(payloadFromResource("/instance_create.json")).build(); + HttpRequest getInstance = authenticatedGET().endpoint(URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7")).build(); + HttpResponse badStatus = HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_get_bad_instance.json")).build(); + HttpResponse goodStatus = HttpResponse.builder().statusCode(200).payload(payloadFromResource("/instance_get.json")).build(); + HttpResponse deletedStatus = HttpResponse.builder().statusCode(404).payload(payloadFromResource("/instance_get.json")).build(); + HttpRequest deleteInstance = authenticatedGET().endpoint(URI.create("http://172.16.0.1:8776/v1/3456/instances/44b277eb-39be-4921-be31-3d61b43651d7")).method("DELETE").build(); + HttpResponse deleteInstanceResponse = HttpResponse.builder().statusCode(202).build(); + + List<HttpRequest> requests = ImmutableList.of( keystoneAuthWithUsernameAndPasswordAndTenantName, createInstance, createInstance, createInstance, getInstance, deleteInstance, getInstance, createInstance, createInstance, getInstance); + List<HttpResponse> responses = ImmutableList.of(responseWithKeystoneAccess, createInstanceFail, createInstanceFail, createInstanceSuccess, badStatus, deleteInstanceResponse, deletedStatus, createInstanceFail, createInstanceSuccess, goodStatus); + + TroveApi api = orderedRequestsSendResponses(requests, responses); + + TroveUtils utils = new TroveUtils(api); + Instance instance = utils.getWorkingInstance("RegionOne", "json_rack_instance", "1", 2); + assertEquals(instance.getSize(),2); + assertEquals(instance.getName(), "json_rack_instance"); + } +} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/openstack-trove/src/test/resources/instance_get_bad_instance.json ---------------------------------------------------------------------- diff --git a/openstack-trove/src/test/resources/instance_get_bad_instance.json b/openstack-trove/src/test/resources/instance_get_bad_instance.json new file mode 100644 index 0000000..99b8688 --- /dev/null +++ b/openstack-trove/src/test/resources/instance_get_bad_instance.json @@ -0,0 +1,37 @@ +{ + "instance": { + "created": "2013-03-18T19:09:17", + "flavor": { + "id": "1", + "links": [ + { + "href": "https://ord.databases.api.rackspacecloud.com/v1.0/1234/flavors/1", + "rel": "self" + }, + { + "href": "https://ord.databases.api.rackspacecloud.com/flavors/1", + "rel": "bookmark" + } + ] + }, + "hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.rackspaceclouddb.com", + "id": "44b277eb-39be-4921-be31-3d61b43651d7", + "links": [ + { + "href": "https://ord.databases.api.rackspacecloud.com/v1.0/1234/instances/44b277eb-39be-4921-be31-3d61b43651d7", + "rel": "self" + }, + { + "href": "https://ord.databases.api.rackspacecloud.com/instances/44b277eb-39be-4921-be31-3d61b43651d7", + "rel": "bookmark" + } + ], + "name": "json_rack_instance", + "status": "ERROR", + "updated": "2013-03-18T19:09:17", + "volume": { + "size": 2, + "used": 0.16368598397821188 + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/rackspace-clouddatabases-uk/pom.xml ---------------------------------------------------------------------- diff --git a/rackspace-clouddatabases-uk/pom.xml b/rackspace-clouddatabases-uk/pom.xml index acbb0e2..474b7da 100644 --- a/rackspace-clouddatabases-uk/pom.xml +++ b/rackspace-clouddatabases-uk/pom.xml @@ -128,7 +128,9 @@ <goal>test</goal> </goals> <configuration> - <threadCount>1</threadCount> + <forkCount>5</forkCount> + <reuseForks>true</reuseForks> + <parallel>classes</parallel> <systemPropertyVariables> <test.rackspace-clouddatabases-uk.endpoint>${test.rackspace-clouddatabases-uk.endpoint}</test.rackspace-clouddatabases-uk.endpoint> <test.rackspace-clouddatabases-uk.api-version>${test.rackspace-clouddatabases-uk.api-version}</test.rackspace-clouddatabases-uk.api-version> http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/40a05b9e/rackspace-clouddatabases-us/pom.xml ---------------------------------------------------------------------- diff --git a/rackspace-clouddatabases-us/pom.xml b/rackspace-clouddatabases-us/pom.xml index d89e790..bb8c437 100644 --- a/rackspace-clouddatabases-us/pom.xml +++ b/rackspace-clouddatabases-us/pom.xml @@ -128,7 +128,9 @@ <goal>test</goal> </goals> <configuration> - <threadCount>1</threadCount> + <forkCount>5</forkCount> + <reuseForks>true</reuseForks> + <parallel>classes</parallel> <systemPropertyVariables> <test.rackspace-clouddatabases-us.endpoint>${test.rackspace-clouddatabases-us.endpoint}</test.rackspace-clouddatabases-us.endpoint> <test.rackspace-clouddatabases-us.api-version>${test.rackspace-clouddatabases-us.api-version}</test.rackspace-clouddatabases-us.api-version>
