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>