Skip to content

Conversation

@SergeyKanzhelev
Copy link
Member

Adds a new test suite in to validate the idempotency and immediate consistency of CRI image operations.

This suite includes tests to ensure:

  • An image is available in ListImages and ImageStatus immediately after being pulled.
  • An image is absent from ListImages and ImageStatus immediately after being removed.
  • Concurrent RemoveImage calls for the same image are handled gracefully without errors, and the image is confirmed to be removed immediately after each call returns.

Additionally, this commit enhances the existing Image Manager test suite in with tests for removing images that have multiple tags, including tags that point to the same image digest from different registry domains (e.g., registry.k8s.io and its k8s.gcr.io mirror). The tests are written to be resilient to other images pre-existing on the test environment.

/kind feature

This code was generated by Gemini

Special notes for your reviewer:

Follow up from #1911

Does this PR introduce a user-facing change?

New tests for critest to validate the image operation consistency.

@k8s-ci-robot k8s-ci-robot added the kind/feature Categorizes issue or PR as related to a new feature. label Dec 11, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: SergeyKanzhelev
Once this PR has been reviewed and has the lgtm label, please assign mrunalp for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Dec 11, 2025
@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Dec 11, 2025
@SergeyKanzhelev SergeyKanzhelev force-pushed the imageTests branch 2 times, most recently from 1f29cec to c042889 Compare December 12, 2025 22:29
// // acknowledging that the cleanup might be asynchronous.
// })

It("should not fail on simultaneous RemoveImage calls [Conformance]", Serial, func() {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@haircommander @saschagrunert can it be that the failure in CI indicate an actual different behavior of CRI-O. In logs I seems to observe that the one of remove images finished, but after this image status still returns the image.

Copy link
Member

@saschagrunert saschagrunert Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like an issue in CRI-O, I have to investigate this. Ref: cri-o/cri-o#9717

@saschagrunert
Copy link
Member

@SergeyKanzhelev do you mind a rebase?

@SergeyKanzhelev SergeyKanzhelev force-pushed the imageTests branch 2 times, most recently from 3da5a43 to e0f104f Compare January 14, 2026 17:18
Adds a new test suite in  to validate the idempotency and immediate consistency of CRI image operations.

This suite includes tests to ensure:
- An image is available in ListImages and ImageStatus immediately after being pulled.
- An image is absent from ListImages and ImageStatus immediately after being removed.
- Concurrent RemoveImage calls for the same image are handled gracefully without errors, and the image is confirmed to be removed immediately after each call returns.

Additionally, this commit enhances the existing Image Manager test suite in  with tests for removing images that have multiple tags, including tags that point to the same image digest from different registry domains (e.g., registry.k8s.io and its k8s.gcr.io mirror). The tests are written to be resilient to other images pre-existing on the test environment.
removeImage(c, imageName) // Ensure image is not present

By("Pulling an image to be removed")
imageID := framework.PullPublicImage(c, imageName, testImagePodSandbox)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SergeyKanzhelev Can we use image ID returned by CRI, not image reference? Just as image GC does.

https://github.com/kubernetes/kubernetes/blob/6ec02c3061d47462ac1a07a0edd136b26d79383e/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto#L1587-L1588

The behavior of CRI-O when deleting an image with its digest is a bit complicated and it may take some time to get consensus about how we fix it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/feature Categorizes issue or PR as related to a new feature. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants