/** * Licensed to jclouds, Inc. (jclouds) under one or more * contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. jclouds 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.aws.ec2.parse; import static org.testng.Assert.assertEquals; import java.io.InputStream; import java.util.Set; import org.jclouds.aws.ec2.domain.AWSRunningInstance; import org.jclouds.aws.ec2.domain.MonitoringState; import org.jclouds.aws.ec2.xml.AWSDescribeInstancesResponseHandler; import org.jclouds.date.DateService; import org.jclouds.ec2.domain.Attachment; import org.jclouds.ec2.domain.BlockDevice; import org.jclouds.ec2.domain.Hypervisor; import org.jclouds.ec2.domain.InstanceState; import org.jclouds.ec2.domain.Reservation; import org.jclouds.ec2.domain.RootDeviceType; import org.jclouds.ec2.domain.RunningInstance; import org.jclouds.ec2.xml.BaseEC2HandlerTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import com.google.common.collect.ImmutableSet; /** * Tests behavior of {@code AWSDescribeInstancesResponseHandler} * * @author Adrian Cole */ // NOTE:without testName, this will not call @Before* and fail w/NPE during // surefire @Test(groups = "unit", testName = "AWSDescribeInstancesResponseHandlerTest") public class DescribeInstancesResponseTest extends BaseEC2HandlerTest { private DateService dateService; @BeforeTest @Override protected void setUpInjector() { super.setUpInjector(); dateService = injector.getInstance(DateService.class); assert dateService != null; } public void test() { InputStream is = getClass().getResourceAsStream("/describe_instances_pending.xml"); Set<Reservation<AWSRunningInstance>> expected = expected(); AWSDescribeInstancesResponseHandler handler = injector.getInstance(AWSDescribeInstancesResponseHandler.class); Set<Reservation<? extends RunningInstance>> result = factory.create(handler).parse(is); assertEquals(result.toString(), expected.toString()); } public Set<Reservation<AWSRunningInstance>> expected() { return ImmutableSet.of(Reservation.<AWSRunningInstance>builder() .region(defaultRegion) .reservationId("r-3f056a58") .ownerId("095072994936") // <groupId>sg-f788299f</groupId> .groupName("launchpad_sec_group") // <groupId>sg-7e512116</groupId> .groupName("jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae") .instance(AWSRunningInstance.builder() .region(defaultRegion) .instanceId("i-32451248") .imageId("ami-bf8131d6") .rawState("pending") .instanceState(InstanceState.PENDING) .privateDnsName("ip-10-194-149-220.ec2.internal") .dnsName("ec2-23-20-17-42.compute-1.amazonaws.com") .keyName("jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae#105") .amiLaunchIndex("0") .instanceType("c1.medium") .launchTime(dateService.iso8601DateParse("2012-09-14T20:01:34.000Z")) .availabilityZone("us-east-1d") // .tenancy("default") .kernelId("aki-825ea7eb") .monitoringState(MonitoringState.DISABLED) .privateIpAddress("10.194.149.220") .ipAddress("23.20.17.42") .securityGroupIdToName("sg-f788299f", "launchpad_sec_group") .securityGroupIdToName("sg-7e512116", "jclouds#4c858090-f66c-4225-aa57-6fcaa42198ae") // .architecture("x86_64") .rootDeviceType(RootDeviceType.EBS) .rootDeviceName("/dev/sda1") .device("/dev/sda1", new BlockDevice("vol-b2beb3c9", Attachment.Status.ATTACHING, dateService.iso8601DateParse("2012-09-14T20:01:37.000Z"), true)) .virtualizationType("paravirtual") .tag("Name", "4c858090-f66c-4225-aa57-6fcaa42198ae-32451248") .hypervisor(Hypervisor.XEN) .build()).build()); } }