You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2017/01/26 21:40:01 UTC
[3/4] jclouds-labs git commit: JCLOUDS-1231: Implement the
SecurityGroupExtension in ARM
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>