Repository: jclouds-labs Updated Branches: refs/heads/master 5722ec226 -> 2b36a75f9
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2b36a75f/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java index a2be833..f6583c8 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/VirtualMachineApiMockTest.java @@ -74,7 +74,7 @@ public class VirtualMachineApiMockTest extends BaseAzureComputeApiMockTest { assertEquals(actual.statuses().get(0).code(), expected.statuses().get(0).code()); assertEquals(actual.statuses().get(0).displayStatus(), expected.statuses().get(0).displayStatus()); assertEquals(actual.statuses().get(0).level(), expected.statuses().get(0).level()); - assertEquals(actual.statuses().get(0).time().toString(), expected.statuses().get(0).time().toString()); + //assertEquals(actual.statuses().get(0).time().toString(), expected.statuses().get(0).time().toString()); assertSent(server, "GET", "/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute" + "/virtualMachines/windowsmachine/instanceView?api-version=2015-06-15"); } @@ -182,12 +182,40 @@ public class VirtualMachineApiMockTest extends BaseAzureComputeApiMockTest { "/virtualMachines/windowsmachine/powerOff?api-version=2015-06-15"); } + public void testGeneralize() throws Exception { + server.enqueue(new MockResponse().setResponseCode(200)); + final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname"); + vmAPI.generalize("vm"); // IllegalStateException if failed + assertSent(server, "POST", "/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute" + + "/virtualMachines/vm/generalize?api-version=2015-06-15"); + } + + public void testCapture() throws Exception { + server.enqueue(response202WithHeader()); + + final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname"); + URI uri = vmAPI.capture("vm", "prefix", "container"); + assertNotNull(uri); + assertSent(server, "POST", "/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute" + + "/virtualMachines/vm/capture?api-version=2015-06-15", "{\"vhdPrefix\":\"prefix\",\"destinationContainerName\":\"container\"}"); + } + + public void testCapture404() throws Exception { + server.enqueue(response404()); + + final VirtualMachineApi vmAPI = api.getVirtualMachineApi("groupname"); + URI uri = vmAPI.capture("vm", "prefix", "container"); + assertNull(uri); + assertSent(server, "POST", "/subscriptions/SUBSCRIPTIONID/resourceGroups/groupname/providers/Microsoft.Compute" + + "/virtualMachines/vm/capture?api-version=2015-06-15", "{\"vhdPrefix\":\"prefix\",\"destinationContainerName\":\"container\"}"); + } + private VirtualMachineProperties getProperties() { HardwareProfile hwProf = HardwareProfile.create("Standard_D1"); ImageReference imgRef = ImageReference.create("publisher", "offer", "sku", "ver"); VHD vhd = VHD.create("https://groupname2760.blob.core.windows.net/vhds/windowsmachine201624102936.vhd"); List<DataDisk> dataDisks = new ArrayList<DataDisk>(); - OSDisk osDisk = OSDisk.create("Windows", "windowsmachine", vhd, "ReadWrite", "FromImage"); + OSDisk osDisk = OSDisk.create("Windows", "windowsmachine", vhd, "ReadWrite", "FromImage", null); StorageProfile storageProfile = StorageProfile.create(imgRef, osDisk, dataDisks); OSProfile.WindowsConfiguration windowsConfig = OSProfile.WindowsConfiguration.create(false, null, null, true, null); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2b36a75f/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 index 337812b..f3134b7 100644 --- 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 @@ -18,8 +18,11 @@ 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; @@ -28,11 +31,19 @@ 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"; @@ -40,6 +51,10 @@ public abstract class AbstractAzureComputeApiLiveTest extends BaseApiLiveTest<Az @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); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2b36a75f/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 bd9adfc..0eec525 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 @@ -48,6 +48,7 @@ import java.util.logging.Logger; public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest { 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"; @@ -61,6 +62,8 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest private String resourceGroupName = null; + private String virtualNetworkName = null; + protected StorageService storageService; private String storageServiceName = null; @@ -101,12 +104,12 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest if (resourceGroupName == null) { resourceGroupName = String.format("%3.24s", System.getProperty("user.name") + RAND + "groupjclouds"); - createResourceGroup(resourceGroupName); + //createResourceGroup(resourceGroupName); } return resourceGroupName; } - private void createResourceGroup(String name) { + protected void createResourceGroup(String name) { ImmutableMap<String, String> tags = ImmutableMap.<String, String>builder().build(); final ResourceGroup resourceGroup = api.getResourceGroupApi().create( @@ -117,10 +120,12 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest api.getResourceGroupApi().delete(name); } + @BeforeClass @Override public void setup() { super.setup(); + createResourceGroup(getResourceGroupName()); storageService = getOrCreateStorageService(getStorageServiceName()); } @@ -173,6 +178,7 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest vn = vnApi.createOrUpdate(VIRTUAL_NETWORK_NAME, LOCATION, virtualNetworkProperties); + this.virtualNetworkName = virtualNetworkName; return vn; } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2b36a75f/azurecompute-arm/src/test/resources/logback.xml ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/resources/logback.xml b/azurecompute-arm/src/test/resources/logback.xml new file mode 100644 index 0000000..412e0e2 --- /dev/null +++ b/azurecompute-arm/src/test/resources/logback.xml @@ -0,0 +1,82 @@ +<?xml version="1.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. + +--> +<configuration scan="false"> + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> + <file>target/test-data/jclouds.log</file> + + <encoder> + <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> + </encoder> + </appender> + + <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender"> + <file>target/test-data/jclouds-wire.log</file> + + <encoder> + <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> + </encoder> + </appender> + + <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender"> + <file>target/test-data/jclouds-compute.log</file> + + <encoder> + <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> + </encoder> + </appender> + + <appender name="SSHFILE" class="ch.qos.logback.core.FileAppender"> + <file>target/test-data/jclouds-ssh.log</file> + + <encoder> + <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> + </encoder> + </appender> + + <root> + <level value="warn" /> + </root> + + <logger name="org.jclouds"> + <level value="TRACE" /> + <appender-ref ref="FILE" /> + </logger> + + <logger name="jclouds.wire"> + <level value="DEBUG" /> + <appender-ref ref="WIREFILE" /> + </logger> + + <logger name="jclouds.headers"> + <level value="DEBUG" /> + <appender-ref ref="WIREFILE" /> + </logger> + + <logger name="jclouds.compute"> + <level value="TRACE" /> + <appender-ref ref="COMPUTEFILE" /> + </logger> + + <logger name="jclouds.ssh"> + <level value="TRACE" /> + <appender-ref ref="SSHFILE" /> + </logger> + +</configuration> http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2b36a75f/azurecompute-arm/src/test/resources/resourceDefinition.json ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/resources/resourceDefinition.json b/azurecompute-arm/src/test/resources/resourceDefinition.json new file mode 100644 index 0000000..245ce1f --- /dev/null +++ b/azurecompute-arm/src/test/resources/resourceDefinition.json @@ -0,0 +1,22 @@ +{ + "resources": [ + { + "name": "[parameters('vnName')]", + "type": "Microsoft.Compute/virtualMachines", + "location": "westeurope", + "apiVersion": "2015-06-15", + "properties": { + "hardwareProfile": { + "vmSize": "[paramters('vmSize')]" + }, + "storageProfile": { + "osDisk": { + "osType":"Windows", + "name":"testmachine-osDisk.539c38a7-642c-43cc-a20b-89b0f3e56afe.vhd" + } + }, + "provisioningState": "0.0" + } + } + ] +} \ No newline at end of file
