http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/BaseEC2ComputeServiceExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/BaseEC2ComputeServiceExpectTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/BaseEC2ComputeServiceExpectTest.java deleted file mode 100644 index 610cfb7..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/BaseEC2ComputeServiceExpectTest.java +++ /dev/null @@ -1,246 +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.ec2.compute.internal; - -import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS; - -import java.util.Properties; - -import javax.ws.rs.core.MediaType; - -import org.jclouds.compute.ComputeService; -import org.jclouds.compute.ComputeServiceContext; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.testng.annotations.BeforeClass; - -public abstract class BaseEC2ComputeServiceExpectTest extends BaseEC2ComputeServiceContextExpectTest<ComputeService> { - protected String region; - - @Override - protected Properties setupProperties() { - Properties properties = super.setupProperties(); - properties.setProperty(PROPERTY_REGIONS, region); - properties.setProperty(provider + ".template", "osDescriptionMatches=.*fedora.*"); - return properties; - } - - protected HttpRequest describeAvailabilityZonesRequest; - protected HttpResponse describeAvailabilityZonesResponse; - protected HttpRequest describeImagesRequest; - protected HttpResponse describeImagesResponse; - protected HttpRequest createKeyPairRequest; - protected HttpResponse createKeyPairResponse; - protected HttpRequest createSecurityGroupRequest; - protected HttpResponse createSecurityGroupResponse; - protected HttpRequest describeSecurityGroupRequest; - protected HttpResponse describeSecurityGroupResponse; - protected HttpRequest authorizeSecurityGroupIngressRequest22; - protected HttpResponse authorizeSecurityGroupIngressResponse; - protected HttpRequest authorizeSecurityGroupIngressRequestGroup; - protected HttpRequest runInstancesRequest; - protected HttpResponse runInstancesResponse; - protected HttpRequest describeInstanceRequest; - protected HttpResponse describeInstanceResponse; - protected HttpRequest describeInstanceMultiIdsRequest; - protected HttpResponse describeInstanceMultiIdsResponse; - protected HttpRequest describeImageRequest; - protected HttpRequest createTagsRequest; - protected HttpResponse createTagsResponse; - - public BaseEC2ComputeServiceExpectTest() { - region = "us-east-1"; - } - - @BeforeClass - @Override - protected void setupDefaultRequests() { - super.setupDefaultRequests(); - describeAvailabilityZonesRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "DescribeAvailabilityZones").build()); - - describeAvailabilityZonesResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/availabilityZones-" + region + ".xml", MediaType.APPLICATION_XML)).build(); - describeImagesRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "DescribeImages").build()); - - describeImagesResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/describe_images.xml", MediaType.APPLICATION_XML)).build(); - - createKeyPairRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "CreateKeyPair") - .addFormParam("KeyName", "jclouds#test#0").build()); - - createKeyPairResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/create_keypair.xml", MediaType.APPLICATION_XML)).build(); - - createSecurityGroupRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "CreateSecurityGroup") - .addFormParam("GroupDescription", "jclouds#test") - .addFormParam("GroupName", "jclouds#test").build()); - - createSecurityGroupResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/created_securitygroup.xml", MediaType.APPLICATION_XML)).build(); - - describeSecurityGroupRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "DescribeSecurityGroups") - .addFormParam("GroupName.1", "jclouds#test").build()); - - describeSecurityGroupResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/new_securitygroup.xml", MediaType.APPLICATION_XML)).build(); - - authorizeSecurityGroupIngressRequest22 = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "AuthorizeSecurityGroupIngress") - .addFormParam("CidrIp", "0.0.0.0/0") - .addFormParam("FromPort", "22") - .addFormParam("ToPort", "22") - .addFormParam("GroupName", "jclouds#test") - .addFormParam("IpProtocol", "tcp").build()); - - authorizeSecurityGroupIngressRequestGroup = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "AuthorizeSecurityGroupIngress") - .addFormParam("SourceSecurityGroupName", "jclouds#test") - .addFormParam("SourceSecurityGroupOwnerId", "993194456877") - .addFormParam("GroupName", "jclouds#test").build()); - - authorizeSecurityGroupIngressResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/authorize_securitygroup_ingress_response.xml", MediaType.APPLICATION_XML)).build(); - - runInstancesRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "RunInstances") - .addFormParam("ImageId", "ami-be3adfd7") - .addFormParam("InstanceType", "m1.small") - .addFormParam("KeyName", "jclouds#test#0") - .addFormParam("MaxCount", "1") - .addFormParam("MinCount", "1") - .addFormParam("SecurityGroup.1", "jclouds#test").build()); - - runInstancesResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/new_instance.xml", MediaType.APPLICATION_XML)).build(); - - describeInstanceRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "DescribeInstances") - .addFormParam("InstanceId.1", "i-2baa5550").build()); - - describeInstanceResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/describe_instances_running-1.xml", MediaType.APPLICATION_XML)).build(); - - describeInstanceMultiIdsRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("Action", "DescribeInstances") - .addFormParam("InstanceId.1", "i-2baa5550") - .addFormParam("InstanceId.2", "i-abcd1234").build()); - - describeInstanceMultiIdsResponse = - HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType( - "/describe_instances_multiple.xml", MediaType.APPLICATION_XML)).build(); - - //TODO: duplicate.. shouldn't need this - describeImageRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2." + region + ".amazonaws.com/") - .addHeader("Host", "ec2." + region + ".amazonaws.com") - .addFormParam("ImageId.1", "ami-aecd60c7") - .addFormParam("Action", "DescribeImages").build()); - - createTagsRequest = - formSigner.filter(HttpRequest.builder() - .method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .payload( - payloadFromStringWithContentType( - "Action=CreateTags" + - "&ResourceId.1=i-2baa5550" + - "&Signature=Trp5e5%2BMqeBeBZbLYa9s9gxahQ9nkx6ETfsGl82IV8Y%3D" + - "&SignatureMethod=HmacSHA256" + - "&SignatureVersion=2" + - "&Tag.1.Key=Name" + - "&Tag.1.Value=test-2baa5550" + - "&Timestamp=2012-04-16T15%3A54%3A08.897Z" + - "&Version=2010-08-31" + - "&AWSAccessKeyId=identity", - "application/x-www-form-urlencoded")) - .build()); - - createTagsResponse = HttpResponse.builder().statusCode(200).build(); - - } - - @Override - public ComputeService apply(ComputeServiceContext input) { - return input.getComputeService(); - } - -}
http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java deleted file mode 100644 index c8cc78b..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/internal/EC2TemplateBuilderImplTest.java +++ /dev/null @@ -1,237 +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.ec2.compute.internal; - -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.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_medium; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.fail; - -import java.util.NoSuchElementException; -import java.util.Set; - -import javax.inject.Provider; - -import org.jclouds.collect.Memoized; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.OperatingSystem; -import org.jclouds.compute.domain.TemplateBuilder; -import org.jclouds.compute.domain.internal.TemplateBuilderImpl; -import org.jclouds.compute.domain.internal.TemplateBuilderImplTest; -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.domain.Location; -import org.jclouds.ec2.compute.domain.RegionAndName; -import org.jclouds.ec2.compute.functions.ImagesToRegionAndIdMap; -import org.jclouds.ec2.compute.options.EC2TemplateOptions; -import org.testng.annotations.Test; - -import com.google.common.base.Functions; -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.cache.LoadingCache; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -/** - * - * @author Adrian Cole - */ -@Test(groups = "unit", singleThreaded = true) -public class EC2TemplateBuilderImplTest extends TemplateBuilderImplTest { - - @Override - protected TemplateOptions provideTemplateOptions() { - return new EC2TemplateOptions(); - } - - @Override - protected EC2TemplateBuilderImpl createTemplateBuilder(final Image knownImage, - @Memoized Supplier<Set<? extends Location>> locations, @Memoized final Supplier<Set<? extends Image>> images, - @Memoized Supplier<Set<? extends Hardware>> sizes, Location defaultLocation, - Provider<TemplateOptions> optionsProvider, Provider<TemplateBuilder> templateBuilderProvider) { - - LoadingCache<RegionAndName, ? extends Image> imageMap; - if (knownImage != null) { - final RegionAndName knownRegionAndName = new RegionAndName(knownImage.getLocation().getId(), knownImage.getProviderId()); - - imageMap = CacheBuilder.newBuilder().build(new CacheLoader<RegionAndName, Image>() { - @Override - public Image load(RegionAndName from) { - return from.equals(knownRegionAndName) ? knownImage : null; - } - - }); - - } else { - imageMap = CacheBuilder.newBuilder().build(CacheLoader.from(Functions.forMap( - ImagesToRegionAndIdMap.imagesToMap(images.get())))); - } - - return new EC2TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(defaultLocation), - optionsProvider, templateBuilderProvider, Suppliers.<LoadingCache<RegionAndName, ? extends Image>>ofInstance(imageMap)); - } - - @Override - protected String getProviderFormatId(String uniqueLabel) { - return "us-east-1/"+uniqueLabel; - } - - @Override - @Test - public void testHardwareWithImageIdPredicateOnlyAcceptsImageWhenLocationNull() { - // not possible to have null region in ec2 - } - - @SuppressWarnings("unchecked") - @Test - public void testParseOnDemand() { - - Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location> of(region)); - Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(Sets - .<Image> newLinkedHashSet()); - Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet - .<Hardware> of(c1_medium().build())); - - Provider<TemplateOptions> optionsProvider = createMock(Provider.class); - Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); - TemplateOptions defaultOptions = createMock(TemplateOptions.class); - Image knownImage = createMock(Image.class); - OperatingSystem os = createMock(OperatingSystem.class); - - expect(optionsProvider.get()).andReturn(defaultOptions); - - expect(knownImage.getId()).andReturn("us-east-1/ami").atLeastOnce(); - expect(knownImage.getLocation()).andReturn(region).atLeastOnce(); - expect(knownImage.getName()).andReturn(null).atLeastOnce(); - expect(knownImage.getDescription()).andReturn(null).atLeastOnce(); - expect(knownImage.getVersion()).andReturn(null).atLeastOnce(); - expect(knownImage.getProviderId()).andReturn("ami").atLeastOnce(); - - expect(knownImage.getOperatingSystem()).andReturn(os).atLeastOnce(); - - expect(os.getName()).andReturn(null).atLeastOnce(); - expect(os.getVersion()).andReturn(null).atLeastOnce(); - expect(os.getFamily()).andReturn(null).atLeastOnce(); - expect(os.getDescription()).andReturn(null).atLeastOnce(); - expect(os.getArch()).andReturn("paravirtual").atLeastOnce(); - expect(os.is64Bit()).andReturn(false).atLeastOnce(); - - replay(knownImage); - replay(os); - replay(defaultOptions); - replay(optionsProvider); - replay(templateBuilderProvider); - - TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region, - optionsProvider, templateBuilderProvider); - - assertEquals(template.imageId("us-east-1/ami").build().getImage(), knownImage); - - verify(knownImage); - verify(os); - verify(defaultOptions); - verify(optionsProvider); - verify(templateBuilderProvider); - } - - @SuppressWarnings("unchecked") - @Test - public void testParseOnDemandWithoutRegionEncodedIntoId() { - - Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location> of(region)); - Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of()); - Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet - .<Hardware> of(c1_medium().build())); - - Provider<TemplateOptions> optionsProvider = createMock(Provider.class); - Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); - TemplateOptions defaultOptions = createMock(TemplateOptions.class); - Image knownImage = createMock(Image.class); - expect(knownImage.getId()).andReturn("region/ami").anyTimes(); - expect(knownImage.getProviderId()).andReturn("ami").anyTimes(); - expect(knownImage.getLocation()).andReturn(region).anyTimes(); - - expect(optionsProvider.get()).andReturn(defaultOptions); - - replay(knownImage); - replay(defaultOptions); - replay(optionsProvider); - replay(templateBuilderProvider); - - TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, region, - optionsProvider, templateBuilderProvider); - try { - template.imageId("ami").build(); - fail("Expected IllegalArgumentException"); - } catch (IllegalArgumentException e) { - - } - verify(knownImage); - verify(defaultOptions); - verify(optionsProvider); - verify(templateBuilderProvider); - } - - @SuppressWarnings("unchecked") - @Test(expectedExceptions = NoSuchElementException.class) - public void testParseOnDemandNotFound() { - - Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>> ofInstance(ImmutableSet - .<Location> of(region)); - Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>> ofInstance(ImmutableSet.<Image> of()); - Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet - .<Hardware> of(c1_medium().build())); - - Location defaultLocation = createMock(Location.class); - Provider<TemplateOptions> optionsProvider = createMock(Provider.class); - Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); - TemplateOptions defaultOptions = createMock(TemplateOptions.class); - Image knownImage = createMock(Image.class); - expect(knownImage.getId()).andReturn("region/ami").anyTimes(); - expect(knownImage.getProviderId()).andReturn("ami").anyTimes(); - expect(knownImage.getLocation()).andReturn(region).anyTimes(); - - expect(defaultLocation.getId()).andReturn("region"); - expect(optionsProvider.get()).andReturn(defaultOptions); - - replay(knownImage); - replay(defaultOptions); - replay(defaultLocation); - replay(optionsProvider); - replay(templateBuilderProvider); - - TemplateBuilderImpl template = createTemplateBuilder(knownImage, locations, images, sizes, defaultLocation, - optionsProvider, templateBuilderProvider); - - assertEquals(template.imageId("region/bad").build().getImage(), knownImage); - - verify(knownImage); - verify(defaultOptions); - verify(defaultLocation); - verify(optionsProvider); - verify(templateBuilderProvider); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/CreateSecurityGroupIfNeededTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/CreateSecurityGroupIfNeededTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/CreateSecurityGroupIfNeededTest.java deleted file mode 100644 index 1a2b9b3..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/CreateSecurityGroupIfNeededTest.java +++ /dev/null @@ -1,108 +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.ec2.compute.loaders; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertEquals; - -import java.util.Set; -import java.util.concurrent.ExecutionException; - -import org.jclouds.ec2.compute.domain.RegionAndName; -import org.jclouds.ec2.compute.domain.RegionNameAndIngressRules; -import org.jclouds.ec2.domain.SecurityGroup; -import org.jclouds.ec2.domain.UserIdGroupPair; -import org.jclouds.ec2.features.SecurityGroupApi; -import org.jclouds.net.domain.IpProtocol; -import org.testng.annotations.Test; - -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableSet; - -/** - * @author Adrian Cole - */ -@Test(groups = "unit", singleThreaded = true, testName = "CreateSecurityGroupIfNeeded") -public class CreateSecurityGroupIfNeededTest { - - @SuppressWarnings("unchecked") - @Test - public void testWhenPort22AndToItselfAuthorizesIngressTwice() throws ExecutionException { - - SecurityGroupApi client = createMock(SecurityGroupApi.class); - Predicate<RegionAndName> tester = Predicates.alwaysTrue(); - - SecurityGroup group = createNiceMock(SecurityGroup.class); - Set<SecurityGroup> groups = ImmutableSet.<SecurityGroup> of(group); - - client.createSecurityGroupInRegion("region", "group", "group"); - client.authorizeSecurityGroupIngressInRegion("region", "group", IpProtocol.TCP, 22, 22, "0.0.0.0/0"); - expect(client.describeSecurityGroupsInRegion("region", "group")).andReturn(Set.class.cast(groups)); - expect(group.getOwnerId()).andReturn("ownerId"); - client.authorizeSecurityGroupIngressInRegion("region", "group", new UserIdGroupPair("ownerId", "group")); - - replay(client); - replay(group); - - CreateSecurityGroupIfNeeded function = new CreateSecurityGroupIfNeeded(client, tester); - - assertEquals("group", function.load(new RegionNameAndIngressRules("region", "group", new int[] { 22 }, true))); - - verify(client); - verify(group); - - } - - @Test - public void testIllegalStateExceptionCreatingGroupJustReturns() throws ExecutionException { - - SecurityGroupApi client = createMock(SecurityGroupApi.class); - Predicate<RegionAndName> tester = Predicates.alwaysTrue(); - - client.createSecurityGroupInRegion("region", "group", "group"); - expectLastCall().andThrow(new IllegalStateException()); - - replay(client); - - CreateSecurityGroupIfNeeded function = new CreateSecurityGroupIfNeeded(client, tester); - - assertEquals("group", function.load(new RegionNameAndIngressRules("region", "group", new int[] { 22 }, true))); - - verify(client); - - } - - @Test(expectedExceptions = RuntimeException.class) - public void testWhenEventualConsistencyExpiresIllegalStateException() throws ExecutionException { - - SecurityGroupApi client = createMock(SecurityGroupApi.class); - Predicate<RegionAndName> tester = Predicates.alwaysFalse(); - - client.createSecurityGroupInRegion("region", "group", "group"); - - replay(client); - - CreateSecurityGroupIfNeeded function = new CreateSecurityGroupIfNeeded(client, tester); - function.load(new RegionNameAndIngressRules("region", "group", new int[] { 22 }, true)); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/LoadPublicIpForInstanceOrNullTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/LoadPublicIpForInstanceOrNullTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/LoadPublicIpForInstanceOrNullTest.java deleted file mode 100644 index 9d3feff..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/LoadPublicIpForInstanceOrNullTest.java +++ /dev/null @@ -1,106 +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.ec2.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 org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.compute.domain.RegionAndName; -import org.jclouds.ec2.domain.PublicIpInstanceIdPair; -import org.jclouds.ec2.features.ElasticIPAddressApi; -import org.testng.annotations.Test; - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; - -/** - * @author Adrian Cole - */ -@Test(groups = "unit", singleThreaded = true, testName = "LoadPublicIpForInstanceOrNullTest") -public class LoadPublicIpForInstanceOrNullTest { - - @Test - public void testReturnsPublicIpOnMatch() throws Exception { - EC2Api client = createMock(EC2Api.class); - ElasticIPAddressApi ipClient = createMock(ElasticIPAddressApi.class); - - expect(client.getElasticIPAddressApi()).andReturn((Optional) Optional.of(ipClient)).atLeastOnce(); - expect(ipClient.describeAddressesInRegion("region")).andReturn( - ImmutableSet.<PublicIpInstanceIdPair> of(new PublicIpInstanceIdPair("region", "1.1.1.1", "i-blah"))) - .atLeastOnce(); - - replay(client); - replay(ipClient); - - LoadPublicIpForInstanceOrNull parser = new LoadPublicIpForInstanceOrNull(client); - - assertEquals(parser.load(new RegionAndName("region", "i-blah")), "1.1.1.1"); - - verify(client); - verify(ipClient); - } - - @Test - public void testReturnsNullWhenNotFound() throws Exception { - EC2Api client = createMock(EC2Api.class); - ElasticIPAddressApi ipClient = createMock(ElasticIPAddressApi.class); - - expect(client.getElasticIPAddressApi()).andReturn((Optional) Optional.of(ipClient)).atLeastOnce(); - - expect(ipClient.describeAddressesInRegion("region")).andReturn(ImmutableSet.<PublicIpInstanceIdPair> of()) - .atLeastOnce(); - - replay(client); - replay(ipClient); - - LoadPublicIpForInstanceOrNull parser = new LoadPublicIpForInstanceOrNull(client); - - assertEquals(parser.load(new RegionAndName("region", "i-blah")), null); - - verify(client); - verify(ipClient); - - } - - @Test - public void testReturnsNullWhenNotAssigned() throws Exception { - EC2Api client = createMock(EC2Api.class); - ElasticIPAddressApi ipClient = createMock(ElasticIPAddressApi.class); - - expect(client.getElasticIPAddressApi()).andReturn((Optional) Optional.of(ipClient)).atLeastOnce(); - - expect(ipClient.describeAddressesInRegion("region")).andReturn( - ImmutableSet.<PublicIpInstanceIdPair> of(new PublicIpInstanceIdPair("region", "1.1.1.1", null))) - .atLeastOnce(); - - replay(client); - replay(ipClient); - - LoadPublicIpForInstanceOrNull parser = new LoadPublicIpForInstanceOrNull(client); - - assertEquals(parser.load(new RegionAndName("region", "i-blah")), null); - - verify(client); - verify(ipClient); - - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/RegionAndIdToImageTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/RegionAndIdToImageTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/RegionAndIdToImageTest.java deleted file mode 100644 index 5c1c2aa..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/loaders/RegionAndIdToImageTest.java +++ /dev/null @@ -1,143 +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.ec2.compute.loaders; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.jclouds.ec2.options.DescribeImagesOptions.Builder.imageIds; -import static org.testng.Assert.assertEquals; - -import java.util.NoSuchElementException; -import java.util.Set; -import java.util.concurrent.ExecutionException; - -import org.jclouds.compute.domain.Image; -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.compute.domain.RegionAndName; -import org.jclouds.ec2.compute.functions.EC2ImageParser; -import org.jclouds.ec2.features.AMIApi; -import org.jclouds.rest.ResourceNotFoundException; -import org.testng.annotations.Test; - -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; - -/** - * @author Adrian Cole - */ -@Test(groups = "unit") -public class RegionAndIdToImageTest { - - @SuppressWarnings("unchecked") - @Test - public void testApply() throws ExecutionException { - - EC2ImageParser parser = createMock(EC2ImageParser.class); - EC2Api caller = createMock(EC2Api.class); - AMIApi client = createMock(AMIApi.class); - - org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class); - Image image = createNiceMock(Image.class); - Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image); - - expect(caller.getAMIApi()).andReturn((Optional) Optional.of(client)).atLeastOnce(); - expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images)); - expect(parser.apply(ec2Image)).andReturn(image); - - replay(caller); - replay(image); - replay(parser); - replay(client); - - RegionAndIdToImage function = new RegionAndIdToImage(parser, caller); - - assertEquals(function.load(new RegionAndName("region", "ami")), image); - - verify(caller); - verify(image); - verify(image); - verify(client); - - } - - @SuppressWarnings("unchecked") - @Test(expectedExceptions = ExecutionException.class) - public void testApplyNotFoundMakesExecutionException() throws ExecutionException { - - EC2ImageParser parser = createMock(EC2ImageParser.class); - EC2Api caller = createMock(EC2Api.class); - AMIApi client = createMock(AMIApi.class); - - org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class); - Image image = createNiceMock(Image.class); - Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image); - - expect(caller.getAMIApi()).andReturn((Optional) Optional.of(client)).atLeastOnce(); - expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images)); - expect(parser.apply(ec2Image)).andThrow(new ResourceNotFoundException()); - - replay(caller); - replay(image); - replay(parser); - replay(client); - - RegionAndIdToImage function = new RegionAndIdToImage(parser, caller); - - assertEquals(function.load(new RegionAndName("region", "ami")), null); - - verify(caller); - verify(image); - verify(parser); - verify(client); - - } - - @SuppressWarnings("unchecked") - @Test(expectedExceptions = ExecutionException.class) - public void testApplyNoSuchElementExceptionMakesExecutionException() throws ExecutionException { - - EC2ImageParser parser = createMock(EC2ImageParser.class); - EC2Api caller = createMock(EC2Api.class); - AMIApi client = createMock(AMIApi.class); - - org.jclouds.ec2.domain.Image ec2Image = createMock(org.jclouds.ec2.domain.Image.class); - Image image = createNiceMock(Image.class); - Set<? extends org.jclouds.ec2.domain.Image> images = ImmutableSet.<org.jclouds.ec2.domain.Image> of(ec2Image); - - expect(caller.getAMIApi()).andReturn((Optional) Optional.of(client)).atLeastOnce(); - expect(client.describeImagesInRegion("region", imageIds("ami"))).andReturn(Set.class.cast(images)); - expect(parser.apply(ec2Image)).andThrow(new NoSuchElementException()); - - replay(caller); - replay(image); - replay(parser); - replay(client); - - RegionAndIdToImage function = new RegionAndIdToImage(parser, caller); - - assertEquals(function.load(new RegionAndName("region", "ami")), null); - - verify(caller); - verify(image); - verify(parser); - verify(client); - - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/options/EC2TemplateOptionsTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/options/EC2TemplateOptionsTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/options/EC2TemplateOptionsTest.java deleted file mode 100644 index 90b92c3..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/options/EC2TemplateOptionsTest.java +++ /dev/null @@ -1,288 +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.ec2.compute.options; - -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.authorizePublicKey; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.blockOnPort; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.inboundPorts; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.installPrivateKey; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.keyPair; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.noKeyPair; -import static org.jclouds.ec2.compute.options.EC2TemplateOptions.Builder.securityGroups; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; - -import org.jclouds.compute.options.TemplateOptions; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableSet; - -/** - * Tests possible uses of EC2TemplateOptions and EC2TemplateOptions.Builder.* - * - * @author Adrian Cole - */ -public class EC2TemplateOptionsTest { - - public void testAs() { - TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.as(EC2TemplateOptions.class), options); - } - - @Test(expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = "all security groups must be non-empty") - public void testsecurityGroupsIterableBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups(ImmutableSet.of("group1", "")); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testsecurityGroupsIterableEmptyNotOk() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups(ImmutableSet.<String> of()); - } - - @Test - public void testsecurityGroupsIterable() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups(ImmutableSet.of("group1", "group2")); - assertEquals(options.getGroups(), ImmutableSet.of("group1", "group2")); - - } - - @Test - public void testsecurityGroupsIterableStatic() { - EC2TemplateOptions options = securityGroups(ImmutableSet.of("group1", "group2")); - assertEquals(options.getGroups(), ImmutableSet.of("group1", "group2")); - } - - @Test(expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = "all security groups must be non-empty") - public void testsecurityGroupsVarArgsBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups("mygroup", ""); - } - - @Test - public void testsecurityGroupsVarArgs() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups("group1", "group2"); - assertEquals(options.getGroups(), ImmutableSet.of("group1", "group2")); - - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testsecurityGroupsVarArgsEmptyNotOk() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.securityGroups(); - } - - @Test - public void testDefaultGroupsVarArgsEmpty() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getGroups(), ImmutableSet.of()); - } - - @Test - public void testsecurityGroupsVarArgsStatic() { - EC2TemplateOptions options = securityGroups("group1", "group2"); - assertEquals(options.getGroups(), ImmutableSet.of("group1", "group2")); - } - - @Test(expectedExceptions = NullPointerException.class, expectedExceptionsMessageRegExp = "use noKeyPair option to request boot without a keypair") - public void testkeyPairBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.keyPair(""); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testkeyPairAndNoKeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.keyPair("mykeypair"); - options.noKeyPair(); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testNoKeyPairAndKeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.noKeyPair(); - options.keyPair("mykeypair"); - } - - @Test - public void testkeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.keyPair("mykeypair"); - assertEquals(options.getKeyPair(), "mykeypair"); - } - - @Test - public void testNullkeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getKeyPair(), null); - } - - @Test - public void testkeyPairStatic() { - EC2TemplateOptions options = keyPair("mykeypair"); - assertEquals(options.getKeyPair(), "mykeypair"); - } - - @Test(expectedExceptions = NullPointerException.class) - public void testkeyPairNPE() { - keyPair(null); - } - - @Test - public void testnoKeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.noKeyPair(); - assertEquals(options.getKeyPair(), null); - assert !options.shouldAutomaticallyCreateKeyPair(); - } - - @Test - public void testFalsenoKeyPair() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getKeyPair(), null); - assert options.shouldAutomaticallyCreateKeyPair(); - } - - @Test - public void testnoKeyPairStatic() { - EC2TemplateOptions options = noKeyPair(); - assertEquals(options.getKeyPair(), null); - assert !options.shouldAutomaticallyCreateKeyPair(); - } - - // superclass tests - @Test(expectedExceptions = IllegalArgumentException.class) - public void testinstallPrivateKeyBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.installPrivateKey("whompy"); - } - - @Test - public void testinstallPrivateKey() throws IOException { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.installPrivateKey("-----BEGIN RSA PRIVATE KEY-----"); - assertEquals(options.getPrivateKey(), "-----BEGIN RSA PRIVATE KEY-----"); - } - - @Test - public void testNullinstallPrivateKey() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getPrivateKey(), null); - } - - @Test - public void testinstallPrivateKeyStatic() throws IOException { - EC2TemplateOptions options = installPrivateKey("-----BEGIN RSA PRIVATE KEY-----"); - assertEquals(options.getPrivateKey(), "-----BEGIN RSA PRIVATE KEY-----"); - } - - @Test(expectedExceptions = NullPointerException.class) - public void testinstallPrivateKeyNPE() { - installPrivateKey(null); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testauthorizePublicKeyBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.authorizePublicKey("whompy"); - } - - @Test - public void testauthorizePublicKey() throws IOException { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.authorizePublicKey("ssh-rsa"); - assertEquals(options.getPublicKey(), "ssh-rsa"); - } - - @Test - public void testNullauthorizePublicKey() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getPublicKey(), null); - } - - @Test - public void testauthorizePublicKeyStatic() throws IOException { - EC2TemplateOptions options = authorizePublicKey("ssh-rsa"); - assertEquals(options.getPublicKey(), "ssh-rsa"); - } - - @Test(expectedExceptions = NullPointerException.class) - public void testauthorizePublicKeyNPE() { - authorizePublicKey(null); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testblockOnPortBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.blockOnPort(-1, -1); - } - - @Test - public void testblockOnPort() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.blockOnPort(22, 30); - assertEquals(options.getPort(), 22); - assertEquals(options.getSeconds(), 30); - - } - - @Test - public void testNullblockOnPort() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getPort(), -1); - assertEquals(options.getSeconds(), -1); - } - - @Test - public void testblockOnPortStatic() { - EC2TemplateOptions options = blockOnPort(22, 30); - assertEquals(options.getPort(), 22); - assertEquals(options.getSeconds(), 30); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testinboundPortsBadFormat() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.inboundPorts(-1, -1); - } - - @Test - public void testinboundPorts() { - EC2TemplateOptions options = new EC2TemplateOptions(); - options.inboundPorts(22, 30); - assertEquals(options.getInboundPorts()[0], 22); - assertEquals(options.getInboundPorts()[1], 30); - - } - - @Test - public void testDefaultOpen22() { - EC2TemplateOptions options = new EC2TemplateOptions(); - assertEquals(options.getInboundPorts()[0], 22); - } - - @Test - public void testinboundPortsStatic() { - EC2TemplateOptions options = inboundPorts(22, 30); - assertEquals(options.getInboundPorts()[0], 22); - assertEquals(options.getInboundPorts()[1], 30); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/397d9926/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/strategy/CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/strategy/CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/strategy/CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest.java deleted file mode 100644 index d437e42..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/compute/strategy/CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest.java +++ /dev/null @@ -1,577 +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.ec2.compute.strategy; - -import static com.google.common.io.BaseEncoding.base64; -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.lang.reflect.Method; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.ExecutionException; - -import javax.inject.Provider; - -import org.jclouds.aws.domain.Region; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.Template; -import org.jclouds.compute.functions.GroupNamingConvention; -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.domain.LoginCredentials; -import org.jclouds.ec2.compute.domain.EC2HardwareBuilder; -import org.jclouds.ec2.compute.domain.RegionAndName; -import org.jclouds.ec2.compute.domain.RegionNameAndIngressRules; -import org.jclouds.ec2.compute.options.EC2TemplateOptions; -import org.jclouds.ec2.domain.BlockDeviceMapping; -import org.jclouds.ec2.domain.KeyPair; -import org.jclouds.ec2.options.RunInstancesOptions; -import org.jclouds.scriptbuilder.domain.Statements; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; - -/** - * @author Adrian Cole - */ -@Test(groups = "unit", singleThreaded = true, testName = "CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest") -public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest { - - public static final LoginCredentials CREDENTIALS = LoginCredentials - .builder() - .privateKey( - "-----BEGIN RSA PRIVATE KEY-----\n" - + "MIIEowIBAAKCAQEA0CbFlhSdbMdad2ux2BVqk6Ut5fLKb0CdbqubGcEBfwsSz9Rp4Ile76P90MpV\n" - + "W1BGKL5V4MO+flG6dZnRWPVmgrNVyDTmEsALiMGjfEwbACEZ1A8C6mPa36wWO7MlxuyMjg8OczTB\n" - + "EXnHNDpxE5a6KowJtzFlmgjHk2Y+Q42UIqPx47lQUv5bdMDCnfNNomSzTVRjOZLUkDja+ybCKdux\n" - + "gqTsuInhuBRMx+wxff8Z43ECdJV6UPoXK3der1dlZunxGCFkCeYq0kCX7FZ7PV35X744jqhD8P+7\n" - + "y5prO4W+M3DWgChUx0OlbDbSHtDVlcfdbj/+4AKYKU6rQOqh+4DPDQIDAQABAoIBAHjQuEiXKJSV\n" - + "1U2RZcVtENInws9AL/2I/Jfa5Qh6vTqXG9EjklywfzkK72x7tDVvD3ngmAoAs5WwLFDL+fXvYhOk\n" - + "sbql8ZCahVdYRWME7XsSu2IZYHDZipXe1XzLS7b9X8uos5Ns4E8bZuNKtI1RJDdD1vPMqRNR2z0T\n" - + "0Dn3eC7t+t+t7PWaK5AXu2ot7DoOeG1QhqJbwd5pMkIn2ydBILytgmDk/2P3EtJGePIJIeQBicmw\n" - + "Z0KrJFa/K2cC8AtmMJUoZMo+mh1yemDbDLCZW30PjFHbZtcszS2cydAgq/HDFkZynvZG0zhbx/To\n" - + "jzcNza1AyypYwOwb2/9/ulXZp0UCgYEA+QFgWDfYLH2zwjU5b6e0UbIyd/X/yRZ+L8lOEBd0Bbu8\n" - + "qO3txaDbwi7o2mG7pJENHJ3u62CHjgTGDNW9V9Q8eNoGtj3uHvMvi7FdDEK8B6izdZyR7hmZmQ/5\n" - + "MIldelyiGZlz1KBSoy4FsCpA7hV7cI6H6x+Im24NxG90/wd/EgMCgYEA1f+cUyUisIO3yKOCf0hQ\n" - + "aL289q2//F2cbvBxtki6I8JzTg1H3oTO2WVrXQeCA3a/yiuRUatgGH4mxrpCF6byVJyqrEWAj4kU\n" - + "uTbhMgIYhLGoaF1e+vMirCRXUXox0i5X976ASzHn64V9JSd1B+UbKfpcFTYYnChmrRDzmhKN1a8C\n" - + "gYBTvIHAyO7ab18/BRUOllAOVSWhr8lXv0eqHEEzKh/rOaoFCRY3qpOcZpgJsGogumK1Z+sLnoeX\n" - + "W8WaVVp6KbY4UeGF8aedItyvVnLbB6ohzTqkZ4Wvk05S6cs75kXYO0SL5U3NiCiiFXz2NA9nwTOk\n" - + "s1nD2PPgiQ76Kx0mEkhKLwKBgFhHEJqv+AZu37Kx2NRe5WS/2KK9/DPD/hM5tv7mM3sq7Nvm2J3v\n" - + "lVDS6J5AyZ5aLzXcER9qncKcz6wtC7SsFs1Wr4VPSoBroRPikrVJbgnXK8yZr+O/xq7Scv7WdJTq\n" - + "rzkw6cWbObvLnltkUn/GQBVqBPBvF2nbtLdyBbuqKb5bAoGBAI1+aoJnvXEXxT4UHrMkQcY0eXRz\n" - + "3UdbzJmtjMW9CR6l9s11mV6PcZP4qnODp3nd6a+lPeL3wVYQ47DsTJ/Bx5dI17zA5mU57n6mV0a3\n" - + "DbSoPKSdaKTQdo2THnVE9P9sPKZWueAcsE4Yw/qcTjoxrtUnAH/AXN250v0tkKIOvMhu\n" - + "-----END RSA PRIVATE KEY-----").build(); - - public static final KeyPair KEYPAIR = KeyPair.builder().region(Region.AP_SOUTHEAST_1).keyName("myKeyPair") - .sha1OfPrivateKey("13:36:74:b9:56:bb:07:96:c0:19:ab:00:7f:9f:06:d2:16:a0:45:32") - .fingerprint("60:15:d1:f1:d9:e2:3c:e2:ee:a9:64:6a:42:a7:34:0c").keyMaterial(CREDENTIALS.credential).build(); - - private static final Provider<RunInstancesOptions> OPTIONS_PROVIDER = new javax.inject.Provider<RunInstancesOptions>() { - - @Override - public RunInstancesOptions get() { - return new RunInstancesOptions(); - } - - }; - - public void testExecuteWithDefaultOptionsEC2() throws SecurityException, NoSuchMethodException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - Hardware size = EC2HardwareBuilder.m1_small().build(); - String systemGeneratedKeyPairName = "systemGeneratedKeyPair"; - String generatedGroup = "group"; - Set<String> generatedGroups = ImmutableSet.of(generatedGroup); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock( - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class, - new Method[] { - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class - .getDeclaredMethod("getOptionsProvider"), - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod( - "createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class, - TemplateOptions.class), - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod( - "getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) }); - - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - Template template = createMock(Template.class); - - // setup expectations - expect(strategy.getOptionsProvider()).andReturn(OPTIONS_PROVIDER); - expect(template.getHardware()).andReturn(size).atLeastOnce(); - expect(template.getOptions()).andReturn(options).atLeastOnce(); - expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce(); - expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn( - systemGeneratedKeyPairName); - expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups); - expect(options.getUserData()).andReturn(null); - - // replay mocks - replay(options); - replay(template); - replay(strategy); - - // run - RunInstancesOptions customize = strategy.execute(region, group, template); - assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of()); - assertEquals( - customize.buildFormParameters().entries(), - ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1", - generatedGroup, "KeyName", systemGeneratedKeyPairName).entries()); - assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of()); - assertEquals(customize.buildStringPayload(), null); - - // verify mocks - verify(options); - verify(template); - verify(strategy); - } - - public void testExecuteWithUserData() throws SecurityException, NoSuchMethodException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - Hardware size = EC2HardwareBuilder.m1_small().build(); - String systemGeneratedKeyPairName = "systemGeneratedKeyPair"; - String generatedGroup = "group"; - Set<String> generatedGroups = ImmutableSet.of(generatedGroup); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = createMock( - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class, - new Method[] { - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class - .getDeclaredMethod("getOptionsProvider"), - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod( - "createNewKeyPairUnlessUserSpecifiedOtherwise", String.class, String.class, - TemplateOptions.class), - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.class.getDeclaredMethod( - "getSecurityGroupsForTagAndOptions", String.class, String.class, TemplateOptions.class) }); - - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - Template template = createMock(Template.class); - - // setup expectations - expect(strategy.getOptionsProvider()).andReturn(OPTIONS_PROVIDER); - expect(template.getHardware()).andReturn(size).atLeastOnce(); - expect(template.getOptions()).andReturn(options).atLeastOnce(); - expect(options.getBlockDeviceMappings()).andReturn(ImmutableSet.<BlockDeviceMapping> of()).atLeastOnce(); - expect(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options)).andReturn( - systemGeneratedKeyPairName); - expect(strategy.getSecurityGroupsForTagAndOptions(region, group, options)).andReturn(generatedGroups); - expect(options.getUserData()).andReturn("hello".getBytes()); - - // replay mocks - replay(options); - replay(template); - replay(strategy); - - // run - RunInstancesOptions customize = strategy.execute(region, group, template); - assertEquals(customize.buildQueryParameters(), ImmutableMultimap.<String, String> of()); - assertEquals( - customize.buildFormParameters().entries(), - ImmutableMultimap.<String, String> of("InstanceType", size.getProviderId(), "SecurityGroup.1", "group", - "KeyName", systemGeneratedKeyPairName, "UserData", base64().encode("hello".getBytes())).entries()); - - assertEquals(customize.buildRequestHeaders(), ImmutableMultimap.<String, String> of()); - assertEquals(customize.buildStringPayload(), null); - - // verify mocks - verify(options); - verify(template); - verify(strategy); - } - - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldTo() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = "myKeyPair"; - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.getLoginPrivateKey()).andReturn(null); - expect(options.getRunScript()).andReturn(null); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), userSuppliedKeyPair); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptButNoCredentials() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = "myKeyPair"; - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.getLoginUser()).andReturn(null); - expect(options.getLoginPassword()).andReturn(null); - expect(options.getLoginPrivateKey()).andReturn(null); - expect(options.shouldAuthenticateSudo()).andReturn(null); - expect(options.getRunScript()).andReturn(Statements.exec("echo foo")); - - expect(strategy.credentialsMap.containsKey(new RegionAndName(region, userSuppliedKeyPair))).andReturn(false); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), userSuppliedKeyPair); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptAndCredentialsAlreadyInMap() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = "myKeyPair"; - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.getLoginPrivateKey()).andReturn(null); - expect(options.getRunScript()).andReturn(Statements.exec("echo foo")); - - expect(strategy.credentialsMap.containsKey(new RegionAndName(region, userSuppliedKeyPair))).andReturn(true); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), userSuppliedKeyPair); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_reusesKeyWhenToldToWithRunScriptAndCredentialsSpecified() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = "myKeyPair"; - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.getLoginPrivateKey()).andReturn(CREDENTIALS.getPrivateKey()).atLeastOnce(); - - // Notice that the fingerprint and sha1 generated - expect(strategy.credentialsMap.put(new RegionAndName(region, userSuppliedKeyPair), KEYPAIR)).andReturn(null); - expect(options.getRunScript()).andReturn(Statements.exec("echo foo")); - expect(strategy.credentialsMap.containsKey(new RegionAndName(region, userSuppliedKeyPair))).andReturn(true); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), userSuppliedKeyPair); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_createsNewKeyPairAndReturnsItsNameByDefault() - throws ExecutionException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = null; - boolean shouldAutomaticallyCreateKeyPair = true; - String systemGeneratedKeyPairName = "systemGeneratedKeyPair"; - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.shouldAutomaticallyCreateKeyPair()).andReturn(shouldAutomaticallyCreateKeyPair); - expect(keyPair.getKeyName()).andReturn(systemGeneratedKeyPairName).atLeastOnce(); - expect(strategy.credentialsMap.containsKey(new RegionAndName(region, group))).andReturn(true); - expect(strategy.credentialsMap.get(new RegionAndName(region, group))).andReturn(keyPair); - expect(options.getRunScript()).andReturn(null); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), - systemGeneratedKeyPairName); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - public void testCreateNewKeyPairUnlessUserSpecifiedOtherwise_doesntCreateAKeyPairAndReturnsNullWhenToldNotTo() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String userSuppliedKeyPair = null; - boolean shouldAutomaticallyCreateKeyPair = false; // here's the important - // part! - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - KeyPair keyPair = createMock(KeyPair.class); - - // setup expectations - expect(options.getKeyPair()).andReturn(userSuppliedKeyPair); - expect(options.getRunScript()).andReturn(null); - expect(options.shouldAutomaticallyCreateKeyPair()).andReturn(shouldAutomaticallyCreateKeyPair); - - // replay mocks - replay(options); - replay(keyPair); - replayStrategy(strategy); - - // run - assertEquals(strategy.createNewKeyPairUnlessUserSpecifiedOtherwise(region, group, options), null); - - // verify mocks - verify(options); - verify(keyPair); - verifyStrategy(strategy); - } - - public void testGetSecurityGroupsForTagAndOptions_createsNewGroupByDefaultWhenNoPortsAreSpecifiedWhenDoesntExist() - throws ExecutionException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String generatedMarkerGroup = "jclouds#group"; - Set<String> groupIds = ImmutableSet.<String> of(); - int[] ports = {}; - boolean shouldAuthorizeSelf = true; - Set<String> returnVal = ImmutableSet.<String> of(generatedMarkerGroup); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - - // setup expectations - expect(options.getGroups()).andReturn(groupIds).atLeastOnce(); - expect(options.getInboundPorts()).andReturn(ports).atLeastOnce(); - RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup, - ports, shouldAuthorizeSelf); - expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(group); - - // replay mocks - replay(options); - replayStrategy(strategy); - - // run - assertEquals(strategy.getSecurityGroupsForTagAndOptions(region, group, options), returnVal); - - // verify mocks - verify(options); - verifyStrategy(strategy); - } - - public void testGetSecurityGroupsForTagAndOptions_createsNewGroupByDefaultWhenPortsAreSpecifiedWhenDoesntExist() - throws ExecutionException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String generatedMarkerGroup = "jclouds#group"; - Set<String> groupIds = ImmutableSet.<String> of(); - int[] ports = { 22, 80 }; - boolean shouldAuthorizeSelf = true; - Set<String> returnVal = ImmutableSet.<String> of(generatedMarkerGroup); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - - // setup expectations - expect(options.getGroups()).andReturn(groupIds).atLeastOnce(); - expect(options.getInboundPorts()).andReturn(ports).atLeastOnce(); - RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup, - ports, shouldAuthorizeSelf); - expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup); - - // replay mocks - replay(options); - replayStrategy(strategy); - - // run - assertEquals(strategy.getSecurityGroupsForTagAndOptions(region, group, options), returnVal); - - // verify mocks - verify(options); - verifyStrategy(strategy); - } - - public void testGetSecurityGroupsForTagAndOptions_reusesGroupByDefaultWhenNoPortsAreSpecifiedWhenDoesExist() - throws ExecutionException { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String generatedMarkerGroup = "jclouds#group"; - Set<String> groupIds = ImmutableSet.<String> of(); - int[] ports = {}; - boolean shouldAuthorizeSelf = true; - Set<String> returnVal = ImmutableSet.<String> of(generatedMarkerGroup); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - - // setup expectations - expect(options.getGroups()).andReturn(groupIds).atLeastOnce(); - expect(options.getInboundPorts()).andReturn(ports).atLeastOnce(); - RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup, - ports, shouldAuthorizeSelf); - expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)).andReturn(generatedMarkerGroup); - - // replay mocks - replay(options); - replayStrategy(strategy); - - // run - assertEquals(strategy.getSecurityGroupsForTagAndOptions(region, group, options), returnVal); - - // verify mocks - verify(options); - verifyStrategy(strategy); - } - - public void testGetSecurityGroupsForTagAndOptions_reusesGroupByDefaultWhenNoPortsAreSpecifiedWhenDoesExistAndAcceptsUserSuppliedGroups() { - // setup constants - String region = Region.AP_SOUTHEAST_1; - String group = "group"; - String generatedMarkerGroup = "jclouds#group"; - Set<String> groupIds = ImmutableSet.<String> of("group1", "group2"); - int[] ports = {}; - boolean shouldAuthorizeSelf = true; - boolean groupExisted = true; - Set<String> returnVal = ImmutableSet.<String> of("group1", "group2"); - - // create mocks - CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy = setupStrategy(); - EC2TemplateOptions options = createMock(EC2TemplateOptions.class); - - // setup expectations - expect(options.getGroups()).andReturn(groupIds).atLeastOnce(); -// RegionNameAndIngressRules regionNameAndIngressRules = new RegionNameAndIngressRules(region, generatedMarkerGroup, -// ports, shouldAuthorizeSelf); -// -// expect(strategy.securityGroupMap.getUnchecked(regionNameAndIngressRules)) -// .andReturn(groupExisted ? "group" : null); - - // replay mocks - replay(options); - replayStrategy(strategy); - - // run - assertEquals(strategy.getSecurityGroupsForTagAndOptions(region, group, options), returnVal); - - // verify mocks - verify(options); - verifyStrategy(strategy); - } - - private void verifyStrategy(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy) { - verify(strategy.makeKeyPair); - verify(strategy.credentialsMap); - verify(strategy.securityGroupMap); - } - - @SuppressWarnings("unchecked") - private CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions setupStrategy() { - Function<RegionAndName, KeyPair> makeKeyPair = createMock(Function.class); - ConcurrentMap<RegionAndName, KeyPair> credentialsMap = createMock(ConcurrentMap.class); - LoadingCache<RegionAndName, String> securityGroupMap = createMock(LoadingCache.class); - GroupNamingConvention.Factory namingConventionFactory = createMock(GroupNamingConvention.Factory.class); - GroupNamingConvention namingConvention = createMock(GroupNamingConvention.class); - expect(namingConventionFactory.create()).andReturn(namingConvention).anyTimes(); - expect(namingConvention.sharedNameForGroup("group")).andReturn("jclouds#group").anyTimes(); - replay(namingConventionFactory); - replay(namingConvention); - - return new CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions(makeKeyPair, credentialsMap, - securityGroupMap, OPTIONS_PROVIDER, namingConventionFactory); - } - - private void replayStrategy(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions strategy) { - replay(strategy.makeKeyPair); - replay(strategy.credentialsMap); - replay(strategy.securityGroupMap); - } - -}
