http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/867ddef6/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java new file mode 100644 index 0000000..02fe52e --- /dev/null +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java @@ -0,0 +1,154 @@ +/* + * 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.compute.extensions; + +import static com.google.common.collect.Iterables.get; +import static com.google.common.collect.Iterables.getOnlyElement; +import static java.util.logging.Logger.getAnonymousLogger; +import static org.jclouds.compute.options.TemplateOptions.Builder.inboundPorts; +import static org.jclouds.compute.options.TemplateOptions.Builder.securityGroups; +import static org.jclouds.compute.predicates.NodePredicates.inGroup; +import static org.jclouds.net.domain.IpProtocol.TCP; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.concurrent.ExecutionException; + +import org.jclouds.azurecompute.arm.AzureComputeApi; +import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata; +import org.jclouds.azurecompute.arm.compute.functions.LocationToResourceGroupName; +import org.jclouds.azurecompute.arm.domain.ResourceGroup; +import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils; +import org.jclouds.compute.ComputeService; +import org.jclouds.compute.RunNodesException; +import org.jclouds.compute.domain.NodeMetadata; +import org.jclouds.compute.domain.SecurityGroup; +import org.jclouds.compute.extensions.SecurityGroupExtension; +import org.jclouds.compute.extensions.internal.BaseSecurityGroupExtensionLiveTest; +import org.jclouds.domain.Location; +import org.jclouds.net.util.IpPermissions; +import org.jclouds.providers.ProviderMetadata; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.google.common.base.Optional; +import com.google.common.collect.ImmutableMap; + +/** + * Live test for AzureCompute + * {@link org.jclouds.compute.extensions.SecurityGroupExtension} implementation. + */ +@Test(groups = "live", singleThreaded = true, testName = "AzureComputeSecurityGroupExtensionLiveTest") +public class AzureComputeSecurityGroupExtensionLiveTest extends BaseSecurityGroupExtensionLiveTest { + + private AzureComputeApi api; + private LocationToResourceGroupName locationToResourceGroupName; + private String resourceGroupName; + private ResourceGroup testResourceGroup; + + public AzureComputeSecurityGroupExtensionLiveTest() { + provider = "azurecompute-arm"; + } + + @BeforeClass(groups = { "integration", "live" }) + public void setupContext() { + super.setupContext(); + api = context.utils().injector().getInstance(AzureComputeApi.class); + locationToResourceGroupName = context.utils().injector().getInstance(LocationToResourceGroupName.class); + createResourceGroupIfMissing(); + } + + @Test(groups = { "integration", "live" }, dependsOnMethods = "testCreateSecurityGroup") + public void testCreateNodeWithSecurityGroup() throws RunNodesException, InterruptedException, ExecutionException { + ComputeService computeService = view.getComputeService(); + Optional<SecurityGroupExtension> securityGroupExtension = computeService.getSecurityGroupExtension(); + assertTrue(securityGroupExtension.isPresent(), "security group extension was not present"); + + NodeMetadata node = getOnlyElement(computeService.createNodesInGroup(nodeGroup, 1, securityGroups(groupId))); + + try { + Set<SecurityGroup> groups = securityGroupExtension.get().listSecurityGroupsForNode(node.getId()); + assertEquals(groups.size(), 1, "node has " + groups.size() + " groups"); + assertEquals(getOnlyElement(groups).getId(), groupId); + } finally { + computeService.destroyNodesMatching(inGroup(node.getGroup())); + } + } + + @Test(groups = { "integration", "live" }, dependsOnMethods = "testCreateSecurityGroup") + public void testCreateNodeWithInboundPorts() throws RunNodesException, InterruptedException, ExecutionException { + ComputeService computeService = view.getComputeService(); + Optional<SecurityGroupExtension> securityGroupExtension = computeService.getSecurityGroupExtension(); + assertTrue(securityGroupExtension.isPresent(), "security group extension was not present"); + + NodeMetadata node = getOnlyElement(computeService + .createNodesInGroup(nodeGroup, 1, inboundPorts(22, 23, 24, 8000))); + + try { + Set<SecurityGroup> groups = securityGroupExtension.get().listSecurityGroupsForNode(node.getId()); + assertEquals(groups.size(), 1, "node has " + groups.size() + " groups"); + + SecurityGroup group = getOnlyElement(groups); + assertEquals(group.getIpPermissions().size(), 2); + assertEquals(get(group.getIpPermissions(), 0), IpPermissions.permit(TCP).fromPort(22).to(24)); + assertEquals(get(group.getIpPermissions(), 1), IpPermissions.permit(TCP).port(8000)); + } finally { + computeService.destroyNodesMatching(inGroup(node.getGroup())); + } + } + + @AfterClass(groups = { "integration", "live" }) + @Override + protected void tearDownContext() { + super.tearDownContext(); + if (testResourceGroup != null) { + // Cleanup the resource group we created for the tests + getAnonymousLogger().info( + "deleting resource group " + testResourceGroup.name() + " for the security group live tests..."); + api.getResourceGroupApi().delete(testResourceGroup.name()); + } + } + + @Override + protected Properties setupProperties() { + Properties properties = super.setupProperties(); + AzureLiveTestUtils.defaultProperties(properties); + setIfTestSystemPropertyPresent(properties, "oauth.endpoint"); + return properties; + } + + @Override + protected ProviderMetadata createProviderMetadata() { + return AzureComputeProviderMetadata.builder().build(); + } + + private void createResourceGroupIfMissing() { + Location location = getNodeTemplate().getLocation(); + resourceGroupName = locationToResourceGroupName.apply(location.getId()); + ResourceGroup resourceGroupInLocation = api.getResourceGroupApi().get(resourceGroupName); + if (resourceGroupInLocation == null) { + getAnonymousLogger().info( + "creating resource group " + resourceGroupName + " for the security group live tests..."); + final Map<String, String> tags = ImmutableMap.of("description", "AzureComputeSecurityGroupExtensionLiveTest"); + testResourceGroup = api.getResourceGroupApi().create(resourceGroupName, location.getId(), tags); + } + } +}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/867ddef6/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/NetworkSecurityGroupApiMockTest.java ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/NetworkSecurityGroupApiMockTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/NetworkSecurityGroupApiMockTest.java index 2d43694..3dc0e4a 100644 --- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/NetworkSecurityGroupApiMockTest.java +++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/NetworkSecurityGroupApiMockTest.java @@ -57,7 +57,7 @@ public class NetworkSecurityGroupApiMockTest extends BaseAzureComputeApiMockTest .build()); ArrayList<NetworkSecurityRule> ruleList = new ArrayList<NetworkSecurityRule>(); ruleList.add(rule); - NetworkSecurityGroup nsg = NetworkSecurityGroup.create("samplensg", "westus", null, + NetworkSecurityGroup nsg = NetworkSecurityGroup.create("id", "samplensg", "westus", null, NetworkSecurityGroupProperties.builder() .securityRules(ruleList) .build(), http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/867ddef6/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 bd7cde4..c3c6aa7 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 @@ -154,7 +154,7 @@ public class BaseAzureComputeApiLiveTest extends BaseApiLiveTest<AzureComputeApi .build()); List<NetworkSecurityRule> ruleList = Lists.newArrayList(); ruleList.add(rule); - NetworkSecurityGroup nsg = NetworkSecurityGroup.create(nsgName, locationName, null, + NetworkSecurityGroup nsg = NetworkSecurityGroup.create("id", nsgName, locationName, null, NetworkSecurityGroupProperties.builder() .securityRules(ruleList) .build(), http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/867ddef6/azurecompute-arm/src/test/resources/logback-test.xml ---------------------------------------------------------------------- diff --git a/azurecompute-arm/src/test/resources/logback-test.xml b/azurecompute-arm/src/test/resources/logback-test.xml index cb55d49..b9e9616 100644 --- a/azurecompute-arm/src/test/resources/logback-test.xml +++ b/azurecompute-arm/src/test/resources/logback-test.xml @@ -13,7 +13,7 @@ </encoder> </appender> <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/jclouds-compute.log</file> + <file>target/test-data/jclouds-compute.log</file> <encoder> <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> </encoder>
