package com.baeldung.dockerapi; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.command.InspectImageResponse; import com.github.dockerjava.api.model.Image; import com.github.dockerjava.api.model.SearchItem; import com.github.dockerjava.core.DockerClientBuilder; import com.github.dockerjava.core.command.BuildImageResultCallback; import com.github.dockerjava.core.command.PullImageResultCallback; import com.github.dockerjava.core.command.PushImageResultCallback; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.util.List; import java.util.concurrent.TimeUnit; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.lessThan; import static org.hamcrest.Matchers.not; import static org.hamcrest.core.Is.is; public class ImageLiveTest { private static DockerClient dockerClient; @BeforeClass public static void setup() { dockerClient = DockerClientBuilder.getInstance().build(); } @Test public void whenListingImages_thenReturnNonEmptyList() { //when List images = dockerClient.listImagesCmd().exec(); //then assertThat(images.size(), is(not(0))); } @Test public void whenListingImagesWithIntermediateImages_thenReturnNonEmptyList() { //when List images = dockerClient.listImagesCmd() .withShowAll(true).exec(); //then assertThat(images.size(), is(not(0))); } @Test public void whenListingDanglingImages_thenReturnNonNullList() { //when List images = dockerClient.listImagesCmd() .withDanglingFilter(true).exec(); //then assertThat(images, is(not(null))); } @Test public void whenBuildingImage_thenMustReturnImageId() { //when String imageId = dockerClient.buildImageCmd() .withDockerfile(new File("src/test/resources/dockerapi/Dockerfile")) .withPull(true) .withNoCache(true) .withTag("alpine:git") .exec(new BuildImageResultCallback()) .awaitImageId(); //then assertThat(imageId, is(not(null))); } @Test public void givenListOfImages_whenInspectImage_thenMustReturnObject() { //given List images = dockerClient.listImagesCmd().exec(); Image image = images.get(0); //when InspectImageResponse imageResponse = dockerClient.inspectImageCmd(image.getId()).exec(); //then assertThat(imageResponse.getId(), is(image.getId())); } @Test public void givenListOfImages_whenTagImage_thenListMustIncrement() { //given List images = dockerClient.listImagesCmd().exec(); Image image = images.get(0); //when dockerClient.tagImageCmd(image.getId(), "baeldung/alpine", "3.6.v2").exec(); //then List imagesNow = dockerClient.listImagesCmd().exec(); assertThat(imagesNow.size(), is(greaterThan(images.size()))); } public void pushingAnImage() throws InterruptedException { dockerClient.pushImageCmd("baeldung/alpine") .withTag("3.6.v2") .exec(new PushImageResultCallback()) .awaitCompletion(90, TimeUnit.SECONDS); } @Test public void whenPullingImage_thenImageListNotEmpty() throws InterruptedException { //when dockerClient.pullImageCmd("alpine") .withTag("latest") .exec(new PullImageResultCallback()) .awaitCompletion(30, TimeUnit.SECONDS); //then List images = dockerClient.listImagesCmd().exec(); assertThat(images.size(), is(not(0))); } @Test public void whenRemovingImage_thenImageListDecrease() { //when List images = dockerClient.listImagesCmd().exec(); Image image = images.get(0); dockerClient.removeImageCmd(image.getId()).exec(); //then List imagesNow = dockerClient.listImagesCmd().exec(); assertThat(imagesNow.size(), is(lessThan(images.size()))); } @Test public void whenSearchingImage_thenMustReturn25Items() { //when List items = dockerClient.searchImagesCmd("Java").exec(); //then assertThat(items.size(), is(25)); } }