package core.aws.resource.ec2; import com.amazonaws.services.ec2.model.ImageState; import core.aws.resource.image.Image; import core.aws.task.ec2.DeleteImageTask; import core.aws.util.StreamHelper; import core.aws.workflow.Tasks; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; /** * @author neo */ public class ImageTest { Image image; @Before public void createAMI() { image = new Image("test"); } @Test public void nextVersionWithoutRemoteImages() { assertThat(image.nextVersion(), equalTo(1)); } @Test public void nextVersion() { image.remoteImages.put(1, new com.amazonaws.services.ec2.model.Image().withName("image1")); image.remoteImages.put(3, new com.amazonaws.services.ec2.model.Image().withName("image3")); image.remoteImages.put(2, new com.amazonaws.services.ec2.model.Image().withName("image2")); assertThat(image.nextVersion(), equalTo(4)); } @Test public void deleteOldAMI() { image.remoteImages.put(1, new com.amazonaws.services.ec2.model.Image().withName("image1").withState(ImageState.Available)); image.remoteImages.put(2, new com.amazonaws.services.ec2.model.Image().withName("image2").withState(ImageState.Available)); image.remoteImages.put(5, new com.amazonaws.services.ec2.model.Image().withName("image5").withState(ImageState.Available)); image.remoteImages.put(3, new com.amazonaws.services.ec2.model.Image().withName("image3").withState(ImageState.Available)); image.remoteImages.put(4, new com.amazonaws.services.ec2.model.Image().withName("image4").withState(ImageState.Available)); Tasks tasks = new Tasks(); image.bakeTasks(tasks, false); assertThat(tasks.size(), equalTo(2)); DeleteImageTask task = (DeleteImageTask) tasks.stream().filter(t -> t instanceof DeleteImageTask).reduce(StreamHelper.onlyOne()).get(); assertThat(task.deletedImage.getName(), equalTo("image1")); } }