MCPcopy
hub / github.com/containerd/containerd / TestImageUsage

Function TestImageUsage

integration/client/image_test.go:138–232  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

136}
137
138func TestImageUsage(t *testing.T) {
139 if testing.Short() {
140 t.Skip()
141 }
142
143 imageName := imagelist.Get(imagelist.Pause)
144 ctx, cancel := testContext(t)
145 defer cancel()
146
147 client, err := newClient(t, address)
148 if err != nil {
149 t.Fatal(err)
150 }
151 defer client.Close()
152
153 // Cleanup
154 err = client.ImageService().Delete(ctx, imageName, images.SynchronousDelete())
155 if err != nil && !errdefs.IsNotFound(err) {
156 t.Fatal(err)
157 }
158
159 pMatcher := platforms.Default()
160
161 // Pull single platform, do not unpack
162 image, err := client.Pull(ctx, imageName, WithPlatformMatcher(pMatcher))
163 if err != nil {
164 t.Fatal(err)
165 }
166
167 s1, err := image.Usage(ctx, WithUsageManifestLimit(1))
168 if err != nil {
169 t.Fatal(err)
170 }
171
172 if _, err := image.Usage(ctx, WithUsageManifestLimit(0), WithManifestUsage()); err == nil {
173 t.Fatal("expected NotFound with missing manifests")
174 } else if !errdefs.IsNotFound(err) {
175 t.Fatalf("unexpected error: %+v", err)
176 }
177
178 // Pin image name to specific version for future fetches
179 imageName = imageName + "@" + image.Target().Digest.String()
180 defer client.ImageService().Delete(ctx, imageName, images.SynchronousDelete())
181
182 // Fetch single platforms, but all manifests pulled
183 if _, err := client.Fetch(ctx, imageName, WithPlatformMatcher(pMatcher), WithAllMetadata()); err != nil {
184 t.Fatal(err)
185 }
186
187 if s, err := image.Usage(ctx, WithUsageManifestLimit(1)); err != nil {
188 t.Fatal(err)
189 } else if s != s1 {
190 t.Fatalf("unexpected usage %d, expected %d", s, s1)
191 }
192
193 s2, err := image.Usage(ctx, WithUsageManifestLimit(0))
194 if err != nil {
195 t.Fatal(err)

Callers

nothing calls this directly

Calls 15

testContextFunction · 0.85
newClientFunction · 0.85
WithPlatformMatcherFunction · 0.85
WithUsageManifestLimitFunction · 0.85
WithSnapshotUsageFunction · 0.85
FatalMethod · 0.80
GetMethod · 0.65
CloseMethod · 0.65
DeleteMethod · 0.65
ImageServiceMethod · 0.65
PullMethod · 0.65
UsageMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…