You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ab...@apache.org on 2013/08/29 20:31:48 UTC
[06/14] JCLOUDS-166,
JCLOUDS-167 - Removing async from vcloud and Terremark APIs/providers
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkApiLiveTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkApiLiveTest.java
new file mode 100644
index 0000000..e52666c
--- /dev/null
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkApiLiveTest.java
@@ -0,0 +1,795 @@
+/*
+ * 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.trmk.vcloud_0_8;
+
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.find;
+import static com.google.common.collect.Iterables.size;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jclouds.trmk.vcloud_0_8.domain.VAppConfiguration.Builder.changeNameTo;
+import static org.jclouds.trmk.vcloud_0_8.domain.VAppConfiguration.Builder.deleteDiskWithAddressOnParent;
+import static org.jclouds.trmk.vcloud_0_8.options.CloneVAppOptions.Builder.deploy;
+import static org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions.Builder.processorCount;
+import static org.jclouds.util.Predicates2.retry;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.fail;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+import org.jclouds.apis.BaseApiLiveTest;
+import org.jclouds.cim.CIMPredicates;
+import org.jclouds.cim.ResourceAllocationSettingData;
+import org.jclouds.cim.ResourceAllocationSettingData.ResourceType;
+import org.jclouds.predicates.SocketOpen;
+import org.jclouds.rest.AuthorizationException;
+import org.jclouds.ssh.SshClient;
+import org.jclouds.ssh.SshClient.Factory;
+import org.jclouds.ssh.SshException;
+import org.jclouds.sshj.config.SshjSshClientModule;
+import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
+import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
+import org.jclouds.trmk.vcloud_0_8.domain.CustomizationParameters;
+import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
+import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
+import org.jclouds.trmk.vcloud_0_8.domain.Network;
+import org.jclouds.trmk.vcloud_0_8.domain.Node;
+import org.jclouds.trmk.vcloud_0_8.domain.Org;
+import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
+import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
+import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
+import org.jclouds.trmk.vcloud_0_8.domain.Status;
+import org.jclouds.trmk.vcloud_0_8.domain.Task;
+import org.jclouds.trmk.vcloud_0_8.domain.VApp;
+import org.jclouds.trmk.vcloud_0_8.domain.VAppTemplate;
+import org.jclouds.trmk.vcloud_0_8.domain.VDC;
+import org.jclouds.trmk.vcloud_0_8.options.AddInternetServiceOptions;
+import org.jclouds.trmk.vcloud_0_8.options.CloneVAppOptions;
+import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions;
+import org.jclouds.trmk.vcloud_0_8.predicates.TaskSuccess;
+import org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants;
+import org.testng.annotations.AfterGroups;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.net.HostAndPort;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+@Test(groups = "live", singleThreaded = true)
+public abstract class TerremarkApiLiveTest extends BaseApiLiveTest<TerremarkVCloudApi> {
+
+ protected String expectedOs = "Ubuntu Linux (64-bit)";
+ protected String itemName = "Ubuntu JeOS 9.10 (64-bit)";
+
+ protected Factory sshFactory;
+ protected String publicIp;
+ protected InternetService is;
+ protected Node node;
+ protected VApp vApp;
+ protected Predicate<HostAndPort> socketTester;
+ protected Predicate<URI> successTester;
+ protected Injector injector;
+
+ protected VApp clone;
+ protected VDC vdc;
+ protected String serverName;
+ protected KeyPair key;
+
+ public static final String PREFIX = System.getProperty("user.name") + "-terremark";
+
+ public TerremarkApiLiveTest() {
+ this.provider = "trmk-vcloudexpress";
+ StringBuilder name = new StringBuilder();
+ for (int i = 0; i < 15; i++)
+ name.append("d");
+ serverName = name.toString();// "adriantest";
+ }
+
+ @Test
+ public void testKeysList() throws Exception {
+ for (Org org : orgs) {
+ TerremarkVCloudApi vCloudExpressClient = TerremarkVCloudApi.class.cast(api);
+ Set<KeyPair> response = vCloudExpressClient.listKeyPairsInOrg(org.getHref());
+ assertNotNull(response);
+ }
+ }
+
+ @Test
+ public void testGetAllInternetServices() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ for (InternetService service : api.getAllInternetServicesInVDC(vdc.getHref())) {
+ assertNotNull(api.getNodes(service.getId()));
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testCreateInternetServiceMonitorDisabled() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ Set<PublicIpAddress> publicIpAddresses = api.getPublicIpsAssociatedWithVDC(vdc.getHref());
+ PublicIpAddress publicIp = publicIpAddresses.iterator().next();
+ InternetService service = api.addInternetServiceToExistingIp(publicIp.getId(), PREFIX
+ + "-no-monitoring", Protocol.TCP, 1234, AddInternetServiceOptions.Builder.monitorDisabled());
+ api.deleteInternetService(service.getId());
+ }
+ }
+ }
+
+ @Test
+ public void testGetPublicIpsAssociatedWithVDC() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ for (PublicIpAddress ip : api.getPublicIpsAssociatedWithVDC(vdc.getHref())) {
+ assertNotNull(api.getInternetServicesOnPublicIp(ip.getId()));
+ assertNotNull(api.getPublicIp(ip.getId()));
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetConfigCustomizationOptions() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType catalog : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(catalog.getHref());
+ for (ReferenceType resource : response.values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
+ CatalogItem item = api.findCatalogItemInOrgCatalogNamed(org.getName(), catalog.getName(),
+ resource.getName());
+ assert api.getCustomizationOptions(item.getCustomizationOptions().getHref()) != null;
+ }
+ }
+ }
+ }
+ }
+
+ @Test(enabled = true)
+ public void testInstantiateAndPowerOn() throws InterruptedException, ExecutionException, TimeoutException,
+ IOException {
+ prepare();
+
+ long hardDisk = 4194304;
+
+ // long hardDisk = 4194304 / 4 * 10;
+ // String catalogOs = "CentOS 5.3 (64-bit)";
+ // String expectedOs = "Red Hat Enterprise Linux 5 (64-bit)";
+
+ // lookup the datacenter you are deploying into
+ vdc = api.findVDCInOrgNamed(null, null);
+
+ // create an options object to collect the configuration we want.
+ InstantiateVAppTemplateOptions instantiateOptions = createInstantiateOptions().sshKeyFingerprint(
+ key.getFingerPrint());
+
+ CatalogItem item = api.findCatalogItemInOrgCatalogNamed(null, null, itemName);
+
+ assert item != null;
+
+ // if this template supports setting the root password, let's add it to
+ // our options
+ CustomizationParameters customizationOptions = api.getCustomizationOptions(item.getCustomizationOptions()
+ .getHref());
+
+ if (customizationOptions.canCustomizePassword())
+ instantiateOptions.withPassword("robotsarefun");
+
+ VAppTemplate vAppTemplate = api.getVAppTemplate(item.getEntity().getHref());
+
+ assert vAppTemplate != null;
+
+ // instantiate, noting vApp returned has minimal details
+ vApp = api.instantiateVAppTemplateInVDC(vdc.getHref(), vAppTemplate.getHref(), serverName,
+ instantiateOptions);
+
+ assertEquals(vApp.getStatus(), Status.RESOLVED);
+
+ // in terremark, this should be a no-op, as it should simply return the
+ // above task, which is
+ // already deploying
+ Task deployTask = api.deployVApp(vApp.getHref());
+
+ // check to see the result of calling deploy twice
+ deployTask = api.deployVApp(vApp.getHref());
+ assertEquals(deployTask.getHref(), deployTask.getHref());
+
+ vApp = api.getVApp(vApp.getHref());
+
+ assertEquals(vApp.getStatus(), Status.RESOLVED);
+
+ try {// per docs, this is not supported
+ api.cancelTask(deployTask.getHref());
+ } catch (UnsupportedOperationException e) {
+ }
+
+ assert successTester.apply(deployTask.getHref());
+ System.out.printf("%d: done deploying vApp%n", System.currentTimeMillis());
+
+ vApp = api.getVApp(vApp.getHref());
+
+ ReferenceType vAppResource = api.findVDCInOrgNamed(null, null).getResourceEntities().get(serverName);
+ assertEquals(vAppResource.getHref(), vApp.getHref());
+
+ int processorCount = 1;
+ long memory = 512;
+ verifyConfigurationOfVApp(vApp, serverName, expectedOs, processorCount, memory, hardDisk);
+ assertEquals(vApp.getStatus(), Status.OFF);
+
+ assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
+ System.out.printf("%d: done powering on vApp%n", System.currentTimeMillis());
+
+ vApp = api.getVApp(vApp.getHref());
+ assertEquals(vApp.getStatus(), Status.ON);
+ }
+
+ protected InstantiateVAppTemplateOptions createInstantiateOptions() {
+ return processorCount(1).memory(512).sshKeyFingerprint(key.getFingerPrint());
+ }
+
+ protected void prepare() {
+ Org org = api.findOrgNamed(null);
+ try {
+ key = api.generateKeyPairInOrg(org.getHref(), "livetest", false);
+ } catch (IllegalStateException e) {
+ key = api.findKeyPairInOrg(org.getHref(), "livetest");
+ api.deleteKeyPair(key.getId());
+ key = api.generateKeyPairInOrg(org.getHref(), "livetest", false);
+ }
+ assertNotNull(key);
+ assertEquals(key.getName(), "livetest");
+ assertNotNull(key.getPrivateKey());
+ assertNotNull(key.getFingerPrint());
+ assertEquals(key.isDefault(), false);
+ assertEquals(key.getFingerPrint(), api.findKeyPairInOrg(org.getHref(), key.getName()).getFingerPrint());
+ }
+
+ protected abstract Entry<InternetService, PublicIpAddress> getNewInternetServiceAndIpForSSH(VApp vApp);
+
+ @Test(enabled = true, dependsOnMethods = "testInstantiateAndPowerOn")
+ public void testAddInternetService() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+ Entry<InternetService, PublicIpAddress> entry = getNewInternetServiceAndIpForSSH(vApp);
+ is = entry.getKey();
+ publicIp = entry.getValue().getAddress();
+ }
+
+ @Test(enabled = true, dependsOnMethods = "testInstantiateAndPowerOn")
+ public void testCloneVApp() throws IOException {
+ assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
+ System.out.printf("%d: done powering off vApp%n", System.currentTimeMillis());
+
+ StringBuilder name = new StringBuilder();
+ for (int i = 0; i < 15; i++)
+ name.append("b");
+ String newName = name.toString();
+
+ CloneVAppOptions options = deploy().powerOn().withDescription("The description of " + newName);
+
+ System.out.printf("%d: cloning vApp%n", System.currentTimeMillis());
+ Task task = api.cloneVAppInVDC(vdc.getHref(), vApp.getHref(), newName, options);
+
+ // wait for the task to complete
+ assert successTester.apply(task.getHref());
+ System.out.printf("%d: done cloning vApp%n", System.currentTimeMillis());
+
+ assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
+ System.out.printf("%d: done powering on vApp%n", System.currentTimeMillis());
+
+ // refresh task to get the new vApp location
+ task = api.getTask(task.getHref());
+
+ clone = api.getVApp(task.getOwner().getHref());
+ assertEquals(clone.getStatus(), Status.ON);
+
+ assertEquals(clone.getName(), newName);
+ assertEquals(clone.getNetworkToAddresses().values().size(), 1);
+ }
+
+ @Test(enabled = true, dependsOnMethods = { "testInstantiateAndPowerOn", "testAddInternetService" })
+ public void testPublicIp() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+ node = api.addNode(is.getId(), Iterables.getLast(vApp.getNetworkToAddresses().values()), vApp.getName()
+ + "-SSH", 22);
+ loopAndCheckPass();
+ }
+
+ protected void loopAndCheckPass() throws IOException {
+ for (int i = 0; i < 5; i++) {// retry loop TODO replace with predicate.
+ try {
+ doCheckPass(publicIp);
+ return;
+ } catch (SshException e) {
+ try {
+ Thread.sleep(10 * 1000);
+ } catch (InterruptedException e1) {
+ }
+ continue;
+ }
+ }
+ }
+
+ @Test(enabled = true, dependsOnMethods = "testPublicIp")
+ public void testConfigureNode() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+ api.configureNode(node.getId(), node.getName(), node.isEnabled(), "holy cow");
+ }
+
+ @Test(enabled = true, dependsOnMethods = "testPublicIp")
+ public void testLifeCycle() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+
+ try {// per docs, this is not supported
+ api.undeployVApp(vApp.getHref());
+ fail("Expected UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ }
+
+ try {// per docs, this is not supported
+ api.suspendVApp(vApp.getHref());
+ fail("Expected UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ }
+
+ assert successTester.apply(api.resetVApp(vApp.getHref()).getHref());
+
+ vApp = api.getVApp(vApp.getHref());
+
+ assertEquals(vApp.getStatus(), Status.ON);
+
+ // TODO we need to determine whether shutdown is supported before invoking
+ // it.
+ // api.shutdownVApp(vApp.getId());
+ // vApp = api.getVApp(vApp.getId());
+ // assertEquals(vApp.getStatus(), VAppStatus.ON);
+
+ assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
+
+ vApp = api.getVApp(vApp.getHref());
+ assertEquals(vApp.getStatus(), Status.OFF);
+ }
+
+ @Test(enabled = true, dependsOnMethods = "testLifeCycle")
+ public void testConfigure() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+
+ vApp = api.getVApp(vApp.getHref());
+
+ Task task = api.configureVApp(vApp, changeNameTo("eduardo").changeMemoryTo(1536).changeProcessorCountTo(1)
+ .addDisk(25 * 1048576).addDisk(25 * 1048576));
+
+ assert successTester.apply(task.getHref());
+
+ vApp = api.getVApp(vApp.getHref());
+ assertEquals(vApp.getName(), "eduardo");
+ assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.PROCESSOR))
+ .getVirtualQuantity().longValue(), 1);
+ assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.MEMORY))
+ .getVirtualQuantity().longValue(), 1536);
+ assertEquals(size(filter(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))),
+ 3);
+
+ assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
+
+ loopAndCheckPass();
+
+ assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
+
+ // extract the disks on the vApp sorted by addressOnParent
+ List<ResourceAllocationSettingData> disks = Lists.newArrayList(filter(vApp.getResourceAllocations(),
+ CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE)));
+
+ // delete the second disk
+ task = api.configureVApp(vApp,
+ deleteDiskWithAddressOnParent(Integer.parseInt(disks.get(1).getAddressOnParent())));
+
+ assert successTester.apply(task.getHref());
+
+ assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
+ loopAndCheckPass();
+ }
+
+ protected void verifyConfigurationOfVApp(VApp vApp, String serverName, String expectedOs, int processorCount,
+ long memory, long hardDisk) {
+ assertEquals(vApp.getName(), serverName);
+ assertEquals(vApp.getOperatingSystemDescription(), expectedOs);
+ assertEquals((int) find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.PROCESSOR))
+ .getVirtualQuantity().longValue(), processorCount);
+ assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.MEMORY))
+ .getVirtualQuantity().longValue(), memory);
+ assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))
+ .getVirtualQuantity().longValue(), hardDisk);
+ assertEquals(vApp.getSize().longValue(),
+ find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))
+ .getVirtualQuantity().longValue());
+ }
+
+ protected void doCheckPass(String address) throws IOException {
+ HostAndPort socket = HostAndPort.fromParts(address, 22);
+
+ System.out.printf("%d: %s awaiting ssh service to start%n", System.currentTimeMillis(), socket);
+ assert socketTester.apply(socket);
+ System.out.printf("%d: %s ssh service started%n", System.currentTimeMillis(), socket);
+
+ SshClient ssh = getConnectionFor(socket);
+ try {
+ ssh.connect();
+ System.out.printf("%d: %s ssh ssh made%n", System.currentTimeMillis(), socket);
+ System.out.println(ssh.exec("df -h"));
+ System.out.println(ssh.exec("ls -al /dev/sd*"));
+ System.out.println(ssh.exec("echo '$Ep455l0ud!2'|sudo -S fdisk -l"));
+ } finally {
+ if (ssh != null)
+ ssh.disconnect();
+ }
+ }
+
+ protected abstract SshClient getConnectionFor(HostAndPort socket);
+
+ @AfterGroups(groups = { "live" })
+ void cleanup() throws InterruptedException, ExecutionException, TimeoutException {
+ if (node != null)
+ api.deleteNode(node.getId());
+ if (is != null)
+ api.deleteInternetService(is.getId());
+ if (key != null)
+ api.deleteKeyPair(key.getId());
+ if (vApp != null) {
+ try {
+ successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
+ } catch (Exception e) {
+
+ }
+ api.deleteVApp(vApp.getHref());
+ }
+ if (clone != null) {
+ try {
+ successTester.apply(api.powerOffVApp(clone.getHref()).getHref());
+ } catch (Exception e) {
+
+ }
+ api.deleteVApp(clone.getHref());
+ }
+ }
+
+ @Override
+ protected TerremarkVCloudApi create(Properties props, Iterable<Module> modules) {
+ Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();
+ sshFactory = injector.getInstance(SshClient.Factory.class);
+
+ // longer than default internet service timeout
+ socketTester = retry(injector.getInstance(SocketOpen.class), 300, 10, SECONDS);
+ successTester = retry(injector.getInstance(TaskSuccess.class), 650, 10, SECONDS);
+ api = injector.getInstance(TerremarkVCloudApi.class);
+ orgs = listOrgs();
+ return api;
+ }
+
+ @Test
+ public void testOrg() throws Exception {
+ for (Org org : orgs) {
+ assertNotNull(org);
+ assertNotNull(org.getName());
+ assert org.getCatalogs().size() >= 1;
+ assert org.getTasksLists().size() >= 1;
+ assert org.getVDCs().size() >= 1;
+ assertEquals(api.findOrgNamed(org.getName()), org);
+ }
+ }
+
+ @Test
+ public void testPropertiesCanOverrideDefaultOrg() throws Exception {
+ for (Org org : orgs) {
+ TerremarkVCloudApi newApi = null;
+ try {
+ newApi = create(
+ overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName())),
+ setupModules());
+ assertEquals(newApi.findOrgNamed(null), org);
+ } finally {
+ newApi.close();
+ }
+ }
+ }
+
+ public Properties overrideDefaults(Map<String, String> overrides) {
+ Properties properties = setupProperties();
+ properties.putAll(overrides);
+ return properties;
+ }
+
+ @Test
+ public void testCatalog() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(cat.getHref());
+ assertNotNull(response);
+ assertNotNull(response.getName());
+ assertNotNull(response.getHref());
+ assertEquals(api.findCatalogInOrgNamed(org.getName(), response.getName()), response);
+ }
+ }
+ }
+
+ @Test
+ public void testPropertiesCanOverrideDefaultCatalog() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ TerremarkVCloudApi newApi = null;
+ try {
+ newApi = create(
+ overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
+ VCloudConstants.PROPERTY_VCLOUD_DEFAULT_CATALOG, cat.getName())), setupModules());
+ assertEquals(newApi.findCatalogInOrgNamed(null, null), api.getCatalog(cat.getHref()));
+ } finally {
+ newApi.close();
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetVDCNetwork() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ VDC response = api.getVDC(vdc.getHref());
+ for (ReferenceType resource : response.getAvailableNetworks().values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.NETWORK_XML)) {
+ try {
+ Network net = api.getNetwork(resource.getHref());
+ assertNotNull(net);
+ assertNotNull(net.getName());
+ assertNotNull(net.getHref());
+ assertEquals(
+ api.findNetworkInOrgVDCNamed(org.getName(), response.getName(), net.getName()), net);
+ } catch (AuthorizationException e) {
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testPropertiesCanOverrideDefaultNetwork() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ VDC response = api.getVDC(vdc.getHref());
+ for (ReferenceType net : response.getAvailableNetworks().values()) {
+ TerremarkVCloudApi newApi = null;
+ try {
+ newApi = create(
+ overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
+ VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC, vdc.getName(),
+ VCloudConstants.PROPERTY_VCLOUD_DEFAULT_NETWORK, net.getName())), setupModules());
+ assertEquals(newApi.findNetworkInOrgVDCNamed(null, null, net.getName()),
+ api.getNetwork(net.getHref()));
+ } finally {
+ newApi.close();
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetCatalogItem() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(cat.getHref());
+ for (ReferenceType resource : response.values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
+ CatalogItem item = api.getCatalogItem(resource.getHref());
+ verifyCatalogItem(item);
+ }
+ }
+ }
+ }
+ }
+
+ protected void verifyCatalogItem(CatalogItem item) {
+ assertNotNull(item);
+ assertNotNull(item);
+ assertNotNull(item.getEntity());
+ assertNotNull(item.getHref());
+ assertNotNull(item.getProperties());
+ assertNotNull(item.getType());
+ }
+
+ @Test
+ public void testFindCatalogItem() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(cat.getHref());
+ for (ReferenceType resource : response.values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
+ CatalogItem item = api.findCatalogItemInOrgCatalogNamed(org.getName(), response.getName(),
+ resource.getName());
+ verifyCatalogItem(item);
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testDefaultVDC() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ VDC response = api.getVDC(vdc.getHref());
+ assertNotNull(response);
+ assertNotNull(response.getName());
+ assertNotNull(response.getHref());
+ assertNotNull(response.getResourceEntities());
+ assertNotNull(response.getAvailableNetworks());
+ assertNotNull(response.getCatalog());
+ assertNotNull(response.getInternetServices());
+ assertNotNull(response.getPublicIps());
+ assertEquals(api.getVDC(response.getHref()), response);
+ }
+ }
+ }
+
+ @Test
+ public void testPropertiesCanOverrideDefaultVDC() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ TerremarkVCloudApi newApi = null;
+ try {
+ newApi = create(
+ overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
+ VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC, vdc.getName())), setupModules());
+ assertEquals(newApi.findVDCInOrgNamed(null, null), api.getVDC(vdc.getHref()));
+ } finally {
+ newApi.close();
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testDefaultTasksList() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType tasksList : org.getTasksLists().values()) {
+ org.jclouds.trmk.vcloud_0_8.domain.TasksList response = api.findTasksListInOrgNamed(org.getName(),
+ tasksList.getName());
+ assertNotNull(response);
+ assertNotNull(response.getLocation());
+ assertNotNull(response.getTasks());
+ assertEquals(api.getTasksList(response.getLocation()).getLocation(), response.getLocation());
+ }
+ }
+ }
+
+ @Test
+ public void testPropertiesCanOverrideDefaultTasksList() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType tasksList : org.getTasksLists().values()) {
+ TerremarkVCloudApi newApi = null;
+ try {
+ newApi = create(
+ overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
+ VCloudConstants.PROPERTY_VCLOUD_DEFAULT_TASKSLIST, tasksList.getName())), setupModules());
+ assertEquals(newApi.findTasksListInOrgNamed(null, null),
+ api.getTasksList(tasksList.getHref()));
+ } finally {
+ newApi.close();
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetTask() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType tasksList : org.getTasksLists().values()) {
+ org.jclouds.trmk.vcloud_0_8.domain.TasksList response = api.findTasksListInOrgNamed(org.getName(),
+ tasksList.getName());
+ assertNotNull(response);
+ assertNotNull(response.getLocation());
+ assertNotNull(response.getTasks());
+ if (response.getTasks().size() > 0) {
+ Task task = response.getTasks().last();
+ assertEquals(api.getTask(task.getHref()).getHref(), task.getHref());
+ }
+ }
+ }
+ }
+
+ protected Iterable<Org> orgs;
+
+ protected Iterable<Org> listOrgs() {
+ return Iterables.transform(api.listOrgs().values(), new Function<ReferenceType, Org>() {
+
+ @Override
+ public Org apply(ReferenceType arg0) {
+ return api.getOrg(arg0.getHref());
+ }
+
+ });
+ }
+
+ @Test
+ public void testGetVAppTemplate() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(cat.getHref());
+ for (ReferenceType resource : response.values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
+ CatalogItem item = api.getCatalogItem(resource.getHref());
+ if (item.getEntity().getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML)) {
+ assertNotNull(api.getVAppTemplate(item.getEntity().getHref()));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetVApp() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType vdc : org.getVDCs().values()) {
+ VDC response = api.getVDC(vdc.getHref());
+ for (ReferenceType item : response.getResourceEntities().values()) {
+ if (item.getType().equals(TerremarkVCloudMediaType.VAPP_XML)) {
+ try {
+ VApp app = api.getVApp(item.getHref());
+ assertNotNull(app);
+ } catch (RuntimeException e) {
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testFindVAppTemplate() throws Exception {
+ for (Org org : orgs) {
+ for (ReferenceType cat : org.getCatalogs().values()) {
+ Catalog response = api.getCatalog(cat.getHref());
+ for (ReferenceType resource : response.values()) {
+ if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
+ CatalogItem item = api.getCatalogItem(resource.getHref());
+ if (item.getEntity().getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML)) {
+ assertNotNull(api.findVAppTemplateInOrgCatalogNamed(org.getName(), response.getName(), item
+ .getEntity().getName()));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected Iterable<Module> setupModules() {
+ return ImmutableSet.<Module> of(getLoggingModule(), new SshjSshClientModule());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkClientLiveTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkClientLiveTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkClientLiveTest.java
deleted file mode 100644
index 69a3bca..0000000
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/TerremarkClientLiveTest.java
+++ /dev/null
@@ -1,795 +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.trmk.vcloud_0_8;
-
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.find;
-import static com.google.common.collect.Iterables.size;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jclouds.trmk.vcloud_0_8.domain.VAppConfiguration.Builder.changeNameTo;
-import static org.jclouds.trmk.vcloud_0_8.domain.VAppConfiguration.Builder.deleteDiskWithAddressOnParent;
-import static org.jclouds.trmk.vcloud_0_8.options.CloneVAppOptions.Builder.deploy;
-import static org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions.Builder.processorCount;
-import static org.jclouds.util.Predicates2.retry;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
-import org.jclouds.apis.BaseApiLiveTest;
-import org.jclouds.cim.CIMPredicates;
-import org.jclouds.cim.ResourceAllocationSettingData;
-import org.jclouds.cim.ResourceAllocationSettingData.ResourceType;
-import org.jclouds.predicates.SocketOpen;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.ssh.SshClient;
-import org.jclouds.ssh.SshClient.Factory;
-import org.jclouds.ssh.SshException;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
-import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
-import org.jclouds.trmk.vcloud_0_8.domain.CustomizationParameters;
-import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
-import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
-import org.jclouds.trmk.vcloud_0_8.domain.Network;
-import org.jclouds.trmk.vcloud_0_8.domain.Node;
-import org.jclouds.trmk.vcloud_0_8.domain.Org;
-import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
-import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
-import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
-import org.jclouds.trmk.vcloud_0_8.domain.Status;
-import org.jclouds.trmk.vcloud_0_8.domain.Task;
-import org.jclouds.trmk.vcloud_0_8.domain.VApp;
-import org.jclouds.trmk.vcloud_0_8.domain.VAppTemplate;
-import org.jclouds.trmk.vcloud_0_8.domain.VDC;
-import org.jclouds.trmk.vcloud_0_8.options.AddInternetServiceOptions;
-import org.jclouds.trmk.vcloud_0_8.options.CloneVAppOptions;
-import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions;
-import org.jclouds.trmk.vcloud_0_8.predicates.TaskSuccess;
-import org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.net.HostAndPort;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-@Test(groups = "live", singleThreaded = true)
-public abstract class TerremarkClientLiveTest extends BaseApiLiveTest<TerremarkVCloudClient> {
-
- protected String expectedOs = "Ubuntu Linux (64-bit)";
- protected String itemName = "Ubuntu JeOS 9.10 (64-bit)";
-
- protected Factory sshFactory;
- protected String publicIp;
- protected InternetService is;
- protected Node node;
- protected VApp vApp;
- protected Predicate<HostAndPort> socketTester;
- protected Predicate<URI> successTester;
- protected Injector injector;
-
- protected VApp clone;
- protected VDC vdc;
- protected String serverName;
- protected KeyPair key;
-
- public static final String PREFIX = System.getProperty("user.name") + "-terremark";
-
- public TerremarkClientLiveTest() {
- this.provider = "trmk-vcloudexpress";
- StringBuilder name = new StringBuilder();
- for (int i = 0; i < 15; i++)
- name.append("d");
- serverName = name.toString();// "adriantest";
- }
-
- @Test
- public void testKeysList() throws Exception {
- for (Org org : orgs) {
- TerremarkVCloudClient vCloudExpressClient = TerremarkVCloudClient.class.cast(api);
- Set<KeyPair> response = vCloudExpressClient.listKeyPairsInOrg(org.getHref());
- assertNotNull(response);
- }
- }
-
- @Test
- public void testGetAllInternetServices() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- for (InternetService service : api.getAllInternetServicesInVDC(vdc.getHref())) {
- assertNotNull(api.getNodes(service.getId()));
- }
- }
- }
- }
-
- @Test
- public void testCreateInternetServiceMonitorDisabled() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- Set<PublicIpAddress> publicIpAddresses = api.getPublicIpsAssociatedWithVDC(vdc.getHref());
- PublicIpAddress publicIp = publicIpAddresses.iterator().next();
- InternetService service = api.addInternetServiceToExistingIp(publicIp.getId(), PREFIX
- + "-no-monitoring", Protocol.TCP, 1234, AddInternetServiceOptions.Builder.monitorDisabled());
- api.deleteInternetService(service.getId());
- }
- }
- }
-
- @Test
- public void testGetPublicIpsAssociatedWithVDC() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- for (PublicIpAddress ip : api.getPublicIpsAssociatedWithVDC(vdc.getHref())) {
- assertNotNull(api.getInternetServicesOnPublicIp(ip.getId()));
- assertNotNull(api.getPublicIp(ip.getId()));
- }
- }
- }
- }
-
- @Test
- public void testGetConfigCustomizationOptions() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType catalog : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(catalog.getHref());
- for (ReferenceType resource : response.values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
- CatalogItem item = api.findCatalogItemInOrgCatalogNamed(org.getName(), catalog.getName(),
- resource.getName());
- assert api.getCustomizationOptions(item.getCustomizationOptions().getHref()) != null;
- }
- }
- }
- }
- }
-
- @Test(enabled = true)
- public void testInstantiateAndPowerOn() throws InterruptedException, ExecutionException, TimeoutException,
- IOException {
- prepare();
-
- long hardDisk = 4194304;
-
- // long hardDisk = 4194304 / 4 * 10;
- // String catalogOs = "CentOS 5.3 (64-bit)";
- // String expectedOs = "Red Hat Enterprise Linux 5 (64-bit)";
-
- // lookup the datacenter you are deploying into
- vdc = api.findVDCInOrgNamed(null, null);
-
- // create an options object to collect the configuration we want.
- InstantiateVAppTemplateOptions instantiateOptions = createInstantiateOptions().sshKeyFingerprint(
- key.getFingerPrint());
-
- CatalogItem item = api.findCatalogItemInOrgCatalogNamed(null, null, itemName);
-
- assert item != null;
-
- // if this template supports setting the root password, let's add it to
- // our options
- CustomizationParameters customizationOptions = api.getCustomizationOptions(item.getCustomizationOptions()
- .getHref());
-
- if (customizationOptions.canCustomizePassword())
- instantiateOptions.withPassword("robotsarefun");
-
- VAppTemplate vAppTemplate = api.getVAppTemplate(item.getEntity().getHref());
-
- assert vAppTemplate != null;
-
- // instantiate, noting vApp returned has minimal details
- vApp = api.instantiateVAppTemplateInVDC(vdc.getHref(), vAppTemplate.getHref(), serverName,
- instantiateOptions);
-
- assertEquals(vApp.getStatus(), Status.RESOLVED);
-
- // in terremark, this should be a no-op, as it should simply return the
- // above task, which is
- // already deploying
- Task deployTask = api.deployVApp(vApp.getHref());
-
- // check to see the result of calling deploy twice
- deployTask = api.deployVApp(vApp.getHref());
- assertEquals(deployTask.getHref(), deployTask.getHref());
-
- vApp = api.getVApp(vApp.getHref());
-
- assertEquals(vApp.getStatus(), Status.RESOLVED);
-
- try {// per docs, this is not supported
- api.cancelTask(deployTask.getHref());
- } catch (UnsupportedOperationException e) {
- }
-
- assert successTester.apply(deployTask.getHref());
- System.out.printf("%d: done deploying vApp%n", System.currentTimeMillis());
-
- vApp = api.getVApp(vApp.getHref());
-
- ReferenceType vAppResource = api.findVDCInOrgNamed(null, null).getResourceEntities().get(serverName);
- assertEquals(vAppResource.getHref(), vApp.getHref());
-
- int processorCount = 1;
- long memory = 512;
- verifyConfigurationOfVApp(vApp, serverName, expectedOs, processorCount, memory, hardDisk);
- assertEquals(vApp.getStatus(), Status.OFF);
-
- assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
- System.out.printf("%d: done powering on vApp%n", System.currentTimeMillis());
-
- vApp = api.getVApp(vApp.getHref());
- assertEquals(vApp.getStatus(), Status.ON);
- }
-
- protected InstantiateVAppTemplateOptions createInstantiateOptions() {
- return processorCount(1).memory(512).sshKeyFingerprint(key.getFingerPrint());
- }
-
- protected void prepare() {
- Org org = api.findOrgNamed(null);
- try {
- key = api.generateKeyPairInOrg(org.getHref(), "livetest", false);
- } catch (IllegalStateException e) {
- key = api.findKeyPairInOrg(org.getHref(), "livetest");
- api.deleteKeyPair(key.getId());
- key = api.generateKeyPairInOrg(org.getHref(), "livetest", false);
- }
- assertNotNull(key);
- assertEquals(key.getName(), "livetest");
- assertNotNull(key.getPrivateKey());
- assertNotNull(key.getFingerPrint());
- assertEquals(key.isDefault(), false);
- assertEquals(key.getFingerPrint(), api.findKeyPairInOrg(org.getHref(), key.getName()).getFingerPrint());
- }
-
- protected abstract Entry<InternetService, PublicIpAddress> getNewInternetServiceAndIpForSSH(VApp vApp);
-
- @Test(enabled = true, dependsOnMethods = "testInstantiateAndPowerOn")
- public void testAddInternetService() throws InterruptedException, ExecutionException, TimeoutException, IOException {
- Entry<InternetService, PublicIpAddress> entry = getNewInternetServiceAndIpForSSH(vApp);
- is = entry.getKey();
- publicIp = entry.getValue().getAddress();
- }
-
- @Test(enabled = true, dependsOnMethods = "testInstantiateAndPowerOn")
- public void testCloneVApp() throws IOException {
- assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
- System.out.printf("%d: done powering off vApp%n", System.currentTimeMillis());
-
- StringBuilder name = new StringBuilder();
- for (int i = 0; i < 15; i++)
- name.append("b");
- String newName = name.toString();
-
- CloneVAppOptions options = deploy().powerOn().withDescription("The description of " + newName);
-
- System.out.printf("%d: cloning vApp%n", System.currentTimeMillis());
- Task task = api.cloneVAppInVDC(vdc.getHref(), vApp.getHref(), newName, options);
-
- // wait for the task to complete
- assert successTester.apply(task.getHref());
- System.out.printf("%d: done cloning vApp%n", System.currentTimeMillis());
-
- assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
- System.out.printf("%d: done powering on vApp%n", System.currentTimeMillis());
-
- // refresh task to get the new vApp location
- task = api.getTask(task.getHref());
-
- clone = api.getVApp(task.getOwner().getHref());
- assertEquals(clone.getStatus(), Status.ON);
-
- assertEquals(clone.getName(), newName);
- assertEquals(clone.getNetworkToAddresses().values().size(), 1);
- }
-
- @Test(enabled = true, dependsOnMethods = { "testInstantiateAndPowerOn", "testAddInternetService" })
- public void testPublicIp() throws InterruptedException, ExecutionException, TimeoutException, IOException {
- node = api.addNode(is.getId(), Iterables.getLast(vApp.getNetworkToAddresses().values()), vApp.getName()
- + "-SSH", 22);
- loopAndCheckPass();
- }
-
- protected void loopAndCheckPass() throws IOException {
- for (int i = 0; i < 5; i++) {// retry loop TODO replace with predicate.
- try {
- doCheckPass(publicIp);
- return;
- } catch (SshException e) {
- try {
- Thread.sleep(10 * 1000);
- } catch (InterruptedException e1) {
- }
- continue;
- }
- }
- }
-
- @Test(enabled = true, dependsOnMethods = "testPublicIp")
- public void testConfigureNode() throws InterruptedException, ExecutionException, TimeoutException, IOException {
- api.configureNode(node.getId(), node.getName(), node.isEnabled(), "holy cow");
- }
-
- @Test(enabled = true, dependsOnMethods = "testPublicIp")
- public void testLifeCycle() throws InterruptedException, ExecutionException, TimeoutException, IOException {
-
- try {// per docs, this is not supported
- api.undeployVApp(vApp.getHref());
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException e) {
- }
-
- try {// per docs, this is not supported
- api.suspendVApp(vApp.getHref());
- fail("Expected UnsupportedOperationException");
- } catch (UnsupportedOperationException e) {
- }
-
- assert successTester.apply(api.resetVApp(vApp.getHref()).getHref());
-
- vApp = api.getVApp(vApp.getHref());
-
- assertEquals(vApp.getStatus(), Status.ON);
-
- // TODO we need to determine whether shutdown is supported before invoking
- // it.
- // api.shutdownVApp(vApp.getId());
- // vApp = api.getVApp(vApp.getId());
- // assertEquals(vApp.getStatus(), VAppStatus.ON);
-
- assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
-
- vApp = api.getVApp(vApp.getHref());
- assertEquals(vApp.getStatus(), Status.OFF);
- }
-
- @Test(enabled = true, dependsOnMethods = "testLifeCycle")
- public void testConfigure() throws InterruptedException, ExecutionException, TimeoutException, IOException {
-
- vApp = api.getVApp(vApp.getHref());
-
- Task task = api.configureVApp(vApp, changeNameTo("eduardo").changeMemoryTo(1536).changeProcessorCountTo(1)
- .addDisk(25 * 1048576).addDisk(25 * 1048576));
-
- assert successTester.apply(task.getHref());
-
- vApp = api.getVApp(vApp.getHref());
- assertEquals(vApp.getName(), "eduardo");
- assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.PROCESSOR))
- .getVirtualQuantity().longValue(), 1);
- assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.MEMORY))
- .getVirtualQuantity().longValue(), 1536);
- assertEquals(size(filter(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))),
- 3);
-
- assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
-
- loopAndCheckPass();
-
- assert successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
-
- // extract the disks on the vApp sorted by addressOnParent
- List<ResourceAllocationSettingData> disks = Lists.newArrayList(filter(vApp.getResourceAllocations(),
- CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE)));
-
- // delete the second disk
- task = api.configureVApp(vApp,
- deleteDiskWithAddressOnParent(Integer.parseInt(disks.get(1).getAddressOnParent())));
-
- assert successTester.apply(task.getHref());
-
- assert successTester.apply(api.powerOnVApp(vApp.getHref()).getHref());
- loopAndCheckPass();
- }
-
- protected void verifyConfigurationOfVApp(VApp vApp, String serverName, String expectedOs, int processorCount,
- long memory, long hardDisk) {
- assertEquals(vApp.getName(), serverName);
- assertEquals(vApp.getOperatingSystemDescription(), expectedOs);
- assertEquals((int) find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.PROCESSOR))
- .getVirtualQuantity().longValue(), processorCount);
- assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.MEMORY))
- .getVirtualQuantity().longValue(), memory);
- assertEquals(find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))
- .getVirtualQuantity().longValue(), hardDisk);
- assertEquals(vApp.getSize().longValue(),
- find(vApp.getResourceAllocations(), CIMPredicates.resourceTypeIn(ResourceType.DISK_DRIVE))
- .getVirtualQuantity().longValue());
- }
-
- protected void doCheckPass(String address) throws IOException {
- HostAndPort socket = HostAndPort.fromParts(address, 22);
-
- System.out.printf("%d: %s awaiting ssh service to start%n", System.currentTimeMillis(), socket);
- assert socketTester.apply(socket);
- System.out.printf("%d: %s ssh service started%n", System.currentTimeMillis(), socket);
-
- SshClient ssh = getConnectionFor(socket);
- try {
- ssh.connect();
- System.out.printf("%d: %s ssh ssh made%n", System.currentTimeMillis(), socket);
- System.out.println(ssh.exec("df -h"));
- System.out.println(ssh.exec("ls -al /dev/sd*"));
- System.out.println(ssh.exec("echo '$Ep455l0ud!2'|sudo -S fdisk -l"));
- } finally {
- if (ssh != null)
- ssh.disconnect();
- }
- }
-
- protected abstract SshClient getConnectionFor(HostAndPort socket);
-
- @AfterGroups(groups = { "live" })
- void cleanup() throws InterruptedException, ExecutionException, TimeoutException {
- if (node != null)
- api.deleteNode(node.getId());
- if (is != null)
- api.deleteInternetService(is.getId());
- if (key != null)
- api.deleteKeyPair(key.getId());
- if (vApp != null) {
- try {
- successTester.apply(api.powerOffVApp(vApp.getHref()).getHref());
- } catch (Exception e) {
-
- }
- api.deleteVApp(vApp.getHref());
- }
- if (clone != null) {
- try {
- successTester.apply(api.powerOffVApp(clone.getHref()).getHref());
- } catch (Exception e) {
-
- }
- api.deleteVApp(clone.getHref());
- }
- }
-
- @Override
- protected TerremarkVCloudClient create(Properties props, Iterable<Module> modules) {
- Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();
- sshFactory = injector.getInstance(SshClient.Factory.class);
-
- // longer than default internet service timeout
- socketTester = retry(injector.getInstance(SocketOpen.class), 300, 10, SECONDS);
- successTester = retry(injector.getInstance(TaskSuccess.class), 650, 10, SECONDS);
- api = injector.getInstance(TerremarkVCloudClient.class);
- orgs = listOrgs();
- return api;
- }
-
- @Test
- public void testOrg() throws Exception {
- for (Org org : orgs) {
- assertNotNull(org);
- assertNotNull(org.getName());
- assert org.getCatalogs().size() >= 1;
- assert org.getTasksLists().size() >= 1;
- assert org.getVDCs().size() >= 1;
- assertEquals(api.findOrgNamed(org.getName()), org);
- }
- }
-
- @Test
- public void testPropertiesCanOverrideDefaultOrg() throws Exception {
- for (Org org : orgs) {
- TerremarkVCloudClient newApi = null;
- try {
- newApi = create(
- overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName())),
- setupModules());
- assertEquals(newApi.findOrgNamed(null), org);
- } finally {
- newApi.close();
- }
- }
- }
-
- public Properties overrideDefaults(Map<String, String> overrides) {
- Properties properties = setupProperties();
- properties.putAll(overrides);
- return properties;
- }
-
- @Test
- public void testCatalog() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(cat.getHref());
- assertNotNull(response);
- assertNotNull(response.getName());
- assertNotNull(response.getHref());
- assertEquals(api.findCatalogInOrgNamed(org.getName(), response.getName()), response);
- }
- }
- }
-
- @Test
- public void testPropertiesCanOverrideDefaultCatalog() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- TerremarkVCloudClient newApi = null;
- try {
- newApi = create(
- overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
- VCloudConstants.PROPERTY_VCLOUD_DEFAULT_CATALOG, cat.getName())), setupModules());
- assertEquals(newApi.findCatalogInOrgNamed(null, null), api.getCatalog(cat.getHref()));
- } finally {
- newApi.close();
- }
- }
- }
- }
-
- @Test
- public void testGetVDCNetwork() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- VDC response = api.getVDC(vdc.getHref());
- for (ReferenceType resource : response.getAvailableNetworks().values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.NETWORK_XML)) {
- try {
- Network net = api.getNetwork(resource.getHref());
- assertNotNull(net);
- assertNotNull(net.getName());
- assertNotNull(net.getHref());
- assertEquals(
- api.findNetworkInOrgVDCNamed(org.getName(), response.getName(), net.getName()), net);
- } catch (AuthorizationException e) {
-
- }
- }
- }
- }
- }
- }
-
- @Test
- public void testPropertiesCanOverrideDefaultNetwork() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- VDC response = api.getVDC(vdc.getHref());
- for (ReferenceType net : response.getAvailableNetworks().values()) {
- TerremarkVCloudClient newApi = null;
- try {
- newApi = create(
- overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
- VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC, vdc.getName(),
- VCloudConstants.PROPERTY_VCLOUD_DEFAULT_NETWORK, net.getName())), setupModules());
- assertEquals(newApi.findNetworkInOrgVDCNamed(null, null, net.getName()),
- api.getNetwork(net.getHref()));
- } finally {
- newApi.close();
- }
- }
- }
- }
- }
-
- @Test
- public void testGetCatalogItem() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(cat.getHref());
- for (ReferenceType resource : response.values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
- CatalogItem item = api.getCatalogItem(resource.getHref());
- verifyCatalogItem(item);
- }
- }
- }
- }
- }
-
- protected void verifyCatalogItem(CatalogItem item) {
- assertNotNull(item);
- assertNotNull(item);
- assertNotNull(item.getEntity());
- assertNotNull(item.getHref());
- assertNotNull(item.getProperties());
- assertNotNull(item.getType());
- }
-
- @Test
- public void testFindCatalogItem() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(cat.getHref());
- for (ReferenceType resource : response.values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
- CatalogItem item = api.findCatalogItemInOrgCatalogNamed(org.getName(), response.getName(),
- resource.getName());
- verifyCatalogItem(item);
- }
- }
- }
- }
- }
-
- @Test
- public void testDefaultVDC() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- VDC response = api.getVDC(vdc.getHref());
- assertNotNull(response);
- assertNotNull(response.getName());
- assertNotNull(response.getHref());
- assertNotNull(response.getResourceEntities());
- assertNotNull(response.getAvailableNetworks());
- assertNotNull(response.getCatalog());
- assertNotNull(response.getInternetServices());
- assertNotNull(response.getPublicIps());
- assertEquals(api.getVDC(response.getHref()), response);
- }
- }
- }
-
- @Test
- public void testPropertiesCanOverrideDefaultVDC() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- TerremarkVCloudClient newApi = null;
- try {
- newApi = create(
- overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
- VCloudConstants.PROPERTY_VCLOUD_DEFAULT_VDC, vdc.getName())), setupModules());
- assertEquals(newApi.findVDCInOrgNamed(null, null), api.getVDC(vdc.getHref()));
- } finally {
- newApi.close();
- }
- }
- }
- }
-
- @Test
- public void testDefaultTasksList() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType tasksList : org.getTasksLists().values()) {
- org.jclouds.trmk.vcloud_0_8.domain.TasksList response = api.findTasksListInOrgNamed(org.getName(),
- tasksList.getName());
- assertNotNull(response);
- assertNotNull(response.getLocation());
- assertNotNull(response.getTasks());
- assertEquals(api.getTasksList(response.getLocation()).getLocation(), response.getLocation());
- }
- }
- }
-
- @Test
- public void testPropertiesCanOverrideDefaultTasksList() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType tasksList : org.getTasksLists().values()) {
- TerremarkVCloudClient newApi = null;
- try {
- newApi = create(
- overrideDefaults(ImmutableMap.of(VCloudConstants.PROPERTY_VCLOUD_DEFAULT_ORG, org.getName(),
- VCloudConstants.PROPERTY_VCLOUD_DEFAULT_TASKSLIST, tasksList.getName())), setupModules());
- assertEquals(newApi.findTasksListInOrgNamed(null, null),
- api.getTasksList(tasksList.getHref()));
- } finally {
- newApi.close();
- }
- }
- }
- }
-
- @Test
- public void testGetTask() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType tasksList : org.getTasksLists().values()) {
- org.jclouds.trmk.vcloud_0_8.domain.TasksList response = api.findTasksListInOrgNamed(org.getName(),
- tasksList.getName());
- assertNotNull(response);
- assertNotNull(response.getLocation());
- assertNotNull(response.getTasks());
- if (response.getTasks().size() > 0) {
- Task task = response.getTasks().last();
- assertEquals(api.getTask(task.getHref()).getHref(), task.getHref());
- }
- }
- }
- }
-
- protected Iterable<Org> orgs;
-
- protected Iterable<Org> listOrgs() {
- return Iterables.transform(api.listOrgs().values(), new Function<ReferenceType, Org>() {
-
- @Override
- public Org apply(ReferenceType arg0) {
- return api.getOrg(arg0.getHref());
- }
-
- });
- }
-
- @Test
- public void testGetVAppTemplate() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(cat.getHref());
- for (ReferenceType resource : response.values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
- CatalogItem item = api.getCatalogItem(resource.getHref());
- if (item.getEntity().getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML)) {
- assertNotNull(api.getVAppTemplate(item.getEntity().getHref()));
- }
- }
- }
- }
- }
- }
-
- @Test
- public void testGetVApp() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType vdc : org.getVDCs().values()) {
- VDC response = api.getVDC(vdc.getHref());
- for (ReferenceType item : response.getResourceEntities().values()) {
- if (item.getType().equals(TerremarkVCloudMediaType.VAPP_XML)) {
- try {
- VApp app = api.getVApp(item.getHref());
- assertNotNull(app);
- } catch (RuntimeException e) {
-
- }
- }
- }
- }
- }
- }
-
- @Test
- public void testFindVAppTemplate() throws Exception {
- for (Org org : orgs) {
- for (ReferenceType cat : org.getCatalogs().values()) {
- Catalog response = api.getCatalog(cat.getHref());
- for (ReferenceType resource : response.values()) {
- if (resource.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML)) {
- CatalogItem item = api.getCatalogItem(resource.getHref());
- if (item.getEntity().getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML)) {
- assertNotNull(api.findVAppTemplateInOrgCatalogNamed(org.getName(), response.getName(), item
- .getEntity().getName()));
- }
- }
- }
- }
- }
- }
-
- @Override
- protected Iterable<Module> setupModules() {
- return ImmutableSet.<Module> of(getLoggingModule(), new SshjSshClientModule());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/TerremarkVCloudComputeClientTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/TerremarkVCloudComputeClientTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/TerremarkVCloudComputeClientTest.java
index 09419d5..c2f364b 100644
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/TerremarkVCloudComputeClientTest.java
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/TerremarkVCloudComputeClientTest.java
@@ -33,7 +33,7 @@ import org.jclouds.compute.ComputeServiceAdapter.NodeAndInitialCredentials;
import org.jclouds.compute.domain.NodeMetadata;
import org.jclouds.domain.Credentials;
import org.jclouds.domain.LoginCredentials;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Status;
import org.jclouds.trmk.vcloud_0_8.domain.Task;
import org.jclouds.trmk.vcloud_0_8.domain.VApp;
@@ -64,7 +64,7 @@ public class TerremarkVCloudComputeClientTest {
URI vdcURI = URI.create("vdc");
expect(template.getDescription()).andReturn(description).atLeastOnce();
- TerremarkVCloudClient client = createMock(TerremarkVCloudClient.class);
+ TerremarkVCloudApi client = createMock(TerremarkVCloudApi.class);
VApp vApp = createMock(VApp.class);
InternetServiceAndPublicIpAddressSupplier supplier = createMock(InternetServiceAndPublicIpAddressSupplier.class);
expect(client.getVAppTemplate(templateURI)).andReturn(template);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/strategy/DeleteKeyPairTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/strategy/DeleteKeyPairTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/strategy/DeleteKeyPairTest.java
index eba92fe..23191ae 100644
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/strategy/DeleteKeyPairTest.java
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/strategy/DeleteKeyPairTest.java
@@ -26,7 +26,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import org.jclouds.domain.Credentials;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.compute.domain.OrgAndName;
import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
import org.testng.annotations.Test;
@@ -124,7 +124,7 @@ public class DeleteKeyPairTest {
@SuppressWarnings("unchecked")
private DeleteKeyPair setupStrategy() {
Map<String, Credentials> credentialStore = createMock(ConcurrentMap.class);
- TerremarkVCloudClient terremarkClient = createMock(TerremarkVCloudClient.class);
+ TerremarkVCloudApi terremarkClient = createMock(TerremarkVCloudApi.class);
return new DeleteKeyPair(terremarkClient, credentialStore);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/suppliers/VAppTemplatesInOrgsLiveTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/suppliers/VAppTemplatesInOrgsLiveTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/suppliers/VAppTemplatesInOrgsLiveTest.java
index 34d9214..221fd71 100644
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/suppliers/VAppTemplatesInOrgsLiveTest.java
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/compute/suppliers/VAppTemplatesInOrgsLiveTest.java
@@ -22,7 +22,7 @@ import java.util.Set;
import org.jclouds.compute.domain.Image;
import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
import org.jclouds.trmk.vcloud_0_8.functions.AllCatalogItemsInOrg;
import org.testng.annotations.BeforeClass;
@@ -44,7 +44,7 @@ extends BaseComputeServiceContextLiveTest {
provider = "trmk-vcloudexpress";
}
- private TerremarkVCloudClient tmClient;
+ private TerremarkVCloudApi tmClient;
private VAppTemplatesInOrgs parser;
private AllCatalogItemsInOrg allCatalogItemsInOrg;
@@ -54,7 +54,7 @@ extends BaseComputeServiceContextLiveTest {
super.setupContext();
Injector injector = view.utils().injector();
- tmClient = injector.getInstance(TerremarkVCloudClient.class);
+ tmClient = injector.getInstance(TerremarkVCloudApi.class);
allCatalogItemsInOrg = injector.getInstance(AllCatalogItemsInOrg.class);
parser = injector.getInstance(VAppTemplatesInOrgs.class);
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkApiLiveTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkApiLiveTest.java
new file mode 100644
index 0000000..ad14f33
--- /dev/null
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkApiLiveTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.trmk.vcloud_0_8.internal;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jclouds.util.Predicates2.retry;
+
+import org.jclouds.compute.ComputeService;
+import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
+import org.jclouds.predicates.SocketOpen;
+import org.jclouds.ssh.SshClient.Factory;
+import org.jclouds.sshj.config.SshjSshClientModule;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+import com.google.common.net.HostAndPort;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ *
+ * @author Adrian Cole
+ */
+@Test(groups = "live", enabled = true, singleThreaded = true)
+public abstract class BaseTerremarkApiLiveTest extends BaseComputeServiceContextLiveTest {
+
+ protected String prefix = System.getProperty("user.name");
+
+ protected ComputeService client;
+
+ public BaseTerremarkApiLiveTest() {
+ provider = "trmk-ecloud";
+ }
+
+ protected Predicate<HostAndPort> socketTester;
+ protected Factory sshFactory;
+ protected TerremarkVCloudApi api;
+
+ @Override
+ @BeforeClass(groups = { "integration", "live" })
+ public void setupContext() {
+ super.setupContext();
+ Injector injector = view.utils().injector();
+ SocketOpen socketOpen = injector.getInstance(SocketOpen.class);
+ socketTester = retry(socketOpen, 300, 1, SECONDS);
+ sshFactory = injector.getInstance(Factory.class);
+ api = injector.getInstance(TerremarkVCloudApi.class);
+ }
+
+ protected Module getSshModule() {
+ return new SshjSshClientModule();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkClientLiveTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkClientLiveTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkClientLiveTest.java
deleted file mode 100644
index 9e5dde9..0000000
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/BaseTerremarkClientLiveTest.java
+++ /dev/null
@@ -1,70 +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.trmk.vcloud_0_8.internal;
-
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jclouds.util.Predicates2.retry;
-
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
-import org.jclouds.predicates.SocketOpen;
-import org.jclouds.ssh.SshClient.Factory;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.net.HostAndPort;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-/**
- *
- * @author Adrian Cole
- */
-@Test(groups = "live", enabled = true, singleThreaded = true)
-public abstract class BaseTerremarkClientLiveTest extends BaseComputeServiceContextLiveTest {
-
- protected String prefix = System.getProperty("user.name");
-
- protected ComputeService client;
-
- public BaseTerremarkClientLiveTest() {
- provider = "trmk-ecloud";
- }
-
- protected Predicate<HostAndPort> socketTester;
- protected Factory sshFactory;
- protected TerremarkVCloudClient api;
-
- @Override
- @BeforeClass(groups = { "integration", "live" })
- public void setupContext() {
- super.setupContext();
- Injector injector = view.utils().injector();
- SocketOpen socketOpen = injector.getInstance(SocketOpen.class);
- socketTester = retry(socketOpen, 300, 1, SECONDS);
- sshFactory = injector.getInstance(Factory.class);
- api = injector.getInstance(TerremarkVCloudClient.class);
- }
-
- protected Module getSshModule() {
- return new SshjSshClientModule();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApiTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApiTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApiTest.java
new file mode 100644
index 0000000..95df1ff
--- /dev/null
+++ b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApiTest.java
@@ -0,0 +1,99 @@
+/*
+ * 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.trmk.vcloud_0_8.internal;
+
+import static org.jclouds.reflect.Reflection2.method;
+import static org.testng.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.URI;
+
+import javax.ws.rs.core.HttpHeaders;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.filters.BasicAuthentication;
+import org.jclouds.location.Provider;
+import org.jclouds.providers.AnonymousProviderMetadata;
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.rest.internal.BaseAsyncClientTest;
+import org.jclouds.rest.internal.GeneratedHttpRequest;
+import org.jclouds.trmk.vcloud_0_8.endpoints.VCloudLogin;
+import org.jclouds.trmk.vcloud_0_8.functions.ParseLoginResponseFromHeaders;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.ImmutableList;
+import com.google.common.reflect.Invokable;
+import com.google.inject.Binder;
+import com.google.inject.Module;
+import com.google.inject.Provides;
+
+/**
+ * Tests behavior of {@code VCloudLoginApi}
+ *
+ * @author Adrian Cole
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during
+// surefire
+@Test(groups = "unit", testName = "VCloudLoginApiTest")
+public class TerremarkVCloudLoginApiTest extends BaseAsyncClientTest<TerremarkVCloudLoginApi> {
+
+ public void testLogin() throws SecurityException, NoSuchMethodException, IOException {
+ Invokable<?, ?> method = method(TerremarkVCloudLoginApi.class, "login");
+ GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of());
+
+ assertEquals(request.getRequestLine(), "POST http://localhost:8080/login HTTP/1.1");
+ assertNonPayloadHeadersEqual(request, HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.orgList+xml\n");
+ assertPayloadEquals(request, null, null, false);
+
+ assertResponseParserClassEquals(method, request, ParseLoginResponseFromHeaders.class);
+ assertSaxResponseParserClassEquals(method, null);
+ assertFallbackClassEquals(method, null);
+
+ checkFilters(request);
+ }
+
+ @Override
+ protected void checkFilters(HttpRequest request) {
+ assertEquals(request.getFilters().size(), 1);
+ assertEquals(request.getFilters().get(0).getClass(), BasicAuthentication.class);
+ }
+
+ @Override
+ protected Module createModule() {
+ return new Module() {
+
+ @Override
+ public void configure(Binder binder) {
+ }
+
+ @Provides
+ @VCloudLogin
+ Supplier<URI> provideURI(@Provider Supplier<URI> uri) {
+ return uri;
+ }
+
+ };
+ }
+
+ @Override
+ protected ProviderMetadata createProviderMetadata() {
+ return AnonymousProviderMetadata.forApiOnEndpoint(TerremarkVCloudLoginApi.class,
+ "http://localhost:8080/login");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClientTest.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClientTest.java b/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClientTest.java
deleted file mode 100644
index 078d4ab..0000000
--- a/common/trmk/src/test/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClientTest.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.trmk.vcloud_0_8.internal;
-
-import static org.jclouds.reflect.Reflection2.method;
-import static org.testng.Assert.assertEquals;
-
-import java.io.IOException;
-import java.net.URI;
-
-import javax.ws.rs.core.HttpHeaders;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.filters.BasicAuthentication;
-import org.jclouds.location.Provider;
-import org.jclouds.providers.AnonymousProviderMetadata;
-import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.rest.internal.BaseAsyncClientTest;
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-import org.jclouds.trmk.vcloud_0_8.endpoints.VCloudLogin;
-import org.jclouds.trmk.vcloud_0_8.functions.ParseLoginResponseFromHeaders;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.reflect.Invokable;
-import com.google.inject.Binder;
-import com.google.inject.Module;
-import com.google.inject.Provides;
-
-/**
- * Tests behavior of {@code VCloudLoginAsyncClient}
- *
- * @author Adrian Cole
- */
-// NOTE:without testName, this will not call @Before* and fail w/NPE during
-// surefire
-@Test(groups = "unit", testName = "VCloudLoginAsyncClientTest")
-public class TerremarkVCloudLoginAsyncClientTest extends BaseAsyncClientTest<TerremarkVCloudLoginAsyncClient> {
-
- public void testLogin() throws SecurityException, NoSuchMethodException, IOException {
- Invokable<?, ?> method = method(TerremarkVCloudLoginAsyncClient.class, "login");
- GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of());
-
- assertEquals(request.getRequestLine(), "POST http://localhost:8080/login HTTP/1.1");
- assertNonPayloadHeadersEqual(request, HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.orgList+xml\n");
- assertPayloadEquals(request, null, null, false);
-
- assertResponseParserClassEquals(method, request, ParseLoginResponseFromHeaders.class);
- assertSaxResponseParserClassEquals(method, null);
- assertFallbackClassEquals(method, null);
-
- checkFilters(request);
- }
-
- @Override
- protected void checkFilters(HttpRequest request) {
- assertEquals(request.getFilters().size(), 1);
- assertEquals(request.getFilters().get(0).getClass(), BasicAuthentication.class);
- }
-
- @Override
- protected Module createModule() {
- return new Module() {
-
- @Override
- public void configure(Binder binder) {
- }
-
- @Provides
- @VCloudLogin
- Supplier<URI> provideURI(@Provider Supplier<URI> uri) {
- return uri;
- }
-
- };
- }
-
- @Override
- protected ProviderMetadata createProviderMetadata() {
- return AnonymousProviderMetadata.forClientMappedToAsyncClientOnEndpoint(TerremarkVCloudLoginClient.class,
- TerremarkVCloudLoginAsyncClient.class, "http://localhost:8080/login");
- }
-
-}