http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionExpectTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionExpectTest.java deleted file mode 100644 index 07372a0..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionExpectTest.java +++ /dev/null @@ -1,699 +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.cloudstack.compute.extensions; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.util.Map; -import java.util.Properties; -import java.util.Set; - -import org.jclouds.cloudstack.CloudStackContext; -import org.jclouds.cloudstack.compute.functions.ZoneToLocationTest; -import org.jclouds.cloudstack.internal.BaseCloudStackComputeServiceContextExpectTest; -import org.jclouds.compute.ComputeService; -import org.jclouds.compute.domain.SecurityGroup; -import org.jclouds.compute.domain.SecurityGroupBuilder; -import org.jclouds.compute.extensions.SecurityGroupExtension; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.net.domain.IpPermission; -import org.jclouds.net.domain.IpProtocol; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.UncheckedExecutionException; -import com.google.inject.Module; - -@Test(groups = "unit", testName = "CloudStackSecurityGroupExtensionExpectTest") -public class CloudStackSecurityGroupExtensionExpectTest extends BaseCloudStackComputeServiceContextExpectTest<ComputeService> { - - protected final HttpResponse addRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/authorizesecuritygroupingressresponse.json")) - .build(); - - protected final HttpResponse revokeRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/revokesecuritygroupingressresponse.json")) - .build(); - - protected final HttpRequest queryAsyncJobResultAuthorizeIngress = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "queryAsyncJobResult") - .addQueryParam("jobid", "13330fc9-8b3e-4582-aa3e-90883c041010") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "y4gk3ckWAMPDNZM26LUK0gAhfiE%3D") - .addHeader("Accept", "application/json") - .build(); - - protected final HttpResponse queryAsyncJobResultAuthorizeIngressResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/queryasyncjobresultresponse-authorizeingress.json")) - .build(); - - protected final HttpRequest getWithRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("id", "13") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "TmlGaO2ICM%2BiXQr88%2BZCyWUniSw%3D") - .addHeader("Accept", "application/json") - .build(); - - protected final HttpResponse getEmptyResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_empty.json")) - .build(); - - @Override - protected Properties setupProperties() { - Properties overrides = super.setupProperties(); - overrides.setProperty("jclouds.zones", "MTV-Zone1"); - return overrides; - } - - public void testListSecurityGroups() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "o%2Bd8xxWT1Pa%2BI57SG2caFAblBYA%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/listsecuritygroupsresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(getZone, getZoneResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - Set<SecurityGroup> groups = extension.listSecurityGroups(); - assertEquals(groups.size(), 5); - } - - public void testListSecurityGroupsForNode() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("virtualmachineid", "some-node") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "x4f9fGMjIHXl5biaaFK5oOEONcg%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/listsecuritygroupsresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(getZone, getZoneResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - Set<SecurityGroup> groups = extension.listSecurityGroupsForNode("some-node"); - assertEquals(groups.size(), 5); - } - - public void testGetSecurityGroupById() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("id", "13") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "TmlGaO2ICM%2BiXQr88%2BZCyWUniSw%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(getZone, getZoneResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - SecurityGroup group = extension.getSecurityGroupById("13"); - assertEquals(group.getId(), "13"); - assertEquals(group.getIpPermissions().size(), 2); - } - - public void testCreateSecurityGroup() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("securitygroupname", "jclouds-test") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "zGp2rfHY6fBIGkgODRxyNzFfPFI%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(getZoneWithSecurityGroups, getZoneWithSecurityGroupsResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .put(createSecurityGroup, createSecurityGroupResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - SecurityGroup group = extension.createSecurityGroup("test", ZoneToLocationTest.two); - assertEquals(group.getId(), "30"); - assertEquals(group.getIpPermissions().size(), 0); - } - - @Test(expectedExceptions = UncheckedExecutionException.class, - expectedExceptionsMessageRegExp = "java.lang.IllegalArgumentException: .* does not support security groups") - public void testCreateSecurityGroupBadZone() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("securitygroupname", "jclouds-test") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "zGp2rfHY6fBIGkgODRxyNzFfPFI%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(getZone, getZoneResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .put(createSecurityGroup, createSecurityGroupResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - SecurityGroup group = extension.createSecurityGroup("test", ZoneToLocationTest.one); - assertEquals(group.getId(), "30"); - assertEquals(group.getIpPermissions().size(), 0); - } - - public void testRemoveSecurityGroup() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("id", "13") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "TmlGaO2ICM%2BiXQr88%2BZCyWUniSw%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_empty.json")) - .build(); - - HttpRequest deleteSecurityGroup = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "deleteSecurityGroup") - .addQueryParam("id", "13") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "S1A2lYR/ibf4%2BHGFxVLdZvXZujQ%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse deleteSecurityGroupResponse = HttpResponse.builder() - .statusCode(200) - .payload(payloadFromResource("/deletesecuritygroupresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .put(deleteSecurityGroup, deleteSecurityGroupResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - assertTrue(extension.removeSecurityGroup("13"), "Did not remove security group"); - } - - public void testRemoveSecurityGroupDoesNotExist() { - HttpRequest listSecurityGroups = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "listSecurityGroups") - .addQueryParam("listAll", "true") - .addQueryParam("id", "14") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "pWQ30A6l5qh4eaNypGwM9FoLnUM%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse listSecurityGroupsResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse.json")) - .build(); - - Map<HttpRequest, HttpResponse> requestResponseMap = ImmutableMap.<HttpRequest, HttpResponse> builder() - .put(listTemplates, listTemplatesResponse) - .put(listOsTypes, listOsTypesResponse) - .put(listOsCategories, listOsCategoriesResponse) - .put(listZones, listZonesResponse) - .put(listServiceOfferings, listServiceOfferingsResponse) - .put(listAccounts, listAccountsResponse) - .put(listNetworks, listNetworksResponse) - .put(listSecurityGroups, listSecurityGroupsResponse) - .build(); - - SecurityGroupExtension extension = requestsSendResponses(requestResponseMap).getSecurityGroupExtension().get(); - - assertFalse(extension.removeSecurityGroup("14"), "Should not have found security group to remove"); - } - - public void testAddIpPermissionCidrFromIpPermission() { - HttpRequest addRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "13") - .addQueryParam("protocol", "UDP") - .addQueryParam("startport", "11") - .addQueryParam("endport", "11") - .addQueryParam("cidrlist", "1.1.1.1/24") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "XyokGNutHwcyU7KQVFZOTHvc4RY%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_cidr.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(addRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(addRuleResponse, queryAsyncJobResultAuthorizeIngressResponse, getWithRuleResponse) - ).getSecurityGroupExtension().get(); - - IpPermission.Builder builder = IpPermission.builder(); - - builder.ipProtocol(IpProtocol.UDP); - builder.fromPort(11); - builder.toPort(11); - builder.cidrBlock("1.1.1.1/24"); - - IpPermission perm = builder.build(); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.addIpPermission(perm, origGroup); - - assertEquals(1, newGroup.getIpPermissions().size()); - - IpPermission newPerm = Iterables.getOnlyElement(newGroup.getIpPermissions()); - - assertNotNull(newPerm); - assertEquals(newPerm.getIpProtocol(), IpProtocol.UDP); - assertEquals(newPerm.getFromPort(), 11); - assertEquals(newPerm.getToPort(), 11); - assertEquals(newPerm.getCidrBlocks().size(), 1); - assertTrue(newPerm.getCidrBlocks().contains("1.1.1.1/24")); - } - - public void testAddIpPermissionCidrFromParams() { - HttpRequest addRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "13") - .addQueryParam("protocol", "UDP") - .addQueryParam("startport", "11") - .addQueryParam("endport", "11") - .addQueryParam("cidrlist", "1.1.1.1/24") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "XyokGNutHwcyU7KQVFZOTHvc4RY%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_cidr.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(addRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(addRuleResponse, queryAsyncJobResultAuthorizeIngressResponse, getWithRuleResponse) - ).getSecurityGroupExtension().get(); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.addIpPermission(IpProtocol.UDP, 11, 11, emptyMultimap(), - ImmutableSet.of("1.1.1.1/24"), emptyStringSet(), origGroup); - - assertEquals(1, newGroup.getIpPermissions().size()); - - IpPermission newPerm = Iterables.getOnlyElement(newGroup.getIpPermissions()); - - assertNotNull(newPerm); - assertEquals(newPerm.getIpProtocol(), IpProtocol.UDP); - assertEquals(newPerm.getFromPort(), 11); - assertEquals(newPerm.getToPort(), 11); - assertEquals(newPerm.getCidrBlocks().size(), 1); - assertTrue(newPerm.getCidrBlocks().contains("1.1.1.1/24")); - } - - public void testAddIpPermissionGroupFromIpPermission() { - HttpRequest addRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "13") - .addQueryParam("protocol", "TCP") - .addQueryParam("startport", "22") - .addQueryParam("endport", "22") - .addQueryParam("usersecuritygrouplist[0].account", "adrian") - .addQueryParam("usersecuritygrouplist[0].group", "adriancole") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "v2OgKc2IftwX9pfKq2Pw/Z2xh9w%3D") - .addHeader("Accept", "application/json") - .build(); - - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_group.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(addRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(addRuleResponse, queryAsyncJobResultAuthorizeIngressResponse, getWithRuleResponse) - ).getSecurityGroupExtension().get(); - - IpPermission.Builder builder = IpPermission.builder(); - - builder.ipProtocol(IpProtocol.TCP); - builder.fromPort(22); - builder.toPort(22); - builder.tenantIdGroupNamePair("adrian", "adriancole"); - - IpPermission perm = builder.build(); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.addIpPermission(perm, origGroup); - - assertEquals(1, newGroup.getIpPermissions().size()); - - IpPermission newPerm = Iterables.getOnlyElement(newGroup.getIpPermissions()); - - assertNotNull(newPerm); - assertEquals(newPerm.getIpProtocol(), IpProtocol.TCP); - assertEquals(newPerm.getFromPort(), 22); - assertEquals(newPerm.getToPort(), 22); - assertEquals(newPerm.getCidrBlocks().size(), 0); - assertEquals(newPerm.getTenantIdGroupNamePairs().size(), 1); - assertTrue(newPerm.getTenantIdGroupNamePairs().containsEntry("adrian", "adriancole")); - } - - public void testAddIpPermissionGroupFromParams() { - HttpRequest addRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "13") - .addQueryParam("protocol", "TCP") - .addQueryParam("startport", "22") - .addQueryParam("endport", "22") - .addQueryParam("usersecuritygrouplist[0].account", "adrian") - .addQueryParam("usersecuritygrouplist[0].group", "adriancole") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "v2OgKc2IftwX9pfKq2Pw/Z2xh9w%3D") - .addHeader("Accept", "application/json") - .build(); - - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_group.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(addRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(addRuleResponse, queryAsyncJobResultAuthorizeIngressResponse, getWithRuleResponse) - ).getSecurityGroupExtension().get(); - - ImmutableMultimap.Builder<String, String> permBuilder = ImmutableMultimap.builder(); - permBuilder.put("adrian", "adriancole"); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.addIpPermission(IpProtocol.TCP, 22, 22, - permBuilder.build(), emptyStringSet(), emptyStringSet(), origGroup); - - assertEquals(1, newGroup.getIpPermissions().size()); - - IpPermission newPerm = Iterables.getOnlyElement(newGroup.getIpPermissions()); - - assertNotNull(newPerm); - assertEquals(newPerm.getIpProtocol(), IpProtocol.TCP); - assertEquals(newPerm.getFromPort(), 22); - assertEquals(newPerm.getToPort(), 22); - assertEquals(newPerm.getCidrBlocks().size(), 0); - assertEquals(newPerm.getTenantIdGroupNamePairs().size(), 1); - assertTrue(newPerm.getTenantIdGroupNamePairs().containsEntry("adrian", "adriancole")); - } - - public void testRemoveIpPermissionCidrFromIpPermission() { - HttpRequest revokeRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "revokeSecurityGroupIngress") - .addQueryParam("id", "6") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "H7cY/MEYGN7df1hiz0mMAFVBfa8%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_cidr.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(getWithRule, revokeRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(getWithRuleResponse, revokeRuleResponse, - queryAsyncJobResultAuthorizeIngressResponse, getEmptyResponse) - ).getSecurityGroupExtension().get(); - - IpPermission.Builder builder = IpPermission.builder(); - - builder.ipProtocol(IpProtocol.UDP); - builder.fromPort(11); - builder.toPort(11); - builder.cidrBlock("1.1.1.1/24"); - - IpPermission perm = builder.build(); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.removeIpPermission(perm, origGroup); - - assertEquals(newGroup.getIpPermissions().size(), 0); - } - - public void testRemoveIpPermissionCidrFromParams() { - HttpRequest revokeRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "revokeSecurityGroupIngress") - .addQueryParam("id", "6") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "H7cY/MEYGN7df1hiz0mMAFVBfa8%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_cidr.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(getWithRule, revokeRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(getWithRuleResponse, revokeRuleResponse, - queryAsyncJobResultAuthorizeIngressResponse, getEmptyResponse) - ).getSecurityGroupExtension().get(); - - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.removeIpPermission(IpProtocol.UDP, 11, 11, emptyMultimap(), - ImmutableSet.of("1.1.1.1/24"), emptyStringSet(), origGroup); - - assertEquals(newGroup.getIpPermissions().size(), 0); - } - - public void testRemoveIpPermissionGroupFromIpPermission() { - HttpRequest revokeRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "revokeSecurityGroupIngress") - .addQueryParam("id", "5") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "bEzvrLtO7aEWkIqJgUeTnd%2B0XbY%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_group.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(getWithRule, revokeRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(getWithRuleResponse, revokeRuleResponse, - queryAsyncJobResultAuthorizeIngressResponse, getEmptyResponse) - ).getSecurityGroupExtension().get(); - - IpPermission.Builder builder = IpPermission.builder(); - - builder.ipProtocol(IpProtocol.TCP); - builder.fromPort(22); - builder.toPort(22); - builder.tenantIdGroupNamePair("adrian", "adriancole"); - - IpPermission perm = builder.build(); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.removeIpPermission(perm, origGroup); - - assertEquals(newGroup.getIpPermissions().size(), 0); - } - - public void testRemoveIpPermissionGroupFromParams() { - HttpRequest revokeRule = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "revokeSecurityGroupIngress") - .addQueryParam("id", "5") - .addQueryParam("apiKey", "APIKEY") - .addQueryParam("signature", "bEzvrLtO7aEWkIqJgUeTnd%2B0XbY%3D") - .addHeader("Accept", "application/json") - .build(); - - HttpResponse getWithRuleResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResource("/getsecuritygroupresponse_extension_byid_with_group.json")) - .build(); - - SecurityGroupExtension extension = orderedRequestsSendResponses( - ImmutableList.of(getWithRule, revokeRule, queryAsyncJobResultAuthorizeIngress, getWithRule), - ImmutableList.of(getWithRuleResponse, revokeRuleResponse, - queryAsyncJobResultAuthorizeIngressResponse, getEmptyResponse) - ).getSecurityGroupExtension().get(); - - ImmutableMultimap.Builder<String, String> permBuilder = ImmutableMultimap.builder(); - permBuilder.put("adrian", "adriancole"); - - SecurityGroup origGroup = new SecurityGroupBuilder().id("13").build(); - - SecurityGroup newGroup = extension.removeIpPermission(IpProtocol.TCP, 22, 22, - permBuilder.build(), emptyStringSet(), emptyStringSet(), origGroup); - - assertEquals(newGroup.getIpPermissions().size(), 0); - } - - @Override - public ComputeService createClient(Function<HttpRequest, HttpResponse> fn, Module module, Properties props) { - return clientFrom(createInjector(fn, module, props).getInstance(CloudStackContext.class)); - } - - @Override - protected ComputeService clientFrom(CloudStackContext context) { - return context.getComputeService(); - } - - private Multimap<String, String> emptyMultimap() { - return LinkedHashMultimap.create(); - } - - private Set<String> emptyStringSet() { - return Sets.newLinkedHashSet(); - } - -}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionLiveTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionLiveTest.java deleted file mode 100644 index af5b0fb..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/extensions/CloudStackSecurityGroupExtensionLiveTest.java +++ /dev/null @@ -1,65 +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.cloudstack.compute.extensions; - -import org.jclouds.cloudstack.CloudStackApi; -import org.jclouds.cloudstack.domain.Zone; -import org.jclouds.compute.domain.Template; -import org.jclouds.compute.extensions.internal.BaseSecurityGroupExtensionLiveTest; -import org.jclouds.sshj.config.SshjSshClientModule; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.inject.Module; - -/** - * Live test for CloudStack {@link org.jclouds.compute.extensions.SecurityGroupExtension} implementation. - */ -@Test(groups = "live", singleThreaded = true, testName = "CloudStackSecurityGroupExtensionLiveTest") -public class CloudStackSecurityGroupExtensionLiveTest extends BaseSecurityGroupExtensionLiveTest { - - protected Zone zone; - - public CloudStackSecurityGroupExtensionLiveTest() { - provider = "cloudstack"; - } - - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - - CloudStackApi api = view.unwrapApi(CloudStackApi.class); - for (Zone z : api.getZoneApi().listZones()) { - if (z.isSecurityGroupsEnabled()) { - zone = z; - break; - } - } - - if (zone == null) - securityGroupsSupported = false; - } - - protected Module getSshModule() { - return new SshjSshClientModule(); - } - - @Override - public Template getNodeTemplate() { - return view.getComputeService().templateBuilder().locationId(zone.getId()).build(); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/CloudStackSecurityGroupToSecurityGroupTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/CloudStackSecurityGroupToSecurityGroupTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/CloudStackSecurityGroupToSecurityGroupTest.java deleted file mode 100644 index 6b9122a..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/CloudStackSecurityGroupToSecurityGroupTest.java +++ /dev/null @@ -1,72 +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.cloudstack.compute.functions; - -import static com.google.common.collect.Iterables.transform; -import static org.testng.Assert.assertEquals; - - -import org.jclouds.compute.domain.SecurityGroup; -import org.jclouds.net.domain.IpProtocol; -import org.jclouds.cloudstack.domain.IngressRule; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -@Test(groups = "unit", testName = "CloudStackSecurityGroupToSecurityGroupTest") -public class CloudStackSecurityGroupToSecurityGroupTest { - - private static final IngressRuleToIpPermission ruleConverter = new IngressRuleToIpPermission(); - - @Test - public void testApply() { - IngressRule ruleToConvert = IngressRule.builder() - .id("some-id") - .account("some-account") - .securityGroupName("some-group-name") - .protocol(IpProtocol.TCP.toString()) - .startPort(10) - .endPort(20) - .CIDR("0.0.0.0/0") - .build(); - - org.jclouds.cloudstack.domain.SecurityGroup origGroup = org.jclouds.cloudstack.domain.SecurityGroup.builder() - .id("some-id") - .name("some-group") - .description("some-description") - .account("some-account") - .ingressRules(ImmutableSet.of(ruleToConvert)) - .build(); - - CloudStackSecurityGroupToSecurityGroup parser = createGroupParser(); - - SecurityGroup group = parser.apply(origGroup); - - assertEquals(group.getId(), origGroup.getId()); - assertEquals(group.getProviderId(), origGroup.getId()); - assertEquals(group.getName(), origGroup.getName()); - assertEquals(group.getOwnerId(), origGroup.getAccount()); - assertEquals(group.getIpPermissions(), ImmutableSet.copyOf(transform(origGroup.getIngressRules(), ruleConverter))); - } - - private CloudStackSecurityGroupToSecurityGroup createGroupParser() { - CloudStackSecurityGroupToSecurityGroup parser = new CloudStackSecurityGroupToSecurityGroup(ruleConverter); - - return parser; - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/IngressRuleToIpPermissionTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/IngressRuleToIpPermissionTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/IngressRuleToIpPermissionTest.java deleted file mode 100644 index aedf310..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/IngressRuleToIpPermissionTest.java +++ /dev/null @@ -1,58 +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.cloudstack.compute.functions; - -import static org.testng.Assert.assertEquals; - -import org.jclouds.cloudstack.domain.IngressRule; -import org.jclouds.net.domain.IpPermission; -import org.jclouds.net.domain.IpProtocol; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - - -/** - * Tests for the function for transforming a cloudstack specific IngressRule into a generic - * IpPermission object. - */ -public class IngressRuleToIpPermissionTest { - - @Test - public void testApplyWithTCP() { - IngressRule ruleToConvert = IngressRule.builder() - .id("some-id") - .account("some-account") - .securityGroupName("some-group-name") - .protocol(IpProtocol.TCP.toString()) - .startPort(10) - .endPort(20) - .CIDR("0.0.0.0/0") - .build(); - - IngressRuleToIpPermission converter = new IngressRuleToIpPermission(); - - IpPermission convertedPerm = converter.apply(ruleToConvert); - - assertEquals(convertedPerm.getIpProtocol(), IpProtocol.fromValue(ruleToConvert.getProtocol())); - assertEquals(convertedPerm.getFromPort(), ruleToConvert.getStartPort()); - assertEquals(convertedPerm.getToPort(), ruleToConvert.getEndPort()); - assertEquals(convertedPerm.getCidrBlocks(), ImmutableSet.of("0.0.0.0/0")); - assertEquals(convertedPerm.getTenantIdGroupNamePairs().size(), 1); - assertEquals(convertedPerm.getGroupIds().size(), 0); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ServiceOfferingToHardwareTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ServiceOfferingToHardwareTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ServiceOfferingToHardwareTest.java deleted file mode 100644 index 827d8ce..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ServiceOfferingToHardwareTest.java +++ /dev/null @@ -1,58 +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.cloudstack.compute.functions; - -import static org.testng.AssertJUnit.assertEquals; - -import java.util.Set; - -import org.jclouds.cloudstack.domain.ServiceOffering; -import org.jclouds.cloudstack.parse.ListServiceOfferingsResponseTest; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.HardwareBuilder; -import org.jclouds.compute.domain.Processor; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - -/** - * Tests {@code ServiceOfferingToHardware} - */ -@Test(groups = "unit") -public class ServiceOfferingToHardwareTest { - - static ServiceOfferingToHardware function = new ServiceOfferingToHardware(); - static Hardware one = new HardwareBuilder().ids("1").name("Small Instance") - .processors(ImmutableList.of(new Processor(1, 500))).ram(512).build(); - static Hardware two = new HardwareBuilder().ids("2").name("Medium Instance") - .processors(ImmutableList.of(new Processor(1, 1000))).ram(1024).build(); - - @Test - public void test() { - - Set<Hardware> expected = ImmutableSet.of(one, two); - - Set<ServiceOffering> offerings = new ListServiceOfferingsResponseTest().expected(); - - Iterable<Hardware> profiles = Iterables.transform(offerings, function); - - assertEquals(profiles.toString(), expected.toString()); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToImageTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToImageTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToImageTest.java deleted file mode 100644 index 11c9d9e..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToImageTest.java +++ /dev/null @@ -1,78 +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.cloudstack.compute.functions; - -import static org.testng.AssertJUnit.assertEquals; - -import java.util.Set; - -import org.jclouds.cloudstack.domain.Template; -import org.jclouds.cloudstack.parse.ListTemplatesResponseTest; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.Image.Status; -import org.jclouds.compute.domain.ImageBuilder; -import org.jclouds.domain.Location; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - -/** - * Tests {@code TemplateToImage} - */ -@Test(groups = "unit") -public class TemplateToImageTest { - static Supplier<Set<? extends Location>> locationSupplier = Suppliers - .<Set<? extends Location>> ofInstance(ImmutableSet.<Location> of(ZoneToLocationTest.one, - ZoneToLocationTest.two)); - - static TemplateToImage function = new TemplateToImage(locationSupplier, TemplateToOperatingSystemTest.function); - - // location free image - static Image one = new ImageBuilder().id("2").providerId("2").name("CentOS 5.3(64-bit) no GUI (XenServer)") - .operatingSystem(TemplateToOperatingSystemTest.one).description("CentOS 5.3(64-bit) no GUI (XenServer)") - .status(Status.AVAILABLE).build(); - // location free image - static Image two = new ImageBuilder().id("4").providerId("4").name("CentOS 5.5(64-bit) no GUI (KVM)") - .operatingSystem(TemplateToOperatingSystemTest.two).description("CentOS 5.5(64-bit) no GUI (KVM)") - .status(Status.AVAILABLE).build(); - static Image three = new ImageBuilder().id("203").providerId("203").name("Windows 7 KVM") - .operatingSystem(TemplateToOperatingSystemTest.three).description("Windows 7 KVM") - .location(ZoneToLocationTest.two).status(Status.AVAILABLE).build(); - // location free image - static Image four = new ImageBuilder().id("7").providerId("7").name("CentOS 5.3(64-bit) no GUI (vSphere)") - .operatingSystem(TemplateToOperatingSystemTest.four).description("CentOS 5.3(64-bit) no GUI (vSphere)") - .status(Status.AVAILABLE).build(); - static Image five = new ImageBuilder().id("241").providerId("241").name("kvmdev4") - .operatingSystem(TemplateToOperatingSystemTest.five).description("v5.6.28_Dev4") - .location(ZoneToLocationTest.two).status(Status.AVAILABLE).build(); - - @Test - public void test() { - - Set<Image> expected = ImmutableSet.of(one, two, three, four, five); - - Set<Template> offerings = new ListTemplatesResponseTest().expected(); - - Iterable<Image> profiles = Iterables.transform(offerings, function); - - assertEquals(profiles.toString(), expected.toString()); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToOperatingSystemTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToOperatingSystemTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToOperatingSystemTest.java deleted file mode 100644 index 3877807..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/TemplateToOperatingSystemTest.java +++ /dev/null @@ -1,86 +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.cloudstack.compute.functions; - -import static org.testng.AssertJUnit.assertEquals; - -import java.util.Map; -import java.util.Set; - -import org.jclouds.cloudstack.domain.OSType; -import org.jclouds.cloudstack.domain.Template; -import org.jclouds.cloudstack.parse.ListOSCategoriesResponseTest; -import org.jclouds.cloudstack.parse.ListOSTypesResponseTest; -import org.jclouds.cloudstack.parse.ListTemplatesResponseTest; -import org.jclouds.compute.config.BaseComputeServiceContextModule; -import org.jclouds.compute.domain.OperatingSystem; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; -import com.google.inject.Guice; - -/** - * Tests {@code TemplateToOperatingSystem} - */ -@Test(groups = "unit") -public class TemplateToOperatingSystemTest { - static Map<String, OSType> ostypes = Maps.<String, OSType> uniqueIndex(new ListOSTypesResponseTest().expected(), - new Function<OSType, String>() { - - @Override - public String apply(OSType arg0) { - return arg0.getId(); - } - }); - - static TemplateToOperatingSystem function = new TemplateToOperatingSystem(Suppliers.ofInstance(ostypes), - Suppliers.ofInstance(new ListOSCategoriesResponseTest().expected()), new BaseComputeServiceContextModule() { - }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule()) - .getInstance(Json.class))); - - static OperatingSystem one = OperatingSystem.builder().name("CentOS").family(OsFamily.CENTOS).is64Bit(false) - .version("5.3").description("CentOS 5.3 (32-bit)").build(); - static OperatingSystem two = OperatingSystem.builder().name("CentOS").family(OsFamily.CENTOS).is64Bit(true) - .version("5.5").description("CentOS 5.5 (64-bit)").build(); - static OperatingSystem three = OperatingSystem.builder().name("Windows").family(OsFamily.WINDOWS).is64Bit(false) - .version("7").description("Windows 7 (32-bit)").build(); - static OperatingSystem four = OperatingSystem.builder().name("CentOS").family(OsFamily.CENTOS).is64Bit(true) - .version("5.3").description("CentOS 5.3 (64-bit)").build(); - static OperatingSystem five = OperatingSystem.builder().name("CentOS").family(OsFamily.CENTOS).is64Bit(true) - .version("5.4").description("CentOS 5.4 (64-bit)").build(); - - @Test - public void test() { - - Set<OperatingSystem> expected = ImmutableSet.of(one, two, three, four, five); - - Set<Template> offerings = new ListTemplatesResponseTest().expected(); - - Iterable<OperatingSystem> profiles = Iterables.transform(offerings, function); - - assertEquals(profiles.toString(), expected.toString()); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadataTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadataTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadataTest.java deleted file mode 100644 index 6c055f7..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/VirtualMachineToNodeMetadataTest.java +++ /dev/null @@ -1,187 +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.cloudstack.compute.functions; - -import static org.testng.Assert.assertEquals; - -import java.net.UnknownHostException; -import java.util.Set; - -import org.jclouds.cloudstack.domain.GuestIPType; -import org.jclouds.cloudstack.domain.IPForwardingRule; -import org.jclouds.cloudstack.domain.NIC; -import org.jclouds.cloudstack.domain.TrafficType; -import org.jclouds.cloudstack.domain.VirtualMachine; -import org.jclouds.cloudstack.parse.ListVirtualMachinesResponseTest; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.HardwareBuilder; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.domain.NodeMetadata.Status; -import org.jclouds.compute.domain.NodeMetadataBuilder; -import org.jclouds.compute.functions.GroupNamingConvention; -import org.jclouds.date.internal.SimpleDateFormatDateService; -import org.jclouds.domain.Location; -import org.jclouds.rest.ResourceNotFoundException; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.inject.Guice; - -@Test(groups = "unit", testName = "VirtualMachineToNodeMetadataTest") -public class VirtualMachineToNodeMetadataTest { - - GroupNamingConvention.Factory namingConvention = Guice.createInjector().getInstance(GroupNamingConvention.Factory.class); - - @Test - public void testApplyWhereVirtualMachineWithIPForwardingRule() throws UnknownHostException { - - Supplier<Set<? extends Location>> locationSupplier = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location>of(ZoneToLocationTest.one, ZoneToLocationTest.two)); - - Supplier<Set<? extends Image>> imageSupplier = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet - .<Image>of(TemplateToImageTest.one, TemplateToImageTest.two)); - VirtualMachineToNodeMetadata parser = new VirtualMachineToNodeMetadata(locationSupplier, imageSupplier, - CacheBuilder.newBuilder().<String, Set<IPForwardingRule>> build( - new CacheLoader<String, Set<IPForwardingRule>>() { - @Override - public Set<IPForwardingRule> load(String arg0) throws Exception { - return ImmutableSet.of(IPForwardingRule.builder().id("1234l").IPAddress("1.1.1.1").build()); - } - }), namingConvention); - - // notice if we've already parsed this properly here, we can rely on it. - VirtualMachine guest = Iterables.get(new ListVirtualMachinesResponseTest().expected(), 0); - - NodeMetadata node = parser.apply(guest); - - assertEquals( - node.toString(), - new NodeMetadataBuilder().id("54").providerId("54").name("i-3-54-VM").group("i-3-54") - .location(ZoneToLocationTest.one).status(Status.PENDING).hostname("i-3-54-VM") - .privateAddresses(ImmutableSet.of("10.1.1.18")).publicAddresses(ImmutableSet.of("1.1.1.1")) - .hardware(addHypervisor(ServiceOfferingToHardwareTest.one, "XenServer")) - .imageId(TemplateToImageTest.one.getId()) - .operatingSystem(TemplateToImageTest.one.getOperatingSystem()).build().toString()); - - } - - @Test - public void testApplyWhereVirtualMachineHasNoIpForwardingRuleAndAPublicIP() throws UnknownHostException { - - Supplier<Set<? extends Location>> locationSupplier = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location>of(ZoneToLocationTest.one, ZoneToLocationTest.two)); - - Supplier<Set<? extends Image>> imageSupplier = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet - .<Image>of(TemplateToImageTest.one, TemplateToImageTest.two)); - - VirtualMachineToNodeMetadata parser = new VirtualMachineToNodeMetadata(locationSupplier, imageSupplier, - CacheBuilder.newBuilder().<String, Set<IPForwardingRule>> build( - new CacheLoader<String, Set<IPForwardingRule>>() { - @Override - public Set<IPForwardingRule> load(String arg0) throws Exception { - return ImmutableSet.of(); - } - }), namingConvention); - - VirtualMachine guest = VirtualMachine.builder() - .id("54") - .name("i-3-54-VM") - .displayName("i-3-54-VM") - .account("adrian") - .domainId("1") - .domain("ROOT") - .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-16T14:28:37-0800")) - .state(VirtualMachine.State.STARTING) - .isHAEnabled(false) - .zoneId("1") - .zoneName("San Jose 1") - .templateId("2") - .templateName("CentOS 5.3(64-bit) no GUI (XenServer)") - .templateDisplayText("CentOS 5.3(64-bit) no GUI (XenServer)") - .passwordEnabled(false) - .serviceOfferingId("1") - .serviceOfferingName("Small Instance") - .cpuCount(1) - .cpuSpeed(500) - .memory(512) - .guestOSId("11") - .rootDeviceId("0") - .rootDeviceType("NetworkFilesystem") - .jobId("63l") - .jobStatus(0) - .nics(ImmutableSet.of(NIC.builder().id("72").networkId("204").netmask("255.255.255.0").gateway("1.1.1.1") - .IPAddress("1.1.1.5").trafficType(TrafficType.GUEST).guestIPType(GuestIPType.VIRTUAL) - .isDefault(true).build())).hypervisor("XenServer").build(); - - NodeMetadata node = parser.apply(guest); - - assertEquals( - node.toString(), - new NodeMetadataBuilder().id("54").providerId("54").name("i-3-54-VM").group("i-3-54") - .location(ZoneToLocationTest.one).status(Status.PENDING).hostname("i-3-54-VM") - .privateAddresses(ImmutableSet.<String>of()) - .publicAddresses(ImmutableSet.<String>of("1.1.1.5")) - .hardware(addHypervisor(ServiceOfferingToHardwareTest.one, "XenServer")) - .imageId(TemplateToImageTest.one.getId()) - .operatingSystem(TemplateToImageTest.one.getOperatingSystem()).build().toString()); - } - - @Test - public void testApplyWhereVirtualMachineWithNoPassword() throws UnknownHostException { - - Supplier<Set<? extends Location>> locationSupplier = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location>of(ZoneToLocationTest.one, ZoneToLocationTest.two)); - - Supplier<Set<? extends Image>> imageSupplier = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet - .<Image>of(TemplateToImageTest.one, TemplateToImageTest.two)); - VirtualMachineToNodeMetadata parser = new VirtualMachineToNodeMetadata(locationSupplier, imageSupplier, - CacheBuilder.newBuilder().<String, Set<IPForwardingRule>> build( - new CacheLoader<String, Set<IPForwardingRule>>() { - - @Override - public Set<IPForwardingRule> load(String arg0) throws Exception { - throw new ResourceNotFoundException("no ip forwarding rule for: " + arg0); - } - - }), namingConvention); - - // notice if we've already parsed this properly here, we can rely on it. - VirtualMachine guest = Iterables.get(new ListVirtualMachinesResponseTest().expected(), 0); - - NodeMetadata node = parser.apply(guest); - - assertEquals( - node.toString(), - new NodeMetadataBuilder().id("54").providerId("54").name("i-3-54-VM").group("i-3-54") - .location(ZoneToLocationTest.one).status(Status.PENDING).hostname("i-3-54-VM") - .privateAddresses(ImmutableSet.of("10.1.1.18")) - .hardware(addHypervisor(ServiceOfferingToHardwareTest.one, "XenServer")) - .imageId(TemplateToImageTest.one.getId()) - .operatingSystem(TemplateToImageTest.one.getOperatingSystem()).build().toString()); - } - - protected Hardware addHypervisor(Hardware in, String hypervisor) { - return HardwareBuilder.fromHardware(in).hypervisor(hypervisor).build(); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ZoneToLocationTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ZoneToLocationTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ZoneToLocationTest.java deleted file mode 100644 index ab8c239..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/functions/ZoneToLocationTest.java +++ /dev/null @@ -1,61 +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.cloudstack.compute.functions; - -import static org.testng.AssertJUnit.assertEquals; - -import java.net.URI; -import java.util.Set; - -import org.jclouds.cloudstack.domain.Zone; -import org.jclouds.cloudstack.parse.ListZonesResponseTest; -import org.jclouds.domain.Location; -import org.jclouds.domain.LocationBuilder; -import org.jclouds.domain.LocationScope; -import org.jclouds.location.suppliers.all.JustProvider; -import org.testng.annotations.Test; - -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - -/** - * Tests {@code ZoneToLocation} - */ -@Test(singleThreaded = true, groups = "unit") -public class ZoneToLocationTest { - - public static final JustProvider justProvider = new JustProvider("cloudstack", Suppliers.ofInstance(URI.create("foo")), - ImmutableSet.<String> of()); - public static final ZoneToLocation function = new ZoneToLocation(justProvider); - public static final Location one = new LocationBuilder().parent(Iterables.get(justProvider.get(), 0)).scope(LocationScope.ZONE) - .description("San Jose 1").id("1").build(); - public static final Location two = new LocationBuilder().parent(Iterables.get(justProvider.get(), 0)).scope(LocationScope.ZONE) - .description("Chicago").id("2").build(); - - @Test - public void test() { - - Set<Location> expected = ImmutableSet.of(one, two); - - Set<Zone> zones = new ListZonesResponseTest().expected(); - - Iterable<Location> locations = Iterables.transform(zones, function); - - assertEquals(locations.toString(), expected.toString()); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/CreateUniqueKeyPairTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/CreateUniqueKeyPairTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/CreateUniqueKeyPairTest.java deleted file mode 100644 index 1fbddae..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/CreateUniqueKeyPairTest.java +++ /dev/null @@ -1,69 +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.cloudstack.compute.loaders; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertEquals; - -import java.net.UnknownHostException; - -import org.jclouds.cloudstack.CloudStackApi; -import org.jclouds.cloudstack.domain.SshKeyPair; -import org.jclouds.cloudstack.features.SSHKeyPairApi; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.TypeLiteral; - -@Test(groups = "unit", testName = "CreateUniqueKeyPairTest") -public class CreateUniqueKeyPairTest { - - @Test - public void testLoad() throws UnknownHostException { - final CloudStackApi client = createMock(CloudStackApi.class); - SSHKeyPairApi keyClient = createMock(SSHKeyPairApi.class); - - SshKeyPair pair = createMock(SshKeyPair.class); - - expect(client.getSSHKeyPairApi()).andReturn(keyClient); - expect(keyClient.createSSHKeyPair("group-1")).andReturn(pair); - - replay(client, keyClient); - - CreateUniqueKeyPair parser = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bind(new TypeLiteral<Supplier<String>>() { - }).toInstance(Suppliers.ofInstance("1")); - bind(CloudStackApi.class).toInstance(client); - } - - }).getInstance(CreateUniqueKeyPair.class); - - assertEquals(parser.load("group-1"), pair); - - verify(client, keyClient); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/FindSecurityGroupOrCreateTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/FindSecurityGroupOrCreateTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/FindSecurityGroupOrCreateTest.java deleted file mode 100644 index 87fabd8..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/compute/loaders/FindSecurityGroupOrCreateTest.java +++ /dev/null @@ -1,257 +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.cloudstack.compute.loaders; - -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL; -import static org.jclouds.util.Predicates2.retry; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertEquals; - -import java.net.UnknownHostException; -import javax.inject.Singleton; - -import org.jclouds.cloudstack.CloudStackApi; -import org.jclouds.cloudstack.domain.IngressRule; -import org.jclouds.cloudstack.domain.SecurityGroup; -import org.jclouds.cloudstack.domain.Zone; -import org.jclouds.cloudstack.domain.ZoneAndName; -import org.jclouds.cloudstack.domain.ZoneSecurityGroupNamePortsCidrs; -import org.jclouds.cloudstack.features.AsyncJobApi; -import org.jclouds.cloudstack.features.SecurityGroupApi; -import org.jclouds.cloudstack.features.ZoneApi; -import org.jclouds.cloudstack.functions.CreateSecurityGroupIfNeeded; -import org.jclouds.cloudstack.functions.ZoneIdToZone; -import org.jclouds.cloudstack.predicates.JobComplete; -import org.jclouds.cloudstack.suppliers.ZoneIdToZoneSupplier; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableSet; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Provides; -import com.google.inject.TypeLiteral; -import com.google.inject.name.Names; - -@Test(groups = "unit", testName = "FindSecurityGroupOrCreateTest") -public class FindSecurityGroupOrCreateTest { - - @Test - public void testLoad() throws UnknownHostException { - final CloudStackApi client = createMock(CloudStackApi.class); - SecurityGroupApi secClient = createMock(SecurityGroupApi.class); - ZoneApi zoneClient = createMock(ZoneApi.class); - AsyncJobApi jobClient = createMock(AsyncJobApi.class); - - SecurityGroup group = createMock(SecurityGroup.class); - - Zone zone = createMock(Zone.class); - - expect(group.getIngressRules()).andReturn(ImmutableSet.<IngressRule> of()); - expect(group.getId()).andReturn("sec-1234").anyTimes(); - expect(zone.isSecurityGroupsEnabled()).andReturn(true); - - expect(client.getSecurityGroupApi()).andReturn(secClient) - .anyTimes(); - expect(client.getZoneApi()).andReturn(zoneClient); - expect(client.getAsyncJobApi()).andReturn(jobClient).anyTimes(); - - expect(zoneClient.getZone("zone-1")).andReturn(zone); - expect(secClient.getSecurityGroupByName("group-1")).andReturn(null); - expect(secClient.createSecurityGroup("group-1")).andReturn(group); - expect(secClient.authorizeIngressPortsToCIDRs("sec-1234", - "TCP", - 22, - 22, - ImmutableSet.of("0.0.0.0/0"))).andReturn("job-1234"); - - replay(client, secClient, zoneClient, zone, group); - - ZoneSecurityGroupNamePortsCidrs input = ZoneSecurityGroupNamePortsCidrs.builder() - .zone("zone-1") - .name("group-1") - .ports(ImmutableSet.of(22)) - .cidrs(ImmutableSet.<String> of()).build(); - - FindSecurityGroupOrCreate parser = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bind(new TypeLiteral<Supplier<String>>() { - }).toInstance(Suppliers.ofInstance("1")); - bind(CloudStackApi.class).toInstance(client); - bind(new TypeLiteral<CacheLoader<String, Zone>>() {}). - to(ZoneIdToZone.class); - bind(new TypeLiteral<Supplier<LoadingCache<String, Zone>>>() {}). - to(ZoneIdToZoneSupplier.class); - bind(String.class).annotatedWith(Names.named(PROPERTY_SESSION_INTERVAL)).toInstance("60"); - - bind(new TypeLiteral<Function<ZoneSecurityGroupNamePortsCidrs, SecurityGroup>>() { - }).to(CreateSecurityGroupIfNeeded.class); - - bind(new TypeLiteral<CacheLoader<ZoneAndName, SecurityGroup>>() { - }).to(FindSecurityGroupOrCreate.class); - } - - @Provides - @Singleton - protected Predicate<String> jobComplete(JobComplete jobComplete) { - return retry(jobComplete, 1200, 1, 5, SECONDS); - } - - }).getInstance(FindSecurityGroupOrCreate.class); - - assertEquals(parser.load(input), group); - - verify(client, secClient, zoneClient, zone, group); - } - - - @Test - public void testLoadAlreadyExists() throws UnknownHostException { - final CloudStackApi client = createMock(CloudStackApi.class); - SecurityGroupApi secClient = createMock(SecurityGroupApi.class); - ZoneApi zoneClient = createMock(ZoneApi.class); - AsyncJobApi jobClient = createMock(AsyncJobApi.class); - - SecurityGroup group = createMock(SecurityGroup.class); - - Zone zone = createMock(Zone.class); - - expect(group.getId()).andReturn("sec-1234").anyTimes(); - - expect(client.getSecurityGroupApi()).andReturn(secClient) - .anyTimes(); - expect(client.getZoneApi()).andReturn(zoneClient); - expect(client.getAsyncJobApi()).andReturn(jobClient).anyTimes(); - - expect(secClient.getSecurityGroupByName("group-1")).andReturn(group); - - replay(client, secClient, zoneClient, zone, group); - - ZoneSecurityGroupNamePortsCidrs input = ZoneSecurityGroupNamePortsCidrs.builder() - .zone("zone-1") - .name("group-1") - .ports(ImmutableSet.of(22)) - .cidrs(ImmutableSet.<String> of()).build(); - - FindSecurityGroupOrCreate parser = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bind(new TypeLiteral<Supplier<String>>() { - }).toInstance(Suppliers.ofInstance("1")); - bind(CloudStackApi.class).toInstance(client); - bind(new TypeLiteral<CacheLoader<String, Zone>>() {}). - to(ZoneIdToZone.class); - bind(new TypeLiteral<Supplier<LoadingCache<String, Zone>>>() {}). - to(ZoneIdToZoneSupplier.class); - bind(String.class).annotatedWith(Names.named(PROPERTY_SESSION_INTERVAL)).toInstance("60"); - - bind(new TypeLiteral<Function<ZoneSecurityGroupNamePortsCidrs, SecurityGroup>>() { - }).to(CreateSecurityGroupIfNeeded.class); - - bind(new TypeLiteral<CacheLoader<ZoneAndName, SecurityGroup>>() { - }).to(FindSecurityGroupOrCreate.class); - } - - @Provides - @Singleton - protected Predicate<String> jobComplete(JobComplete jobComplete) { - return retry(jobComplete, 1200, 1, 5, SECONDS); - } - - }).getInstance(FindSecurityGroupOrCreate.class); - - assertEquals(parser.load(input), group); - - verify(client, secClient, zoneClient, zone, group); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testLoadZoneNoSecurityGroups() throws UnknownHostException { - final CloudStackApi client = createMock(CloudStackApi.class); - SecurityGroupApi secClient = createMock(SecurityGroupApi.class); - ZoneApi zoneClient = createMock(ZoneApi.class); - AsyncJobApi jobClient = createMock(AsyncJobApi.class); - - SecurityGroup group = createMock(SecurityGroup.class); - - Zone zone = createMock(Zone.class); - - expect(zone.isSecurityGroupsEnabled()).andReturn(false); - - expect(client.getSecurityGroupApi()).andReturn(secClient) - .anyTimes(); - expect(client.getZoneApi()).andReturn(zoneClient); - expect(client.getAsyncJobApi()).andReturn(jobClient).anyTimes(); - - expect(zoneClient.getZone("zone-1")).andReturn(zone); - expect(secClient.getSecurityGroupByName("group-1")).andReturn(null); - - replay(client, secClient, zoneClient, zone, group); - - ZoneSecurityGroupNamePortsCidrs input = ZoneSecurityGroupNamePortsCidrs.builder() - .zone("zone-1") - .name("group-1") - .ports(ImmutableSet.of(22)) - .cidrs(ImmutableSet.<String> of()).build(); - - FindSecurityGroupOrCreate parser = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bind(new TypeLiteral<Supplier<String>>() { - }).toInstance(Suppliers.ofInstance("1")); - bind(CloudStackApi.class).toInstance(client); - bind(new TypeLiteral<CacheLoader<String, Zone>>() {}). - to(ZoneIdToZone.class); - bind(new TypeLiteral<Supplier<LoadingCache<String, Zone>>>() {}). - to(ZoneIdToZoneSupplier.class); - bind(String.class).annotatedWith(Names.named(PROPERTY_SESSION_INTERVAL)).toInstance("60"); - - bind(new TypeLiteral<Function<ZoneSecurityGroupNamePortsCidrs, SecurityGroup>>() { - }).to(CreateSecurityGroupIfNeeded.class); - - bind(new TypeLiteral<CacheLoader<ZoneAndName, SecurityGroup>>() { - }).to(FindSecurityGroupOrCreate.class); - } - - @Provides - @Singleton - protected Predicate<String> jobComplete(JobComplete jobComplete) { - return retry(jobComplete, 1200, 1, 5, SECONDS); - } - - }).getInstance(FindSecurityGroupOrCreate.class); - - assertEquals(parser.load(input), group); - - verify(client, secClient, zoneClient, zone, group); - } - -}
