diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-11-10 21:34:14 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-11-11 12:29:17 +0100 |
commit | 62e75d484add5efa87ffecb063d05cdb6a5f3585 (patch) | |
tree | 935d6f2cbbe5f4209ecc4b3afbb34ec78dd65191 /node-admin/src/test/java | |
parent | 1ceb982f59439e283e64b684a80256e97a740691 (diff) |
Remove parentId from Image
Diffstat (limited to 'node-admin/src/test/java')
2 files changed, 19 insertions, 74 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java index 4507c424c98..21118ff8914 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/ContainerEngineMock.java @@ -120,7 +120,7 @@ public class ContainerEngineMock implements ContainerEngine { @Override public void pullImage(TaskContext context, DockerImage image, RegistryCredentials registryCredentials) { String imageId = image.asString(); - ImageDownload imageDownload = images.computeIfAbsent(imageId, (ignored) -> new ImageDownload(new Image(imageId, Optional.empty(), List.of(imageId)))); + ImageDownload imageDownload = images.computeIfAbsent(imageId, (ignored) -> new ImageDownload(new Image(imageId, List.of(imageId)))); if (!asyncImageDownload) { imageDownload.complete(); } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java index 43d3fe94552..2b62f637474 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/container/image/ContainerImagePrunerTest.java @@ -10,17 +10,12 @@ import com.yahoo.vespa.hosted.node.admin.container.ContainerEngineMock; import com.yahoo.vespa.hosted.node.admin.container.ContainerId; import com.yahoo.vespa.hosted.node.admin.container.ContainerName; import com.yahoo.vespa.hosted.node.admin.container.ContainerResources; -import com.yahoo.vespa.hosted.node.admin.container.image.ContainerImagePruner; -import com.yahoo.vespa.hosted.node.admin.container.image.Image; import org.junit.Test; import java.time.Duration; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; import static org.junit.Assert.assertTrue; @@ -54,70 +49,31 @@ public class ContainerImagePrunerTest { .expectDeletedImages(); } - @Test public void multipleUnusedImagesAreIdentified() { tester.withExistingImages(image("image-1"), image("image-2")) .expectDeletedImages("image-1", "image-2"); } - - @Test - public void multipleUnusedLeavesAreIdentified() { - tester.withExistingImages(image("parent-image"), - image("image-1", "parent-image"), - image("image-2", "parent-image")) - .expectDeletedImages("image-1", "image-2", "parent-image"); - } - - - @Test - public void unusedLeafWithUsedSiblingIsIdentified() { - tester.withExistingImages(image("parent-image"), - image("image-1", "parent-image", "latest"), - image("image-2", "parent-image", "1.24")) - .withExistingContainers(container("vespa-node-1", "image-1")) - .expectDeletedImages("1.24"); // Deleting the only tag will delete the image - } - - @Test public void unusedImagesWithMultipleTags() { - tester.withExistingImages(image("parent-image"), - image("image-1", "parent-image", "vespa-6", "vespa-6.28", "vespa:latest")) - .expectDeletedImages("vespa-6", "vespa-6.28", "vespa:latest", "parent-image"); + tester.withExistingImages(image("image-1", "vespa-6", "vespa-6.28", "vespa:latest")) + .expectDeletedImages("vespa-6", "vespa-6.28", "vespa:latest"); } - @Test public void unusedImagesWithMultipleUntagged() { - tester.withExistingImages(image("image1", null, "<none>:<none>"), - image("image2", null, "<none>:<none>")) + tester.withExistingImages(image("image1", "<none>:<none>"), + image("image2", "<none>:<none>")) .expectDeletedImages("image1", "image2"); } - @Test public void taggedImageWithNoContainersIsUnused() { - tester.withExistingImages(image("image-1", null, "vespa-6")) + tester.withExistingImages(image("image-1", "vespa-6")) .expectDeletedImages("vespa-6"); } - - @Test - public void unusedImagesWithSimpleImageGc() { - tester.withExistingImages(image("parent-image")) - .expectDeletedImagesAfterMinutes(30) - .withExistingImages(image("parent-image"), - image("image-1", "parent-image")) - .expectDeletedImagesAfterMinutes(0) - .expectDeletedImagesAfterMinutes(30) - // At this point, parent-image has been unused for 1h, but image-1 depends on parent-image and it has - // only been unused for 30m, so we cannot delete parent-image yet. 30 mins later both can be removed - .expectDeletedImagesAfterMinutes(30, "image-1", "parent-image"); - } - - @Test public void reDownloadingImageIsNotImmediatelyDeleted() { tester.withExistingImages(image("image")) @@ -127,50 +83,39 @@ public class ContainerImagePrunerTest { .expectDeletedImages("image"); // 1h after re-download it is deleted again } - @Test public void reDownloadingImageIsNotImmediatelyDeletedWhenDeletingByTag() { - tester.withExistingImages(image("image", null, "image-1", "my-tag")) - .expectDeletedImages("image-1", "my-tag") // After 1h we delete image + tester.withExistingImages(image("image", "my-tag")) + .expectDeletedImages("my-tag") // After 1h we delete image .expectDeletedImagesAfterMinutes(0) // image is immediately re-downloaded, but is not deleted .expectDeletedImagesAfterMinutes(10) - .expectDeletedImages("image-1", "my-tag"); // 1h after re-download it is deleted again + .expectDeletedImages("my-tag"); // 1h after re-download it is deleted again } /** Same scenario as in {@link #multipleUnusedImagesAreIdentified()} */ @Test public void doesNotDeleteExcludedByIdImages() { - tester.withExistingImages(image("parent-image"), - image("image-1", "parent-image"), - image("image-2", "parent-image")) - // Normally, image-1 and parent-image should also be deleted, but because we exclude image-1 - // we cannot delete parent-image, so only image-2 is deleted + tester.withExistingImages(image("image-1"), image("image-2")) + // Normally, image-1 should also be deleted, but because we exclude image-1 only image-2 is deleted .expectDeletedImages(List.of("image-1"), "image-2"); } /** Same as in {@link #doesNotDeleteExcludedByIdImages()} but with tags */ @Test public void doesNotDeleteExcludedByTagImages() { - tester.withExistingImages(image("parent-image", "rhel-6"), - image("image-1", "parent-image", "vespa:6.288.16"), - image("image-2", "parent-image", "vespa:6.289.94")) + tester.withExistingImages(image("image-1", "vespa:6.288.16"), image("image-2", "vespa:6.289.94")) .expectDeletedImages(List.of("vespa:6.288.16"), "vespa:6.289.94"); } @Test - public void exludingNotDownloadedImageIsNoop() { - tester.withExistingImages(image("parent-image", "rhel-6"), - image("image-1", "parent-image", "vespa:6.288.16"), - image("image-2", "parent-image", "vespa:6.289.94")) + public void excludingNotDownloadedImageIsNoop() { + tester.withExistingImages(image("image-1", "vespa:6.288.16"), + image("image-2", "vespa:6.289.94")) .expectDeletedImages(List.of("vespa:6.300.1"), "vespa:6.288.16", "vespa:6.289.94", "rhel-6"); } - private static Image image(String id) { - return image(id, null); - } - - private static Image image(String id, String parentId, String... tags) { - return new Image(id, Optional.ofNullable(parentId), List.of(tags)); + private static Image image(String id, String... tags) { + return new Image(id, List.of(tags)); } private static Container container(String name, String imageId) { @@ -209,7 +154,7 @@ public class ContainerImagePrunerTest { } private Tester expectDeletedImagesAfterMinutes(int minutesAfter, String... imageIds) { - return expectDeletedImagesAfterMinutes(minutesAfter, Collections.emptyList(), imageIds); + return expectDeletedImagesAfterMinutes(minutesAfter, List.of(), imageIds); } private Tester expectDeletedImagesAfterMinutes(int minutesAfter, List<String> excludedRefs, String... imageIds) { @@ -223,7 +168,7 @@ public class ContainerImagePrunerTest { pruner.removeUnusedImages(context, excludedRefs, Duration.ofHours(1).minusSeconds(1)); - Arrays.stream(imageIds) + List.of(imageIds) .forEach(imageId -> { int newValue = removalCountByImageId.getOrDefault(imageId, 0) + 1; removalCountByImageId.put(imageId, newValue); |