156 lines
4.4 KiB
Java
156 lines
4.4 KiB
Java
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<Image> images = dockerClient.listImagesCmd().exec();
|
|
|
|
//then
|
|
assertThat(images.size(), is(not(0)));
|
|
}
|
|
|
|
@Test
|
|
public void whenListingImagesWithIntermediateImages_thenReturnNonEmptyList() {
|
|
|
|
//when
|
|
List<Image> images = dockerClient.listImagesCmd()
|
|
.withShowAll(true).exec();
|
|
|
|
//then
|
|
assertThat(images.size(), is(not(0)));
|
|
}
|
|
|
|
@Test
|
|
public void whenListingDanglingImages_thenReturnNonNullList() {
|
|
|
|
//when
|
|
List<Image> 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<Image> 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<Image> images = dockerClient.listImagesCmd().exec();
|
|
Image image = images.get(0);
|
|
|
|
//when
|
|
dockerClient.tagImageCmd(image.getId(), "baeldung/alpine", "3.6.v2").exec();
|
|
|
|
//then
|
|
List<Image> 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<Image> images = dockerClient.listImagesCmd().exec();
|
|
assertThat(images.size(), is(not(0)));
|
|
}
|
|
|
|
@Test
|
|
public void whenRemovingImage_thenImageListDecrease() {
|
|
|
|
//when
|
|
List<Image> images = dockerClient.listImagesCmd().exec();
|
|
Image image = images.get(0);
|
|
dockerClient.removeImageCmd(image.getId()).exec();
|
|
|
|
//then
|
|
List<Image> imagesNow = dockerClient.listImagesCmd().exec();
|
|
assertThat(imagesNow.size(), is(lessThan(images.size())));
|
|
}
|
|
|
|
@Test
|
|
public void whenSearchingImage_thenMustReturn25Items() {
|
|
|
|
//when
|
|
List<SearchItem> items = dockerClient.searchImagesCmd("Java").exec();
|
|
|
|
//then
|
|
assertThat(items.size(), is(25));
|
|
}
|
|
}
|