Repository: jclouds-labs Updated Branches: refs/heads/master e8c45302e -> c458bafdf
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiLiveTest.java index 9eaf990..8d1d505 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/SubnetApiLiveTest.java @@ -16,89 +16,87 @@ */ package org.jclouds.azurecompute.arm.features; -import org.jclouds.azurecompute.arm.domain.Subnet; +import java.util.List; +import org.jclouds.azurecompute.arm.domain.Subnet; import org.jclouds.azurecompute.arm.domain.VirtualNetwork; import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest; - +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import java.util.List; - import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; @Test(groups = "live", singleThreaded = true) public class SubnetApiLiveTest extends BaseAzureComputeApiLiveTest { - private final String subscriptionid = "subscriptionid"; - private String resourcegroup; + private String resourceGroupName; + private String virtualNetworkName; + private String subnetName; @BeforeClass @Override public void setup() { super.setup(); - resourcegroup = getResourceGroupName(); + resourceGroupName = String.format("rg-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + assertNotNull(createResourceGroup(resourceGroupName)); + virtualNetworkName = String.format("vn-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + subnetName = "jclouds-" + RAND; // Subnets belong to a virtual network so that needs to be created first // VN will be deleted when resource group is deleted - VirtualNetwork vn = getOrCreateVirtualNetwork(VIRTUAL_NETWORK_NAME); + VirtualNetwork vn = createDefaultVirtualNetwork(resourceGroupName, virtualNetworkName, "10.2.0.0/16", LOCATION); assertNotNull(vn); } - @Test(groups = "live") - public void deleteSubnetResourceDoesNotExist() { - - final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, VIRTUAL_NETWORK_NAME); - - boolean status = subnetApi.delete(DEFAULT_SUBNET_NAME); - assertFalse(status); + @AfterClass + @Override + protected void tearDown() { + super.tearDown(); + deleteResourceGroup(resourceGroupName); + } + @Test + public void deleteSubnetResourceDoesNotExist() { + assertFalse(api().delete(subnetName)); } - @Test(groups = "live", dependsOnMethods = "deleteSubnetResourceDoesNotExist") + @Test(dependsOnMethods = "deleteSubnetResourceDoesNotExist") public void createSubnet() { - - final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, VIRTUAL_NETWORK_NAME); - //Create properties object //addressPrefix must match Virtual network address space! - Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix(DEFAULT_SUBNET_ADDRESS_SPACE).build(); + Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix("10.2.0.0/23").build(); - Subnet subnet = subnetApi.createOrUpdate(DEFAULT_SUBNET_NAME, properties); + Subnet subnet = api().createOrUpdate(subnetName, properties); - assertEquals(subnet.name(), DEFAULT_SUBNET_NAME); - assertEquals(subnet.properties().addressPrefix(), DEFAULT_SUBNET_ADDRESS_SPACE); + assertEquals(subnet.name(), subnetName); + assertEquals(subnet.properties().addressPrefix(), "10.2.0.0/23"); } - @Test(groups = "live", dependsOnMethods = "createSubnet") + @Test(dependsOnMethods = "createSubnet") public void getSubnet() { - - final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, VIRTUAL_NETWORK_NAME); - Subnet subnet = subnetApi.get(DEFAULT_SUBNET_NAME); - + Subnet subnet = api().get(subnetName); assertNotNull(subnet.name()); assertNotNull(subnet.properties().addressPrefix()); } - @Test(groups = "live", dependsOnMethods = "createSubnet") + @Test(dependsOnMethods = "createSubnet") public void listSubnets() { - - final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, VIRTUAL_NETWORK_NAME); - List<Subnet> subnets = subnetApi.list(); - + List<Subnet> subnets = api().list(); assertTrue(subnets.size() > 0); } - @Test(groups = "live", dependsOnMethods = {"listSubnets", "getSubnet"}, alwaysRun = true) + @Test(dependsOnMethods = {"listSubnets", "getSubnet"}, alwaysRun = true) public void deleteSubnet() { - - final SubnetApi subnetApi = api.getSubnetApi(resourcegroup, VIRTUAL_NETWORK_NAME); - boolean status = subnetApi.delete(DEFAULT_SUBNET_NAME); + boolean status = api().delete(subnetName); assertTrue(status); } + private SubnetApi api() { + return api.getSubnetApi(resourceGroupName, virtualNetworkName); + } + } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/TemplateToDeploymentTemplateLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/TemplateToDeploymentTemplateLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/TemplateToDeploymentTemplateLiveTest.java index 12d6255..3b87663 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/TemplateToDeploymentTemplateLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/TemplateToDeploymentTemplateLiveTest.java @@ -16,7 +16,8 @@ */ package org.jclouds.azurecompute.arm.features; -import com.google.common.net.UrlEscapers; +import java.net.URI; + import org.jclouds.azurecompute.arm.compute.options.AzureTemplateOptions; import org.jclouds.azurecompute.arm.domain.Deployment; import org.jclouds.azurecompute.arm.domain.DeploymentBody; @@ -37,9 +38,12 @@ import org.jclouds.compute.options.TemplateOptions; import org.jclouds.domain.Location; import org.jclouds.domain.LocationBuilder; import org.jclouds.domain.LocationScope; +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import com.google.common.net.UrlEscapers; + import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; @@ -48,30 +52,42 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv private int maxTestDuration = 400; private int pollingInterval = 3; // how frequently to poll for create status - private String resourceGroup; + private String resourceGroupName; private String deploymentName; private String vnetName; private String subnetId; + private String virtualNetworkName; @BeforeClass @Override public void setup() { super.setup(); - resourceGroup = getResourceGroupName(); + resourceGroupName = String.format("rg-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + assertNotNull(createResourceGroup(resourceGroupName)); + virtualNetworkName = String.format("vn-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); //Subnets belong to a virtual network so that needs to be created first - VirtualNetwork vn = getOrCreateVirtualNetwork(VIRTUAL_NETWORK_NAME); + VirtualNetwork vn = createDefaultVirtualNetwork(resourceGroupName, virtualNetworkName, "10.2.0.0/16", LOCATION); assertNotNull(vn); vnetName = vn.name(); //Subnet needs to be up & running before NIC can be created - Subnet subnet = getOrCreateSubnet(DEFAULT_SUBNET_NAME, VIRTUAL_NETWORK_NAME); + String subnetName = String.format("s-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + Subnet subnet = createDefaultSubnet(resourceGroupName, subnetName, virtualNetworkName, "10.2.0.0/23"); assertNotNull(subnet); assertNotNull(subnet.id()); subnetId = subnet.id(); } - @Test(groups = "live") + @AfterClass + @Override + protected void tearDown() { + super.tearDown(); + URI uri = deleteResourceGroup(resourceGroupName); + assertResourceDeleted(uri); + } + + @Test public void testValidateDeploymentTemplateLinuxNodeWithOptions() { Long now = System.currentTimeMillis(); deploymentName = "jc" + now; @@ -96,7 +112,7 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv assertNotNull(deployment); } - @Test(groups = "live") + @Test public void testValidateDeploymentTemplateLinuxNode() { Long now = System.currentTimeMillis(); deploymentName = "jc" + now; @@ -115,7 +131,7 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv assertNotNull(deployment); } - @Test(groups = "live") + @Test public void testValidateDeploymentTemplateWithCustomOptions() { Long now = System.currentTimeMillis(); deploymentName = "jc" + now; @@ -143,7 +159,7 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv assertNotNull(deployment); } - @Test(groups = "live") + @Test public void testValidateDeploymentTemplateLinuxNodeWithSSH() { Long now = System.currentTimeMillis(); deploymentName = "jc" + now; @@ -168,7 +184,7 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv assertNotNull(deployment); } - @Test(groups = "live") + @Test public void testCreateDeploymentTemplateLinuxNode() { Long now = System.currentTimeMillis(); deploymentName = "jc" + now; @@ -249,17 +265,17 @@ public class TemplateToDeploymentTemplateLiveTest extends BaseAzureComputeApiLiv options.subnetId(subnetId); Template template = getTemplate(options); - DeploymentTemplateBuilder templateBuilder = api.deploymentTemplateFactory().create(resourceGroup, deploymentName, template); + DeploymentTemplateBuilder templateBuilder = api.deploymentTemplateFactory().create(resourceGroupName, deploymentName, template); return templateBuilder; } private DeploymentTemplateBuilder getDeploymentTemplateBuilderWithOptions(TemplateOptions options) { Template template = getTemplate(options); - DeploymentTemplateBuilder templateBuilder = api.deploymentTemplateFactory().create(resourceGroup, deploymentName, template); + DeploymentTemplateBuilder templateBuilder = api.deploymentTemplateFactory().create(resourceGroupName, deploymentName, template); return templateBuilder; } private DeploymentApi api() { - return api.getDeploymentApi(resourceGroup); + return api.getDeploymentApi(resourceGroupName); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java index fdd6ce9..90e258b 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VMSizeApiLiveTest.java @@ -35,6 +35,6 @@ public class VMSizeApiLiveTest extends BaseAzureComputeApiLiveTest { } private VMSizeApi api() { - return api.getVMSizeApi(getLocation()); + return api.getVMSizeApi(LOCATION); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java index 5271e2a..2702370 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiLiveTest.java @@ -16,105 +16,113 @@ */ package org.jclouds.azurecompute.arm.features; -import com.google.common.base.Predicate; -import com.google.gson.internal.LinkedTreeMap; -import com.google.common.collect.Iterables; +import java.net.URI; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + import org.jclouds.azurecompute.arm.domain.DataDisk; import org.jclouds.azurecompute.arm.domain.DiagnosticsProfile; import org.jclouds.azurecompute.arm.domain.HardwareProfile; import org.jclouds.azurecompute.arm.domain.IdReference; import org.jclouds.azurecompute.arm.domain.ImageReference; +import org.jclouds.azurecompute.arm.domain.IpConfiguration; +import org.jclouds.azurecompute.arm.domain.IpConfigurationProperties; import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard; +import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCardProperties; import org.jclouds.azurecompute.arm.domain.NetworkProfile; import org.jclouds.azurecompute.arm.domain.OSDisk; import org.jclouds.azurecompute.arm.domain.OSProfile; +import org.jclouds.azurecompute.arm.domain.ResourceDefinition; import org.jclouds.azurecompute.arm.domain.StorageProfile; import org.jclouds.azurecompute.arm.domain.StorageService; +import org.jclouds.azurecompute.arm.domain.Subnet; import org.jclouds.azurecompute.arm.domain.VHD; import org.jclouds.azurecompute.arm.domain.VirtualMachine; import org.jclouds.azurecompute.arm.domain.VirtualMachineInstance; import org.jclouds.azurecompute.arm.domain.VirtualMachineProperties; -import org.jclouds.azurecompute.arm.functions.ParseJobStatus; -import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils; import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest; -import org.jclouds.util.Predicates2; -import org.jclouds.azurecompute.arm.domain.ResourceDefinition; import org.testng.Assert; +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.RESOURCE_GROUP_NAME; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_SCRIPT_COMPLETE; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_PORT_OPEN; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_TERMINATED; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; -import static org.testng.Assert.assertNotNull; - -import java.net.URI; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; -import java.util.concurrent.TimeUnit; +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.gson.internal.LinkedTreeMap; +import static org.jclouds.util.Predicates2.retry; +import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; @Test(groups = "live", testName = "VirtualMachineApiLiveTest") public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { - private String subscriptionid = getSubscriptionId(); - private String vmName = null; - private String nicName = null; + private String subscriptionid; + private String resourceGroupName; + private String storageServiceName; + private String vmName; + private String nicName; + private StorageService storageService; + private String virtualNetworkName; + private String subnetId; @BeforeClass - public void Setup() { - NetworkInterfaceCard nic = getOrCreateNetworkInterfaceCard(NETWORKINTERFACECARD_NAME); + @Override + public void setup() { + super.setup(); + subscriptionid = getSubscriptionId(); + + resourceGroupName = String.format("rg-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + assertNotNull(createResourceGroup(resourceGroupName)); + virtualNetworkName = String.format("vn-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + + storageServiceName = String.format("st%s%s", System.getProperty("user.name"), RAND); + storageService = createStorageService(resourceGroupName, storageServiceName, LOCATION); + + // Subnets belong to a virtual network so that needs to be created first + assertNotNull(createDefaultVirtualNetwork(resourceGroupName, virtualNetworkName, "10.2.0.0/16", LOCATION)); + + //Subnet needs to be up & running before NIC can be created + String subnetName = String.format("s-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + Subnet subnet = createDefaultSubnet(resourceGroupName, subnetName, virtualNetworkName, "10.2.0.0/23"); + assertNotNull(subnet); + assertNotNull(subnet.id()); + subnetId = subnet.id(); + + NetworkInterfaceCard nic = createNetworkInterfaceCard(resourceGroupName, "jc-nic-" + RAND, LOCATION, "ipConfig-" + RAND); assertNotNull(nic); nicName = nic.name(); - } - - @Override - protected Properties setupProperties() { - Properties properties = super.setupProperties(); - long scriptTimeout = TimeUnit.MILLISECONDS.convert(60, TimeUnit.MINUTES); - properties.setProperty(TIMEOUT_SCRIPT_COMPLETE, scriptTimeout + ""); - properties.setProperty(TIMEOUT_NODE_RUNNING, scriptTimeout + ""); - properties.setProperty(TIMEOUT_PORT_OPEN, scriptTimeout + ""); - properties.setProperty(TIMEOUT_NODE_TERMINATED, scriptTimeout + ""); - properties.setProperty(TIMEOUT_NODE_SUSPENDED, scriptTimeout + ""); - properties.put(RESOURCE_GROUP_NAME, getResourceGroupName()); - - AzureLiveTestUtils.defaultProperties(properties); - checkNotNull(setIfTestSystemPropertyPresent(properties, "oauth.endpoint"), "test.oauth.endpoint"); - return properties; + vmName = String.format("%3.24s", System.getProperty("user.name") + RAND + this.getClass().getSimpleName()).toLowerCase().substring(0, 15); } - private String getName() { - if (vmName == null) { - vmName = String.format("%3.24s", - System.getProperty("user.name") + RAND + this.getClass().getSimpleName()).toLowerCase().substring(0, 15); - } - return vmName; + @AfterClass + @Override + protected void tearDown() { + super.tearDown(); + URI deleteResourceGroupURI = deleteResourceGroup(resourceGroupName); + assertResourceDeleted(deleteResourceGroupURI); } @Test public void testCreate() { - StorageAccountApi storageApi = api.getStorageAccountApi(getResourceGroupName()); - StorageService storageAccount = storageApi.get(getStorageServiceName()); - String blob = storageAccount.storageServiceProperties().primaryEndpoints().get("blob"); + String blob = storageService.storageServiceProperties().primaryEndpoints().get("blob"); - VirtualMachine vm = api().create(getName(), LOCATION, getProperties(blob, nicName)); + VirtualMachine vm = api().create(vmName, LOCATION, getProperties(blob, nicName)); assertTrue(!vm.name().isEmpty()); //Poll until resource is ready to be used - boolean jobDone = Predicates2.retry(new Predicate<String>() { + boolean jobDone = retry(new Predicate<String>() { @Override public boolean apply(String name) { return !api().get(name).properties().provisioningState().equals("Creating"); } - }, 60 * 20 * 1000).apply(getName()); + }, 60 * 20 * 1000).apply(vmName); assertTrue(jobDone, "create operation did not complete in the configured timeout"); String status = api().get(vmName).properties().provisioningState(); @@ -125,91 +133,40 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { @Test(dependsOnMethods = "testCreate") public void testGet() { - VirtualMachine vm = api().get(getName()); + VirtualMachine vm = api().get(vmName); assertTrue(!vm.name().isEmpty()); } @Test(dependsOnMethods = "testCreate") public void testGetInstanceView() { - VirtualMachineInstance vmi = api().getInstanceDetails(getName()); + VirtualMachineInstance vmi = api().getInstanceDetails(vmName); assertTrue(!vmi.statuses().isEmpty()); } @Test(dependsOnMethods = "testStart") public void testStop() { - api().stop(getName()); - //Poll until resource is ready to be used - nodeSuspendedPredicate.apply(getName()); + api().stop(vmName); + assertTrue(stateReached("PowerState", "VM stopped"), "stop operation did not complete in the configured timeout"); } @Test(dependsOnMethods = "testGet") public void testStart() { - api().start(getName()); - - //Poll until resource is ready to be used - boolean jobDone = Predicates2.retry(new Predicate<String>() { - @Override - public boolean apply(String name) { - String status = ""; - List<VirtualMachineInstance.VirtualMachineStatus> statuses = api().getInstanceDetails(name).statuses(); - for (int c = 0; c < statuses.size(); c++) { - if (statuses.get(c).code().substring(0, 10).equals("PowerState")) { - status = statuses.get(c).displayStatus(); - break; - } - } - return status.equals("VM running"); - } - }, 60 * 4 * 1000).apply(getName()); - assertTrue(jobDone, "start operation did not complete in the configured timeout"); - + api().start(vmName); + assertTrue(stateReached("PowerState", "VM running"), "start operation did not complete in the configured timeout"); } @Test(dependsOnMethods = "testStop") public void testRestart() { - api().start(getName()); - - //Poll until resource is ready to be used - boolean jobDone = Predicates2.retry(new Predicate<String>() { - @Override - public boolean apply(String name) { - String status = ""; - List<VirtualMachineInstance.VirtualMachineStatus> statuses = api().getInstanceDetails(name).statuses(); - for (int c = 0; c < statuses.size(); c++) { - if (statuses.get(c).code().substring(0, 10).equals("PowerState")) { - status = statuses.get(c).displayStatus(); - break; - } - } - return status.equals("VM running"); - } - }, 60 * 4 * 1000).apply(getName()); - assertTrue(jobDone, "start operation did not complete in the configured timeout"); - - api().restart(getName()); - - //Poll until resource is ready to be used - jobDone = Predicates2.retry(new Predicate<String>() { - @Override - public boolean apply(String name) { - String status = ""; - List<VirtualMachineInstance.VirtualMachineStatus> statuses = api().getInstanceDetails(name).statuses(); - for (int c = 0; c < statuses.size(); c++) { - if (statuses.get(c).code().substring(0, 10).equals("PowerState")) { - status = statuses.get(c).displayStatus(); - break; - } - } - return status.equals("VM running"); - } - }, 60 * 4 * 1000).apply(getName()); - assertTrue(jobDone, "restart operation did not complete in the configured timeout"); + api().start(vmName); + assertTrue(stateReached("PowerState", "VM running"), "start operation did not complete in the configured timeout"); + api().restart(vmName); + assertTrue(stateReached("PowerState", "VM running"), "restart operation did not complete in the configured timeout"); } @Test(dependsOnMethods = "testCreate") public void testList() { List<VirtualMachine> list = api().list(); - final VirtualMachine vm = api().get(getName()); + final VirtualMachine vm = api().get(vmName); boolean vmPresent = Iterables.any(list, new Predicate<VirtualMachine>() { public boolean apply(VirtualMachine input) { @@ -222,34 +179,30 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { @Test(dependsOnMethods = "testRestart") public void testGeneralize() throws IllegalStateException { - api().stop(getName()); - //Poll until resource is ready to be used - - if (nodeSuspendedPredicate.apply(getName())) { - api().generalize(getName()); - } + api().stop(vmName); + assertTrue(stateReached("PowerState", "VM stopped"), "restart operation did not complete in the configured timeout"); + api().generalize(vmName); } @Test(dependsOnMethods = "testGeneralize") public void testCapture() throws IllegalStateException { - URI uri = api().capture(getName(), getName(), getName()); - if (uri != null) { - if (imageAvailablePredicate.apply(uri)) { - List<ResourceDefinition> definitions = api.getJobApi().captureStatus(uri); - if (definitions != null) { - for (ResourceDefinition definition : definitions) { - LinkedTreeMap<String, String> properties = (LinkedTreeMap<String, String>) definition.properties(); - Object storageObject = properties.get("storageProfile"); - LinkedTreeMap<String, String> properties2 = (LinkedTreeMap<String, String>) storageObject; - Object osDiskObject = properties2.get("osDisk"); - LinkedTreeMap<String, String> osProperties = (LinkedTreeMap<String, String>) osDiskObject; - Object dataDisksObject = properties2.get("dataDisks"); - ArrayList<Object> dataProperties = (ArrayList<Object>) dataDisksObject; - LinkedTreeMap<String, String> datadiskObject = (LinkedTreeMap<String, String>) dataProperties.get(0); - - Assert.assertNotNull(osProperties.get("name")); - Assert.assertNotNull(datadiskObject.get("name")); - } + URI uri = api().capture(vmName, vmName, vmName); + if (uri == null) Assert.fail(); + if (imageAvailablePredicate.apply(uri)) { + List<ResourceDefinition> definitions = api.getJobApi().captureStatus(uri); + if (definitions != null) { + for (ResourceDefinition definition : definitions) { + LinkedTreeMap<String, String> properties = (LinkedTreeMap<String, String>) definition.properties(); + Object storageObject = properties.get("storageProfile"); + LinkedTreeMap<String, String> properties2 = (LinkedTreeMap<String, String>) storageObject; + Object osDiskObject = properties2.get("osDisk"); + LinkedTreeMap<String, String> osProperties = (LinkedTreeMap<String, String>) osDiskObject; + Object dataDisksObject = properties2.get("dataDisks"); + ArrayList<Object> dataProperties = (ArrayList<Object>) dataDisksObject; + LinkedTreeMap<String, String> datadiskObject = (LinkedTreeMap<String, String>) dataProperties.get(0); + + Assert.assertNotNull(osProperties.get("name")); + Assert.assertNotNull(datadiskObject.get("name")); } } } @@ -257,23 +210,12 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { @Test(dependsOnMethods = "testCapture", alwaysRun = true) public void testDelete() throws Exception { - URI uri = api().delete(getName()); - - if (uri != null) { - assertTrue(uri.toString().contains("api-version")); - - boolean jobDone = Predicates2.retry(new Predicate<URI>() { - @Override - public boolean apply(URI uri) { - return ParseJobStatus.JobStatus.DONE == api.getJobApi().jobStatus(uri); - } - }, 60 * 8 * 1000 /* 2 minutes timeout */).apply(uri); - assertTrue(jobDone, "delete operation did not complete in the configured timeout"); - } + URI uri = api().delete(vmName); + assertResourceDeleted(uri); } private VirtualMachineApi api() { - return api.getVirtualMachineApi(getResourceGroupName()); + return api.getVirtualMachineApi(resourceGroupName); } private VirtualMachineProperties getProperties(String blob, String nic) { @@ -281,19 +223,19 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { HardwareProfile hwProf = HardwareProfile.create("Standard_D1"); ImageReference imgRef = ImageReference.create("MicrosoftWindowsServerEssentials", "WindowsServerEssentials", "WindowsServerEssentials", "latest"); - VHD vhd = VHD.create(blob + "vhds/" + getName() + ".vhd"); - VHD vhd2 = VHD.create(blob + "vhds/" + getName() + "data.vhd"); - DataDisk dataDisk = DataDisk.create(getName() + "data", "100", 0, vhd2, "Empty"); + VHD vhd = VHD.create(blob + "vhds/" + vmName + ".vhd"); + VHD vhd2 = VHD.create(blob + "vhds/" + vmName + "data.vhd"); + DataDisk dataDisk = DataDisk.create(vmName + "data", "100", 0, vhd2, "Empty"); List<DataDisk> dataDisks = new ArrayList<DataDisk>(); dataDisks.add(dataDisk); - OSDisk osDisk = OSDisk.create(null, getName(), vhd, "ReadWrite", "FromImage", null); + OSDisk osDisk = OSDisk.create(null, vmName, vhd, "ReadWrite", "FromImage", null); StorageProfile storageProfile = StorageProfile.create(imgRef, osDisk, dataDisks); OSProfile.WindowsConfiguration windowsConfig = OSProfile.WindowsConfiguration.create(false, null, null, true, null); - OSProfile osProfile = OSProfile.create(getName(), "azureuser", "RFe3&432dg", null, null, windowsConfig); + OSProfile osProfile = OSProfile.create(vmName, "azureuser", "RFe3&432dg", null, null, windowsConfig); IdReference networkInterface = IdReference.create("/subscriptions/" + subscriptionid + - "/resourceGroups/" + getResourceGroupName() + "/providers/Microsoft.Network/networkInterfaces/" + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/networkInterfaces/" + nic); List<IdReference> networkInterfaces = new ArrayList<IdReference>(); @@ -306,4 +248,51 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest { null, null, hwProf, storageProfile, osProfile, networkProfile, diagnosticsProfile, "Creating"); return properties; } + + protected NetworkInterfaceCard createNetworkInterfaceCard(final String resourceGroupName, String networkInterfaceCardName, String locationName, String ipConfigurationName) { + //Create properties object + final NetworkInterfaceCardProperties networkInterfaceCardProperties = + NetworkInterfaceCardProperties.builder() + .ipConfigurations(Arrays.asList(IpConfiguration.create(ipConfigurationName, null, null, null, + IpConfigurationProperties.create(null, null, "Dynamic", IdReference.create(subnetId), null)) + )).build(); + + final Map<String, String> tags = ImmutableMap.of("jclouds", "livetest"); + return api.getNetworkInterfaceCardApi(resourceGroupName).createOrUpdate(networkInterfaceCardName, locationName, networkInterfaceCardProperties, tags); + } + + private boolean deleteStorageService(String resourceGroupName, String storageServiceName) { + return api.getStorageAccountApi(resourceGroupName).delete(storageServiceName); + } + + private boolean waitForState(String name, final String state, final String displayStatus) { + return FluentIterable.from(api().getInstanceDetails(name).statuses()) + .filter(new Predicate<VirtualMachineInstance.VirtualMachineStatus>() { + @Override + public boolean apply(VirtualMachineInstance.VirtualMachineStatus input) { + return input.code().substring(0, 10).equals(state); + } + }) + .transform(new Function<VirtualMachineInstance.VirtualMachineStatus, String>() { + @Override + public String apply(VirtualMachineInstance.VirtualMachineStatus input) { + return input.displayStatus(); + } + }) + .anyMatch(new Predicate<String>() { + @Override + public boolean apply(String input) { + return input.equals(displayStatus); + } + }); + } + + private boolean stateReached(final String state, final String displayStatus) { + return retry(new Predicate<String>() { + @Override + public boolean apply(String name) { + return waitForState(name, state, displayStatus); + } + }, 60 * 4 * 1000).apply(vmName); + } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualNetworkApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualNetworkApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualNetworkApiLiveTest.java index 71ad0b0..7f59678 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualNetworkApiLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualNetworkApiLiveTest.java @@ -16,87 +16,84 @@ */ package org.jclouds.azurecompute.arm.features; +import java.util.Arrays; +import java.util.List; + import org.jclouds.azurecompute.arm.domain.VirtualNetwork; import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest; - +import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import java.util.Arrays; -import java.util.List; - import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; @Test(groups = "live", singleThreaded = true) public class VirtualNetworkApiLiveTest extends BaseAzureComputeApiLiveTest { - private final String subscriptionid = "subscriptionid"; - private String resourcegroup; + private String resourceGroupName; + private String virtualNetworkName; @BeforeClass @Override public void setup() { super.setup(); - resourcegroup = getResourceGroupName(); + resourceGroupName = String.format("rg-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); + assertNotNull(createResourceGroup(resourceGroupName)); + virtualNetworkName = String.format("vn-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name")); } - @Test(groups = "live") - public void deleteVirtualNetworkResourceDoesNotExist() { - - final VirtualNetworkApi vnApi = api.getVirtualNetworkApi(resourcegroup); + @AfterClass + @Override + protected void tearDown() { + super.tearDown(); + deleteResourceGroup(resourceGroupName); + } - boolean status = vnApi.delete(VIRTUAL_NETWORK_NAME); + @Test + public void deleteVirtualNetworkResourceDoesNotExist() { + boolean status = api().delete(virtualNetworkName); assertFalse(status); - } - @Test(groups = "live", dependsOnMethods = "deleteVirtualNetworkResourceDoesNotExist") + @Test(dependsOnMethods = "deleteVirtualNetworkResourceDoesNotExist") public void createVirtualNetwork() { - final VirtualNetworkApi vnApi = api.getVirtualNetworkApi(resourcegroup); - - //Create properties object - final VirtualNetwork.VirtualNetworkProperties virtualNetworkProperties = VirtualNetwork.VirtualNetworkProperties.builder().addressSpace( VirtualNetwork.AddressSpace.create(Arrays.asList(DEFAULT_VIRTUALNETWORK_ADDRESS_PREFIX))).build(); - VirtualNetwork vn = vnApi.createOrUpdate(VIRTUAL_NETWORK_NAME, LOCATION, virtualNetworkProperties); + VirtualNetwork vn = api().createOrUpdate(virtualNetworkName, LOCATION, virtualNetworkProperties); - assertEquals(VIRTUAL_NETWORK_NAME, vn.name()); - assertEquals(LOCATION, vn.location()); + assertEquals(vn.name(), virtualNetworkName); + assertEquals(vn.location(), LOCATION); } - @Test(groups = "live", dependsOnMethods = "createVirtualNetwork") + @Test(dependsOnMethods = "createVirtualNetwork") public void getVirtualNetwork() { - - final VirtualNetworkApi vnApi = api.getVirtualNetworkApi(resourcegroup); - VirtualNetwork vn = vnApi.get(VIRTUAL_NETWORK_NAME); + VirtualNetwork vn = api().get(virtualNetworkName); assertNotNull(vn.name()); assertNotNull(vn.location()); assertNotNull(vn.properties().addressSpace().addressPrefixes()); } - @Test(groups = "live", dependsOnMethods = "createVirtualNetwork") + @Test(dependsOnMethods = "createVirtualNetwork") public void listVirtualNetworks() { - - final VirtualNetworkApi vnApi = api.getVirtualNetworkApi(resourcegroup); - List<VirtualNetwork> vnList = vnApi.list(); - + List<VirtualNetwork> vnList = api().list(); assertTrue(vnList.size() > 0); } - @Test(groups = "live", dependsOnMethods = {"listVirtualNetworks", "getVirtualNetwork"}, alwaysRun = true) + @Test(dependsOnMethods = {"listVirtualNetworks", "getVirtualNetwork"}, alwaysRun = true) public void deleteVirtualNetwork() { - - final VirtualNetworkApi vnApi = api.getVirtualNetworkApi(resourcegroup); - - boolean status = vnApi.delete(VIRTUAL_NETWORK_NAME); + boolean status = api().delete(virtualNetworkName); assertTrue(status); } + private VirtualNetworkApi api() { + return api.getVirtualNetworkApi(resourceGroupName); + } + } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AbstractAzureComputeApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AbstractAzureComputeApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AbstractAzureComputeApiLiveTest.java deleted file mode 100644 index f3134b7..0000000 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/AbstractAzureComputeApiLiveTest.java +++ /dev/null @@ -1,80 +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.azurecompute.arm.internal; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; -import java.util.Properties; -import java.util.Random; - -import com.google.common.base.Predicate; -import com.google.inject.Module; -import com.google.inject.Injector; - - -import org.jclouds.apis.BaseApiLiveTest; -import org.jclouds.azurecompute.arm.AzureComputeApi; -import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata; -import org.jclouds.providers.ProviderMetadata; -import com.google.inject.name.Names; -import com.google.inject.Key; -import com.google.inject.TypeLiteral; - -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_IMAGE_AVAILABLE; -import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_SUSPENDED; - - -public abstract class AbstractAzureComputeApiLiveTest extends BaseApiLiveTest<AzureComputeApi> { - - protected static final int RAND = new Random().nextInt(999); - protected Predicate<String> nodeSuspendedPredicate; - protected Predicate<URI> imageAvailablePredicate; - - public AbstractAzureComputeApiLiveTest() { - provider = "azurecompute-arm"; - } - - @Override protected AzureComputeApi create(Properties props, Iterable<Module> modules) { - Injector injector = newBuilder().modules(modules).overrides(props).buildInjector(); - nodeSuspendedPredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>() { - }, Names.named(TIMEOUT_NODE_SUSPENDED))); - imageAvailablePredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<URI>>() { - }, Names.named(TIMEOUT_IMAGE_AVAILABLE))); - return injector.getInstance(AzureComputeApi.class); - } - - @Override protected Properties setupProperties() { - Properties properties = super.setupProperties(); - - // for oauth - AzureLiveTestUtils.defaultProperties(properties); - checkNotNull(setIfTestSystemPropertyPresent(properties, "oauth.endpoint"), "test.oauth.endpoint"); - return properties; - } - - @Override - protected ProviderMetadata createProviderMetadata() { - AzureComputeProviderMetadata pm = AzureComputeProviderMetadata.builder().build(); - String endpoint = null; - if (System.getProperty("test.azurecompute-arm.endpoint") != null){ - endpoint = System.getProperty("test.azurecompute-arm.endpoint"); - pm.toBuilder().endpoint(endpoint); - } - return pm; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/c458bafd/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiLiveTest.java index 0eec525..bd7cde4 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiLiveTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/internal/BaseAzureComputeApiLiveTest.java @@ -15,210 +15,157 @@ * limitations under the License. */ package org.jclouds.azurecompute.arm.internal; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableMap; -import org.jclouds.azurecompute.arm.domain.IdReference; -import org.jclouds.azurecompute.arm.domain.IpConfiguration; -import org.jclouds.azurecompute.arm.domain.IpConfigurationProperties; -import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard; -import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCardProperties; +import java.net.URI; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; +import java.util.Random; + +import org.jclouds.apis.BaseApiLiveTest; +import org.jclouds.azurecompute.arm.AzureComputeApi; +import org.jclouds.azurecompute.arm.domain.NetworkSecurityGroup; +import org.jclouds.azurecompute.arm.domain.NetworkSecurityGroupProperties; +import org.jclouds.azurecompute.arm.domain.NetworkSecurityRule; +import org.jclouds.azurecompute.arm.domain.NetworkSecurityRuleProperties; import org.jclouds.azurecompute.arm.domain.ResourceGroup; - import org.jclouds.azurecompute.arm.domain.StorageService; import org.jclouds.azurecompute.arm.domain.Subnet; import org.jclouds.azurecompute.arm.domain.VirtualNetwork; -import org.jclouds.azurecompute.arm.features.NetworkInterfaceCardApi; -import org.jclouds.azurecompute.arm.features.StorageAccountApi; -import org.jclouds.azurecompute.arm.features.SubnetApi; -import org.jclouds.azurecompute.arm.features.VirtualNetworkApi; import org.jclouds.azurecompute.arm.functions.ParseJobStatus; -import org.jclouds.util.Predicates2; -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import java.net.URI; -import java.util.Arrays; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.inject.Injector; +import com.google.inject.Key; +import com.google.inject.Module; +import com.google.inject.TypeLiteral; +import com.google.inject.name.Names; + +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.azurecompute.arm.config.AzureComputeProperties.TIMEOUT_RESOURCE_DELETED; +import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_IMAGE_AVAILABLE; +import static org.jclouds.util.Predicates2.retry; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; -public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest { +public class BaseAzureComputeApiLiveTest extends BaseApiLiveTest<AzureComputeApi> { + + protected static final int RAND = new Random().nextInt(999); public static final String LOCATION = "westeurope"; public static final String LOCATIONDESCRIPTION = "West Europe"; - - public static final String DEFAULT_SUBNET_ADDRESS_SPACE = "10.2.0.0/23"; - - public static final String VIRTUAL_NETWORK_NAME = "jclouds-virtual-network-live-test"; - - public static final String DEFAULT_SUBNET_NAME = "jclouds-1"; - public static final String DEFAULT_VIRTUALNETWORK_ADDRESS_PREFIX = "10.2.0.0/16"; - - public static final String NETWORKINTERFACECARD_NAME = "jcloudsNic"; - - private String resourceGroupName = null; - - private String virtualNetworkName = null; - - protected StorageService storageService; - - private String storageServiceName = null; - - protected String getStorageServiceName() { - if (storageServiceName == null) { - storageServiceName = String.format("%3.24s", - System.getProperty("user.name") + RAND + this.getClass().getSimpleName()).toLowerCase(); - } - return storageServiceName; - } - - protected String getLocation() { - return LOCATION; - } - - protected String getEndpoint() { - String endpoint = null; - if (System.getProperty("test.azurecompute-arm.endpoint") != null) { - endpoint = System.getProperty("test.azurecompute-arm.endpoint"); - } - assertNotNull(endpoint); - return endpoint; - } - - protected String getSubscriptionId() { - String subscriptionid = null; - String endpoint = null; - endpoint = getEndpoint(); - if (endpoint != null) { - subscriptionid = endpoint.substring(endpoint.lastIndexOf("/") + 1); - } - assertNotNull(subscriptionid); - return subscriptionid; + + protected Predicate<URI> imageAvailablePredicate; + protected Predicate<URI> resourceDeleted; + + public BaseAzureComputeApiLiveTest() { + provider = "azurecompute-arm"; } - protected String getResourceGroupName() { - if (resourceGroupName == null) { - resourceGroupName = String.format("%3.24s", - System.getProperty("user.name") + RAND + "groupjclouds"); - //createResourceGroup(resourceGroupName); - } - return resourceGroupName; + @Override protected AzureComputeApi create(Properties props, Iterable<Module> modules) { + Injector injector = newBuilder().modules(modules).overrides(props).buildInjector(); + imageAvailablePredicate = injector.getInstance(Key.get(new TypeLiteral<Predicate<URI>>() { + }, Names.named(TIMEOUT_IMAGE_AVAILABLE))); + resourceDeleted = injector.getInstance(Key.get(new TypeLiteral<Predicate<URI>>() { + }, Names.named(TIMEOUT_RESOURCE_DELETED))); + return injector.getInstance(AzureComputeApi.class); } - protected void createResourceGroup(String name) { - ImmutableMap<String, String> tags = ImmutableMap.<String, String>builder().build(); - - final ResourceGroup resourceGroup = api.getResourceGroupApi().create( - name, LOCATION, tags); + @Override protected Properties setupProperties() { + Properties properties = super.setupProperties(); + // for oauth + AzureLiveTestUtils.defaultProperties(properties); + checkNotNull(setIfTestSystemPropertyPresent(properties, "oauth.endpoint"), "test.oauth.endpoint"); + return properties; } - - private void deleteResourceGroup(String name) { - api.getResourceGroupApi().delete(name); + + protected void assertResourceDeleted(URI uri) { + assertNotNull(uri); + assertTrue(resourceDeleted.apply(uri), String.format("Resource %s was not terminated in the configured timeout", uri)); } - - @BeforeClass - @Override - public void setup() { - super.setup(); - createResourceGroup(getResourceGroupName()); - storageService = getOrCreateStorageService(getStorageServiceName()); + protected VirtualNetwork createDefaultVirtualNetwork(final String resourceGroupName, String virtualNetworkName, String virtualnetworkAddressPrefix, String location) { + final VirtualNetwork.VirtualNetworkProperties virtualNetworkProperties = + VirtualNetwork.VirtualNetworkProperties.create(null, null, + VirtualNetwork.AddressSpace.create(Arrays.asList(virtualnetworkAddressPrefix)), null); + VirtualNetwork virtualNetwork = api.getVirtualNetworkApi(resourceGroupName).createOrUpdate(virtualNetworkName, location, virtualNetworkProperties); + retry(new Predicate<String>() { + @Override + public boolean apply(String name) { + VirtualNetwork virtualNetwork = api.getVirtualNetworkApi(resourceGroupName).get(name); + return virtualNetwork.properties().provisioningState().equals("Succeeded"); + } + }, 60 * 4 * 1000).apply(virtualNetwork.name()); + return virtualNetwork; } - @AfterClass(alwaysRun = true) - @Override - protected void tearDown() { - super.tearDown(); - Boolean status = api.getStorageAccountApi(getResourceGroupName()).delete(getStorageServiceName()); - assertTrue(status.booleanValue()); - deleteResourceGroup(getResourceGroupName()); + protected Subnet createDefaultSubnet(final String resourceGroupName, String subnetName, final String virtualNetworkName, String subnetAddressSpace) { + Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix(subnetAddressSpace).build(); + Subnet subnet = api.getSubnetApi(resourceGroupName, virtualNetworkName).createOrUpdate(subnetName, properties); + retry(new Predicate<String>() { + @Override + public boolean apply(String name) { + Subnet subnet = api.getSubnetApi(resourceGroupName, virtualNetworkName).get(name); + return subnet.properties().provisioningState().equals("Succeeded"); + } + }, 60 * 4 * 1000).apply(subnet.name()); + return subnet; } - protected StorageService getOrCreateStorageService(String storageServiceName) { - StorageAccountApi storageApi = api.getStorageAccountApi(getResourceGroupName()); - StorageService ss = storageApi.get(storageServiceName); - if (ss != null) { - return ss; - } - URI uri = storageApi.create(storageServiceName, LOCATION, ImmutableMap.of("property_name", + protected StorageService createStorageService(String resourceGroupName, String storageServiceName, String location) { + URI uri = api.getStorageAccountApi(resourceGroupName).create(storageServiceName, location, ImmutableMap.of("property_name", "property_value"), ImmutableMap.of("accountType", StorageService.AccountType.Standard_LRS.toString())); - if (uri != null){ + if (uri != null) { assertTrue(uri.toString().contains("api-version")); - boolean jobDone = Predicates2.retry(new Predicate<URI>() { - @Override public boolean apply(URI uri) { + boolean jobDone = retry(new Predicate<URI>() { + @Override + public boolean apply(URI uri) { return ParseJobStatus.JobStatus.DONE == api.getJobApi().jobStatus(uri); } }, 60 * 1 * 1000 /* 1 minute timeout */).apply(uri); assertTrue(jobDone, "create operation did not complete in the configured timeout"); } - ss = storageApi.get(storageServiceName); - Assert.assertEquals(ss.location(), LOCATION); - - Logger.getAnonymousLogger().log(Level.INFO, "created storageService: {0}", ss); - return ss; + return api.getStorageAccountApi(resourceGroupName).get(storageServiceName); } - protected VirtualNetwork getOrCreateVirtualNetwork(final String virtualNetworkName) { - - VirtualNetworkApi vnApi = api.getVirtualNetworkApi(getResourceGroupName()); - VirtualNetwork vn = vnApi.get(virtualNetworkName); - - if (vn != null) { - return vn; - } - - final VirtualNetwork.VirtualNetworkProperties virtualNetworkProperties = - VirtualNetwork.VirtualNetworkProperties.create(null, null, - VirtualNetwork.AddressSpace.create(Arrays.asList(DEFAULT_VIRTUALNETWORK_ADDRESS_PREFIX)), null); - - - vn = vnApi.createOrUpdate(VIRTUAL_NETWORK_NAME, LOCATION, virtualNetworkProperties); - this.virtualNetworkName = virtualNetworkName; - return vn; + protected ResourceGroup createResourceGroup(String resourceGroupName) { + return api.getResourceGroupApi().create(resourceGroupName, LOCATION, ImmutableMap.<String, String>of()); } - protected Subnet getOrCreateSubnet(final String subnetName, final String virtualNetworkName){ - - SubnetApi subnetApi = api.getSubnetApi(getResourceGroupName(), virtualNetworkName); - Subnet subnet = subnetApi.get(subnetName); - - if (subnet != null){ - return subnet; - } - - Subnet.SubnetProperties properties = Subnet.SubnetProperties.builder().addressPrefix(DEFAULT_SUBNET_ADDRESS_SPACE).build(); - subnet = subnetApi.createOrUpdate(subnetName, properties); - - return subnet; + protected URI deleteResourceGroup(String resourceGroupName) { + return api.getResourceGroupApi().delete(resourceGroupName); } - protected NetworkInterfaceCard getOrCreateNetworkInterfaceCard(final String networkInterfaceCardName){ - - NetworkInterfaceCardApi nicApi = api.getNetworkInterfaceCardApi(getResourceGroupName()); - NetworkInterfaceCard nic = nicApi.get(networkInterfaceCardName); - - if (nic != null){ - return nic; - } - - VirtualNetwork vn = getOrCreateVirtualNetwork(VIRTUAL_NETWORK_NAME); - - Subnet subnet = getOrCreateSubnet(DEFAULT_SUBNET_NAME, VIRTUAL_NETWORK_NAME); - - //Create properties object - final NetworkInterfaceCardProperties networkInterfaceCardProperties = - NetworkInterfaceCardProperties.builder() - .ipConfigurations(Arrays.asList(IpConfiguration.create("myipconfig", null, null, null, - IpConfigurationProperties.create(null, null, "Dynamic", IdReference.create(subnet.id()), null)) - )).build(); + protected NetworkSecurityGroup newNetworkSecurityGroup(String nsgName, String locationName) { + NetworkSecurityRule rule = NetworkSecurityRule.create("denyallout", null, null, + NetworkSecurityRuleProperties.builder() + .description("deny all out") + .protocol(NetworkSecurityRuleProperties.Protocol.Tcp) + .sourcePortRange("*") + .destinationPortRange("*") + .sourceAddressPrefix("*") + .destinationAddressPrefix("*") + .access(NetworkSecurityRuleProperties.Access.Deny) + .priority(4095) + .direction(NetworkSecurityRuleProperties.Direction.Outbound) + .build()); + List<NetworkSecurityRule> ruleList = Lists.newArrayList(); + ruleList.add(rule); + NetworkSecurityGroup nsg = NetworkSecurityGroup.create(nsgName, locationName, null, + NetworkSecurityGroupProperties.builder() + .securityRules(ruleList) + .build(), + null); + return nsg; + } - final Map<String, String> tags = ImmutableMap.of("jclouds", "livetest"); - nic = nicApi.createOrUpdate(NETWORKINTERFACECARD_NAME, LOCATION, networkInterfaceCardProperties, tags); - return nic; + protected String getSubscriptionId() { + String subscriptionId = endpoint.substring(endpoint.lastIndexOf("/") + 1); + assertNotNull(subscriptionId); + return subscriptionId; } + }
