(t *testing.T)
| 136 | } |
| 137 | |
| 138 | func 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) |
nothing calls this directly
no test coverage detected
searching dependent graphs…