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/features/InstanceApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiLiveTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiLiveTest.java deleted file mode 100644 index 6b7818a..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiLiveTest.java +++ /dev/null @@ -1,97 +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.features; - -import static com.google.common.collect.Iterables.getFirst; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.util.Set; - -import org.jclouds.aws.AWSResponseException; -import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.domain.Reservation; -import org.jclouds.ec2.domain.RunningInstance; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; - -/** - * Tests behavior of {@code EC2Api} - * - * @author Adrian Cole, Andrew Bayer - */ -@Test(groups = "live", singleThreaded = true, testName = "InstanceApiLiveTest") -public class InstanceApiLiveTest extends BaseComputeServiceContextLiveTest { - public InstanceApiLiveTest() { - provider = "ec2"; - } - - private EC2Api ec2Api; - private InstanceApi client; - - @Override - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - ec2Api = view.unwrapApi(EC2Api.class); - client = ec2Api.getInstanceApi().get(); - } - - @Test - void testDescribeInstances() { - for (String region : ec2Api.getConfiguredRegions()) { - Set<? extends Reservation<? extends RunningInstance>> allResults = client.describeInstancesInRegion(region); - assertNotNull(allResults); - } - } - - @Test - void testFilterInstances() { - for (String region : view.unwrapApi(EC2Api.class).getAvailabilityZoneAndRegionApi().get().describeRegions().keySet()) { - Set<? extends Reservation<? extends RunningInstance>> allResults = client.describeInstancesInRegion(region); - assertNotNull(allResults); - - if (!allResults.isEmpty()) { - RunningInstance instance = getFirst(getFirst(allResults, null), null); - - assertNotNull(instance); - - Set<? extends Reservation<? extends RunningInstance>> filterResults = client.describeInstancesInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("key-name", instance.getKeyName()) - .build()); - - assertNotNull(filterResults); - assertTrue(!filterResults.isEmpty(), "No results found for filter, but there should be."); - - } - } - } - - @Test(expectedExceptions = AWSResponseException.class) - void testInvalidFilterInstances() { - for (String region : view.unwrapApi(EC2Api.class).getAvailabilityZoneAndRegionApi().get().describeRegions().keySet()) { - Set<? extends Reservation<? extends RunningInstance>> filterResults = client.describeInstancesInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("invalid-key", "some-value") - .build()); - - } - }}
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/features/InstanceApiTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiTest.java deleted file mode 100644 index fbeb57a..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/InstanceApiTest.java +++ /dev/null @@ -1,593 +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.features; - -import static org.jclouds.reflect.Reflection2.method; - -import java.io.IOException; -import java.util.Map; - -import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404; -import org.jclouds.ec2.domain.BlockDevice; -import org.jclouds.ec2.domain.InstanceType; -import org.jclouds.ec2.domain.Volume.InstanceInitiatedShutdownBehavior; -import org.jclouds.ec2.options.RunInstancesOptions; -import org.jclouds.ec2.xml.BlockDeviceMappingHandler; -import org.jclouds.ec2.xml.BooleanValueHandler; -import org.jclouds.ec2.xml.DescribeInstancesResponseHandler; -import org.jclouds.ec2.xml.GetConsoleOutputResponseHandler; -import org.jclouds.ec2.xml.InstanceInitiatedShutdownBehaviorHandler; -import org.jclouds.ec2.xml.InstanceStateChangeHandler; -import org.jclouds.ec2.xml.InstanceTypeHandler; -import org.jclouds.ec2.xml.RunInstancesResponseHandler; -import org.jclouds.ec2.xml.StringValueHandler; -import org.jclouds.ec2.xml.UnencodeStringValueHandler; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.functions.ParseSax; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.reflect.Invokable; -/** - * Tests behavior of {@code InstanceApi} - * - * @author Adrian Cole - */ -// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire -@Test(groups = "unit", testName = "InstanceApiTest") -public class InstanceApiTest extends BaseEC2ApiTest<InstanceApi> { - public void testDescribeInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "describeInstancesInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList((String) null)); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DescribeInstances", "application/x-www-form-urlencoded", - false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, DescribeInstancesResponseHandler.class); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(request); - } - - public void testDescribeInstancesArgs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "describeInstancesInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DescribeInstances&InstanceId.1=1&InstanceId.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, DescribeInstancesResponseHandler.class); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(request); - } - - public void testTerminateInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "terminateInstancesInRegion", String.class, - String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=TerminateInstances&InstanceId.1=1&InstanceId.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, InstanceStateChangeHandler.class); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(request); - } - - public void testRunInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "runInstancesInRegion", String.class, String.class, - String.class, int.class, int.class, RunInstancesOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, null, "ami-voo", 1, 1)); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - try { - assertPayloadEquals(request, "Action=RunInstances&ImageId=ami-voo&MinCount=1&MaxCount=1", - "application/x-www-form-urlencoded", false); - } catch (AssertionError e) { - // mvn 3.0 osx 10.6.5 somehow sorts differently - assertPayloadEquals(request, "Action=RunInstances&ImageId=ami-voo&MaxCount=1&MinCount=1", - "application/x-www-form-urlencoded", false); - } - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, RunInstancesResponseHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testRunInstancesOptions() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "runInstancesInRegion", String.class, String.class, - String.class, int.class, int.class, RunInstancesOptions[].class); - GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of("eu-west-1", "eu-west-1a", "ami-voo", - 1, 5, new RunInstancesOptions().withKernelId("kernelId").withSecurityGroups("group1", "group2"))); - - assertRequestLineEquals(request, "POST https://ec2.eu-west-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.eu-west-1.amazonaws.com\n"); - try { - assertPayloadEquals( - request, - "Action=RunInstances&ImageId=ami-voo&MinCount=1&MaxCount=5&KernelId=kernelId&SecurityGroup.1=group1&SecurityGroup.2=group2&Placement.AvailabilityZone=eu-west-1a", - "application/x-www-form-urlencoded", false); - } catch (AssertionError e) { - // mvn 3.0 osx 10.6.5 somehow sorts differently - assertPayloadEquals( - request, - "Action=RunInstances&ImageId=ami-voo&MaxCount=5&MinCount=1&KernelId=kernelId&SecurityGroup.1=group1&SecurityGroup.2=group2&Placement.AvailabilityZone=eu-west-1a", - "application/x-www-form-urlencoded", false); - } - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, RunInstancesResponseHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testStopInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "stopInstancesInRegion", String.class, boolean.class, - String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, true, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=StopInstances&Force=true&InstanceId.1=1&InstanceId.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, InstanceStateChangeHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testRebootInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "rebootInstancesInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=RebootInstances&InstanceId.1=1&InstanceId.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testStartInstances() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "startInstancesInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=StartInstances&InstanceId.1=1&InstanceId.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, InstanceStateChangeHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetUserDataForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getUserDataForInstanceInRegion", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=userData&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, UnencodeStringValueHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetRootDeviceNameForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getRootDeviceNameForInstanceInRegion", String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=rootDeviceName&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, StringValueHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetRamdiskForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getRamdiskForInstanceInRegion", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=ramdisk&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, StringValueHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetDisableApiTerminationForInstanceInRegion() throws SecurityException, NoSuchMethodException, - IOException { - Invokable<?, ?> method = method(InstanceApi.class, "isApiTerminationDisabledForInstanceInRegion", String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=disableApiTermination&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, BooleanValueHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetKernelForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getKernelForInstanceInRegion", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DescribeInstanceAttribute&Attribute=kernel&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, StringValueHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetInstanceTypeForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getInstanceTypeForInstanceInRegion", String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=instanceType&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, InstanceTypeHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetInstanceInitiatedShutdownBehaviorForInstanceInRegion() throws SecurityException, - NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getInstanceInitiatedShutdownBehaviorForInstanceInRegion", - String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals( - request, - "Action=DescribeInstanceAttribute&Attribute=instanceInitiatedShutdownBehavior&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, InstanceInitiatedShutdownBehaviorHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testGetBlockDeviceMappingForInstanceInRegion() throws SecurityException, NoSuchMethodException, - IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getBlockDeviceMappingForInstanceInRegion", String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=DescribeInstanceAttribute&Attribute=blockDeviceMapping&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, BlockDeviceMappingHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setUserDataForInstance = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "userData") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "SfxT/1i/WokibleyEHo0zHizHisLzbDzzRxfOdnr1vY%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "dGVzdA%3D%3D") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetUserDataForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setUserDataForInstanceInRegion", String.class, String.class, - byte[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "test".getBytes())); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, setUserDataForInstance.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setRamdiskForInstance = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "ramdisk") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "aMQzFsknmQt1OA8Rb8aIzZoFXGK23UvrMIy8imNVUeQ%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "test") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetRamdiskForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setRamdiskForInstanceInRegion", String.class, String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "test")); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, setRamdiskForInstance.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setKernelForInstance = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "kernel") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "GaQ9sC0uXHlN5JAMWQpYx%2Bc3XaF38qZgJex/kyqdR1E%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "test") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetKernelForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setKernelForInstanceInRegion", String.class, String.class, - String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "test")); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, setKernelForInstance.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setApiTerminationDisabled = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "disableApiTermination") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "hErzi%2Bf4jBADviJ%2BLVTTGhlHWhMR/pyPUSBZgaHC79I%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "true") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetApiTerminationDisabledForInstanceInRegion() throws SecurityException, NoSuchMethodException, - IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setApiTerminationDisabledForInstanceInRegion", String.class, - String.class, boolean.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", true)); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, setApiTerminationDisabled.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest instanceTypeForInstance = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "instanceType") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "OYJQ1w79NoxkcrawNK6U71k3Wl78kqz2ikzTXmQCX2E%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "c1.medium") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetInstanceTypeForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setInstanceTypeForInstanceInRegion", String.class, - String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", InstanceType.C1_MEDIUM)); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, instanceTypeForInstance.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setInstanceInitiatedShutdownBehavior = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("Attribute", "instanceInitiatedShutdownBehavior") - .addFormParam("InstanceId", "1") - .addFormParam("Signature", "2Tgi9M9AcCv5Y%2BEXwq0SD6g8bBGtPPEgjdTtfdGZQlI%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2009-11-08T15%3A54%3A08.897Z") - .addFormParam("Value", "terminate") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testSetInstanceInitiatedShutdownBehaviorForInstanceInRegion() throws SecurityException, - NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setInstanceInitiatedShutdownBehaviorForInstanceInRegion", - String.class, String.class, InstanceInitiatedShutdownBehavior.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", InstanceInitiatedShutdownBehavior.TERMINATE)); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, setInstanceInitiatedShutdownBehavior.getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - HttpRequest setBlockDeviceMapping = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "ModifyInstanceAttribute") - .addFormParam("BlockDeviceMapping.1.DeviceName", "/dev/sda1") - .addFormParam("BlockDeviceMapping.1.Ebs.DeleteOnTermination", "true") - .addFormParam("BlockDeviceMapping.1.Ebs.VolumeId", "vol-test1") - .addFormParam("InstanceId", "1").build(); - - public void testSetBlockDeviceMappingForInstanceInRegion() throws SecurityException, NoSuchMethodException, - IOException { - Invokable<?, ?> method = method(InstanceApi.class, "setBlockDeviceMappingForInstanceInRegion", String.class, - String.class, Map.class); - - Map<String, BlockDevice> mapping = Maps.newLinkedHashMap(); - mapping.put("/dev/sda1", new BlockDevice("vol-test1", true)); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", mapping)); - - request = (GeneratedHttpRequest) request.getFilters().get(0).filter(request); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, filter.filter(setBlockDeviceMapping).getPayload().getRawContent().toString(), - "application/x-www-form-urlencoded", false); - - - checkFilters(request); - } - - public void testGetConsoleOutputForInstanceInRegion() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(InstanceApi.class, "getConsoleOutputForInstanceInRegion", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, - "Action=GetConsoleOutput&InstanceId=1", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, GetConsoleOutputResponseHandler.class); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } -} 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/features/KeyPairApiExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiExpectTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiExpectTest.java deleted file mode 100644 index 8c1c3d8..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiExpectTest.java +++ /dev/null @@ -1,76 +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.features; - -import static com.google.common.collect.Iterables.getOnlyElement; -import static org.testng.Assert.assertEquals; - -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.domain.KeyPair; -import org.jclouds.ec2.internal.BaseEC2ApiExpectTest; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; - -/** - * @author Andrew Bayer - */ -@Test(groups = "unit", testName = "KeyPairApiExpectTest") -public class KeyPairApiExpectTest extends BaseEC2ApiExpectTest<EC2Api> { - - HttpRequest filter = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "DescribeKeyPairs") - .addFormParam("Filter.1.Name", "key-name") - .addFormParam("Filter.1.Value.1", "gsg-keypair") - .addFormParam("Signature", "xg8vGx%2Bv9UEG0%2BFGy%2BhincdI2ziWLbwPJvW85l%2Bvqwg%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2012-04-16T15%3A54%3A08.897Z") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testFilterWhenResponseIs2xx() { - HttpResponse filterResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType("/describe_keypairs.xml", "text/xml")).build(); - - EC2Api apiWhenExist = requestsSendResponses(describeRegionsRequest, describeRegionsResponse, filter, filterResponse); - - KeyPair keyPair = getOnlyElement(apiWhenExist.getKeyPairApi().get().describeKeyPairsInRegionWithFilter("us-east-1", - ImmutableMultimap.<String, String>builder() - .put("key-name", "gsg-keypair") - .build())); - - assertEquals(keyPair.getKeyName(), "gsg-keypair"); - } - - public void testFilterWhenResponseIs404() { - HttpResponse filterResponse = HttpResponse.builder().statusCode(404).build(); - - EC2Api apiWhenNotExist = requestsSendResponses(describeRegionsRequest, describeRegionsResponse, filter, filterResponse); - - assertEquals(apiWhenNotExist.getKeyPairApi().get().describeKeyPairsInRegionWithFilter("us-east-1", - ImmutableMultimap.<String, String>builder() - .put("key-name", "gsg-keypair") - .build()), - ImmutableSet.of()); - } -} 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/features/KeyPairApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiLiveTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiLiveTest.java deleted file mode 100644 index b9219a5..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiLiveTest.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.features; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -import java.util.Set; -import java.util.SortedSet; - -import org.jclouds.aws.AWSResponseException; -import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.domain.KeyPair; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Sets; - -/** - * Tests behavior of {@code KeyPairApi} - * - * @author Adrian Cole - */ -@Test(groups = "live", singleThreaded = true, testName = "KeyPairApiLiveTest") -public class KeyPairApiLiveTest extends BaseComputeServiceContextLiveTest { - public KeyPairApiLiveTest() { - provider = "ec2"; - } - - private EC2Api ec2Api; - private KeyPairApi client; - - @Override - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - ec2Api = view.unwrapApi(EC2Api.class); - client = ec2Api.getKeyPairApi().get(); - } - - @Test - void testDescribeKeyPairs() { - for (String region : ec2Api.getConfiguredRegions()) { - SortedSet<KeyPair> allResults = Sets.newTreeSet(client.describeKeyPairsInRegion(region)); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - KeyPair pair = allResults.last(); - SortedSet<KeyPair> result = Sets.newTreeSet(client.describeKeyPairsInRegion(region, pair.getKeyName())); - assertNotNull(result); - KeyPair compare = result.last(); - assertEquals(compare, pair); - } - } - } - - @Test - void testDescribeKeyPairsWithFilter() { - for (String region : ec2Api.getConfiguredRegions()) { - SortedSet<KeyPair> allResults = Sets.newTreeSet(client.describeKeyPairsInRegion(region)); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - KeyPair pair = allResults.last(); - SortedSet<KeyPair> result = Sets.newTreeSet(client.describeKeyPairsInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("key-name", pair.getKeyName()).build())); - assertNotNull(result); - KeyPair compare = result.last(); - assertEquals(compare, pair); - } - } - } - - @Test(expectedExceptions = AWSResponseException.class) - void testDescribeKeyPairsWithInvalidFilter() { - for (String region : ec2Api.getConfiguredRegions()) { - SortedSet<KeyPair> allResults = Sets.newTreeSet(client.describeKeyPairsInRegion(region)); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - KeyPair pair = allResults.last(); - SortedSet<KeyPair> result = Sets.newTreeSet(client.describeKeyPairsInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("invalid-filter", pair.getKeyName()).build())); - } - } - } - - public static final String PREFIX = System.getProperty("user.name") + "-ec2"; - - @Test - void testCreateKeyPair() { - String keyName = PREFIX + "1"; - try { - client.deleteKeyPairInRegion(null, keyName); - } catch (Exception e) { - - } - client.deleteKeyPairInRegion(null, keyName); - - KeyPair result = client.createKeyPairInRegion(null, keyName); - assertNotNull(result); - assertNotNull(result.getKeyMaterial()); - assertNotNull(result.getSha1OfPrivateKey()); - assertEquals(result.getKeyName(), keyName); - - Set<KeyPair> twoResults = Sets.newLinkedHashSet(client.describeKeyPairsInRegion(null, keyName)); - assertNotNull(twoResults); - assertEquals(twoResults.size(), 1); - KeyPair listPair = twoResults.iterator().next(); - assertEquals(listPair.getKeyName(), result.getKeyName()); - assertEquals(listPair.getSha1OfPrivateKey(), result.getSha1OfPrivateKey()); - } - - @AfterClass(groups = { "integration", "live" }) - @Override - protected void tearDownContext() { - String keyName = PREFIX + "1"; - try { - client.deleteKeyPairInRegion(null, keyName); - } catch (Exception e) { - - } - - super.tearDownContext(); - } - -} 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/features/KeyPairApiTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiTest.java deleted file mode 100644 index 1d42076..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/KeyPairApiTest.java +++ /dev/null @@ -1,88 +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.features; - -import static org.jclouds.reflect.Reflection2.method; - -import java.io.IOException; - -import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404; -import org.jclouds.ec2.xml.DescribeKeyPairsResponseHandler; -import org.jclouds.http.functions.ParseSax; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.testng.annotations.Test; - -import com.google.common.collect.Lists; -import com.google.common.reflect.Invokable; -/** - * Tests behavior of {@code KeyPairApi} - * - * @author Adrian Cole - */ -// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire -@Test(groups = "unit", testName = "KeyPairApiTest") -public class KeyPairApiTest extends BaseEC2ApiTest<KeyPairApi> { - - public void testDeleteKeyPair() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(KeyPairApi.class, "deleteKeyPairInRegion", String.class, String.class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "mykey")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DeleteKeyPair&KeyName=mykey", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, null); - - checkFilters(request); - } - - public void testDescribeKeyPairs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(KeyPairApi.class, "describeKeyPairsInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList((String) null)); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DescribeKeyPairs", "application/x-www-form-urlencoded", - false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, DescribeKeyPairsResponseHandler.class); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(request); - } - - public void testDescribeKeyPairsArgs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(KeyPairApi.class, "describeKeyPairsInRegion", String.class, String[].class); - GeneratedHttpRequest request = processor.createRequest(method, Lists.<Object> newArrayList(null, "1", "2")); - - assertRequestLineEquals(request, "POST https://ec2.us-east-1.amazonaws.com/ HTTP/1.1"); - assertNonPayloadHeadersEqual(request, "Host: ec2.us-east-1.amazonaws.com\n"); - assertPayloadEquals(request, "Action=DescribeKeyPairs&KeyName.1=1&KeyName.2=2", - "application/x-www-form-urlencoded", false); - - assertResponseParserClassEquals(method, request, ParseSax.class); - assertSaxResponseParserClassEquals(method, DescribeKeyPairsResponseHandler.class); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(request); - } -} 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/features/SecurityGroupApiExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiExpectTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiExpectTest.java deleted file mode 100644 index 5bef06f..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiExpectTest.java +++ /dev/null @@ -1,76 +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.features; - -import static com.google.common.collect.Iterables.getOnlyElement; -import static org.testng.Assert.assertEquals; - -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.domain.SecurityGroup; -import org.jclouds.ec2.internal.BaseEC2ApiExpectTest; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; - -/** - * @author Andrew Bayer - */ -@Test(groups = "unit", testName = "SecurityGroupApiExpectTest") -public class SecurityGroupApiExpectTest extends BaseEC2ApiExpectTest<EC2Api> { - - HttpRequest filter = HttpRequest.builder().method("POST") - .endpoint("https://ec2.us-east-1.amazonaws.com/") - .addHeader("Host", "ec2.us-east-1.amazonaws.com") - .addFormParam("Action", "DescribeSecurityGroups") - .addFormParam("Filter.1.Name", "owner-id") - .addFormParam("Filter.1.Value.1", "993194456877") - .addFormParam("Signature", "zk8EEWkG9Hi0bBLPueF9WdTUKapxQqUXgyJTxeZHXBc%3D") - .addFormParam("SignatureMethod", "HmacSHA256") - .addFormParam("SignatureVersion", "2") - .addFormParam("Timestamp", "2012-04-16T15%3A54%3A08.897Z") - .addFormParam("Version", "2010-08-31") - .addFormParam("AWSAccessKeyId", "identity").build(); - - public void testFilterWhenResponseIs2xx() { - HttpResponse filterResponse = HttpResponse.builder().statusCode(200) - .payload(payloadFromResourceWithContentType("/describe_securitygroups_extension_single.xml", "text/xml")).build(); - - EC2Api apiWhenExist = requestsSendResponses(describeRegionsRequest, describeRegionsResponse, filter, filterResponse); - - SecurityGroup group = getOnlyElement(apiWhenExist.getSecurityGroupApi().get().describeSecurityGroupsInRegionWithFilter("us-east-1", - ImmutableMultimap.<String, String>builder() - .put("owner-id", "993194456877") - .build())); - - assertEquals(group.getId(), "sg-3c6ef654"); - } - - public void testFilterWhenResponseIs404() { - HttpResponse filterResponse = HttpResponse.builder().statusCode(404).build(); - - EC2Api apiWhenNotExist = requestsSendResponses(describeRegionsRequest, describeRegionsResponse, filter, filterResponse); - - assertEquals(apiWhenNotExist.getSecurityGroupApi().get().describeSecurityGroupsInRegionWithFilter("us-east-1", - ImmutableMultimap.<String, String>builder() - .put("owner-id", "993194456877") - .build()), - ImmutableSet.of()); - } -} 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/features/SecurityGroupApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiLiveTest.java b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiLiveTest.java deleted file mode 100644 index edfc3ca..0000000 --- a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/test/java/org/jclouds/ec2/features/SecurityGroupApiLiveTest.java +++ /dev/null @@ -1,334 +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.features; - -import static com.google.common.base.Predicates.compose; -import static com.google.common.base.Predicates.in; -import static com.google.common.collect.Iterables.all; -import static com.google.common.collect.Iterables.getLast; -import static com.google.common.collect.Iterables.getOnlyElement; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.util.Set; - -import org.jclouds.aws.AWSResponseException; -import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest; -import org.jclouds.ec2.EC2Api; -import org.jclouds.ec2.domain.SecurityGroup; -import org.jclouds.ec2.domain.UserIdGroupPair; -import org.jclouds.net.domain.IpPermission; -import org.jclouds.net.domain.IpProtocol; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; - -/** - * Tests behavior of {@code SecurityGroupApi} - * - * @author Adrian Cole - */ -@Test(groups = "live", singleThreaded = true, testName = "SecurityGroupApiLiveTest") -public class SecurityGroupApiLiveTest extends BaseComputeServiceContextLiveTest { - public SecurityGroupApiLiveTest() { - provider = "ec2"; - } - - private EC2Api ec2Api; - protected SecurityGroupApi client; - - @Override - @BeforeClass(groups = { "integration", "live" }) - public void setupContext() { - super.setupContext(); - ec2Api = view.unwrapApi(EC2Api.class); - client = ec2Api.getSecurityGroupApi().get(); - } - - @Test - void testDescribe() { - for (String region : ec2Api.getConfiguredRegions()) { - Set<SecurityGroup> allResults = client.describeSecurityGroupsInRegion(region); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - final SecurityGroup group = getLast(allResults); - // in case there are multiple groups with the same name, which is the case with VPC - ImmutableSet<SecurityGroup> expected = FluentIterable.from(allResults) - .filter(new Predicate<SecurityGroup>() { - @Override - public boolean apply(SecurityGroup in) { - return group.getName().equals(in.getName()); - } - }).toSet(); - ImmutableSet<SecurityGroup> result = ImmutableSet.copyOf(client.describeSecurityGroupsInRegion(region, - group.getName())); - // the above command has a chance of returning less groups than the original - assertTrue(expected.containsAll(result), "group(s) for name not found"); - } - } - } - - @Test - void testFilter() { - for (String region : ec2Api.getConfiguredRegions()) { - Set<SecurityGroup> allResults = client.describeSecurityGroupsInRegion(region); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - final SecurityGroup group = getLast(allResults); - // in case there are multiple groups with the same name, which is the case with VPC - ImmutableSet<SecurityGroup> expected = FluentIterable.from(allResults) - .filter(new Predicate<SecurityGroup>() { - @Override - public boolean apply(SecurityGroup in) { - return group.getName().equals(in.getName()); - } - }).toSet(); - ImmutableSet<SecurityGroup> result = ImmutableSet.copyOf(client.describeSecurityGroupsInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("group-name", group.getName()).build())); - // the above command has a chance of returning less groups than the original - assertTrue(expected.containsAll(result), "group(s) for name not found"); - } - } - } - - @Test(expectedExceptions = AWSResponseException.class) - void testFilterInvalid() { - for (String region : ec2Api.getConfiguredRegions()) { - Set<SecurityGroup> allResults = client.describeSecurityGroupsInRegion(region); - assertNotNull(allResults); - if (!allResults.isEmpty()) { - final SecurityGroup group = getLast(allResults); - // in case there are multiple groups with the same name, which is the case with VPC - ImmutableSet<SecurityGroup> expected = FluentIterable.from(allResults) - .filter(new Predicate<SecurityGroup>() { - @Override - public boolean apply(SecurityGroup in) { - return group.getName().equals(in.getName()); - } - }).toSet(); - ImmutableSet<SecurityGroup> result = ImmutableSet.copyOf(client.describeSecurityGroupsInRegionWithFilter(region, - ImmutableMultimap.<String, String>builder() - .put("invalid-filter", group.getName()).build())); - } - } - } - - @Test - void testCreateSecurityGroup() { - String groupName = PREFIX + "1"; - cleanupAndSleep(groupName); - try { - String groupDescription = PREFIX + "1 description"; - client.deleteSecurityGroupInRegion(null, groupName); - client.createSecurityGroupInRegion(null, groupName, groupDescription); - verifySecurityGroup(groupName, groupDescription); - } finally { - client.deleteSecurityGroupInRegion(null, groupName); - } - } - - protected void cleanupAndSleep(String groupName) { - try { - client.deleteSecurityGroupInRegion(null, groupName); - Thread.sleep(2000); - } catch (Exception e) { - - } - } - - @Test - void testAuthorizeSecurityGroupIngressCidr() { - String groupName = PREFIX + "ingress"; - cleanupAndSleep(groupName); - try { - client.createSecurityGroupInRegion(null, groupName, groupName); - client.authorizeSecurityGroupIngressInRegion(null, groupName, IpProtocol.TCP, 80, 80, "0.0.0.0/0"); - assertEventually(new GroupHasPermission(client, groupName, new TCPPort80AllIPs())); - - client.revokeSecurityGroupIngressInRegion(null, groupName, IpProtocol.TCP, 80, 80, "0.0.0.0/0"); - assertEventually(new GroupHasNoPermissions(client, groupName)); - } finally { - client.deleteSecurityGroupInRegion(null, groupName); - } - } - - @Test - void testAuthorizeSecurityGroupIngressSourcePort() { - String groupName = PREFIX + "ingress"; - cleanupAndSleep(groupName); - try { - client.createSecurityGroupInRegion(null, groupName, groupName); - client.authorizeSecurityGroupIngressInRegion(null, groupName, IpProtocol.TCP, 80, 80, "0.0.0.0/0"); - assertEventually(new GroupHasPermission(client, groupName, new TCPPort80AllIPs())); - - client.revokeSecurityGroupIngressInRegion(null, groupName, IpProtocol.TCP, 80, 80, "0.0.0.0/0"); - assertEventually(new GroupHasNoPermissions(client, groupName)); - } finally { - client.deleteSecurityGroupInRegion(null, groupName); - } - } - - private void verifySecurityGroup(String groupName, String description) { - Set<SecurityGroup> oneResult = client.describeSecurityGroupsInRegion(null, groupName); - assertNotNull(oneResult); - assertEquals(oneResult.size(), 1); - SecurityGroup listPair = oneResult.iterator().next(); - assertEquals(listPair.getName(), groupName); - assertEquals(listPair.getDescription(), description); - } - - @Test - void testAuthorizeSecurityGroupIngressSourceGroup() { - final String group1Name = PREFIX + "ingress1"; - String group2Name = PREFIX + "ingress2"; - cleanupAndSleep(group2Name); - cleanupAndSleep(group1Name); - try { - client.createSecurityGroupInRegion(null, group1Name, group1Name); - client.createSecurityGroupInRegion(null, group2Name, group2Name); - ensureGroupsExist(group1Name, group2Name); - client.authorizeSecurityGroupIngressInRegion(null, group1Name, IpProtocol.TCP, 80, 80, "0.0.0.0/0"); - assertEventually(new GroupHasPermission(client, group1Name, new TCPPort80AllIPs())); - Set<SecurityGroup> oneResult = client.describeSecurityGroupsInRegion(null, group1Name); - assertNotNull(oneResult); - assertEquals(oneResult.size(), 1); - final SecurityGroup group = oneResult.iterator().next(); - assertEquals(group.getName(), group1Name); - final UserIdGroupPair to = new UserIdGroupPair(group.getOwnerId(), group1Name); - client.authorizeSecurityGroupIngressInRegion(null, group2Name, to); - assertEventually(new GroupHasPermission(client, group2Name, new Predicate<IpPermission>() { - @Override - public boolean apply(IpPermission arg0) { - return arg0.getTenantIdGroupNamePairs().equals(ImmutableMultimap.of(group.getOwnerId(), group1Name)); - } - })); - - client.revokeSecurityGroupIngressInRegion(null, group2Name, - new UserIdGroupPair(group.getOwnerId(), group1Name)); - assertEventually(new GroupHasNoPermissions(client, group2Name)); - } finally { - client.deleteSecurityGroupInRegion(null, group2Name); - client.deleteSecurityGroupInRegion(null, group1Name); - } - } - - public final class TCPPort80AllIPs implements Predicate<IpPermission> { - @Override - public boolean apply(IpPermission arg0) { - return arg0.getIpProtocol() == IpProtocol.TCP && arg0.getFromPort() == 80 && arg0.getToPort() == 80 - && arg0.getCidrBlocks().equals(ImmutableSet.of("0.0.0.0/0")); - } - } - - public static final class GroupHasPermission implements Runnable { - private final SecurityGroupApi client; - private final String group; - private final Predicate<IpPermission> permission; - - public GroupHasPermission(SecurityGroupApi client, String group, Predicate<IpPermission> permission) { - this.client = client; - this.group = group; - this.permission = permission; - } - - public void run() { - try { - Set<SecurityGroup> oneResult = client.describeSecurityGroupsInRegion(null, group); - assert all(getOnlyElement(oneResult), permission) : permission - + ": " + oneResult; - } catch (Exception e) { - throw new AssertionError(e); - } - } - } - - public static final class GroupHasNoPermissions implements Runnable { - private final SecurityGroupApi client; - private final String group; - - public GroupHasNoPermissions(SecurityGroupApi client, String group) { - this.client = client; - this.group = group; - } - - public void run() { - try { - Set<SecurityGroup> oneResult = client.describeSecurityGroupsInRegion(null, group); - assertNotNull(oneResult); - assertEquals(oneResult.size(), 1); - SecurityGroup listPair = oneResult.iterator().next(); - assertEquals(listPair.size(), 0); - } catch (Exception e) { - throw new AssertionError(e); - } - } - } - - protected void ensureGroupsExist(String group1Name, String group2Name) { - Set<SecurityGroup> twoResults = client.describeSecurityGroupsInRegion(null, group1Name, group2Name); - assertNotNull(twoResults); - assertTrue(twoResults.size() >= 2);// in VPC could be multiple groups with the same name - - assertTrue(all(twoResults, compose(in(ImmutableSet.of(group1Name, group2Name)), - new Function<SecurityGroup, String>() { - @Override - public String apply(SecurityGroup in) { - return in.getName(); - } - }))); - } - - private static final int INCONSISTENCY_WINDOW = 5000; - - /** - * Due to eventual consistency, container commands may not return correctly - * immediately. Hence, we will try up to the inconsistency window to see if - * the assertion completes. - */ - protected static void assertEventually(Runnable assertion) { - long start = System.currentTimeMillis(); - AssertionError error = null; - for (int i = 0; i < 30; i++) { - try { - assertion.run(); - if (i > 0) - System.err.printf("%d attempts and %dms asserting %s%n", i + 1, System.currentTimeMillis() - start, - assertion.getClass().getSimpleName()); - return; - } catch (AssertionError e) { - error = e; - } - try { - Thread.sleep(INCONSISTENCY_WINDOW / 30); - } catch (InterruptedException e) { - } - } - if (error != null) - throw error; - - } - - public static final String PREFIX = System.getProperty("user.name") + "-ec2"; - -}
