testcontainers / testcontainers/testcontainers-java
Image cache lookup should support SHA256 digests and Image IDs
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 8.7k
- Forks
- 1.9k
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 9
Description
See #1391 (and this may be related to #699):
Testcontainers' image indexing code can't handle images that have SHA256 digests. We need a way to access the RepoDigests from docker-java's Image class. Unless I'm missing something, at the moment only RepoTags is mapped.
We would then modify RemoteDockerImage:
List<Image> updatedImages = listImagesCmd.exec();
updatedImages.stream()
.map(Image::getRepoTags)
.filter(Objects::nonNull)
.flatMap(Stream::of)
.map(DockerImageName::new)
.collect(Collectors.toCollection(() -> AVAILABLE_IMAGE_NAME_CACHE));
so that both Image::getRepoTags and Image::getRepoDigests are loaded into the cache. There's probably also some work to do around identity/equals/hashcode of DockerImageName objects in the cache.
EDIT 5 June 2020: We should also ensure that Image IDs are loaded into the cache - see #699.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with RemoteDockerImage's listImagesCmd cache population and inspect docker-java's Image mapping for RepoTags, RepoDigests, and the image ID. Then review DockerImageName identity, equals, and hashCode behavior in the cache. Done means repository tags, SHA256 digests, and image IDs can all be used for image lookup, with appropriate tests added or updated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, java
- Domain
- devops, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100