MCPcopy
hub / github.com/containerd/containerd / testFetch

Function testFetch

core/remotes/docker/resolver_test.go:1152–1186  ·  view source on GitHub ↗
(ctx context.Context, f remotes.Fetcher, desc ocispec.Descriptor)

Source from the content-addressed store, hash-verified

1150}
1151
1152func testFetch(ctx context.Context, f remotes.Fetcher, desc ocispec.Descriptor) error {
1153 r, err := f.Fetch(ctx, desc)
1154 if err != nil {
1155 return err
1156 }
1157 dgstr := desc.Digest.Algorithm().Digester()
1158 io.Copy(dgstr.Hash(), r)
1159 if dgstr.Digest() != desc.Digest {
1160 return fmt.Errorf("content mismatch: %s != %s", dgstr.Digest(), desc.Digest)
1161 }
1162
1163 fByDigest, ok := f.(remotes.FetcherByDigest)
1164 if !ok {
1165 return fmt.Errorf("fetcher %T does not implement FetcherByDigest", f)
1166 }
1167 r2, desc2, err := fByDigest.FetchByDigest(ctx, desc.Digest)
1168 if err != nil {
1169 return fmt.Errorf("FetcherByDigest: failed to fetch %v: %w", desc.Digest, err)
1170 }
1171 if desc2.Size != desc.Size {
1172 r2b, err := io.ReadAll(r2)
1173 if err != nil {
1174 return fmt.Errorf("FetcherByDigest: size mismatch: %d != %d (content: %v)", desc2.Size, desc.Size, err)
1175 }
1176 return fmt.Errorf("FetcherByDigest: size mismatch: %d != %d (content: %q)", desc2.Size, desc.Size, string(r2b))
1177 }
1178 dgstr2 := desc.Digest.Algorithm().Digester()
1179 if _, err = io.Copy(dgstr2.Hash(), r2); err != nil {
1180 return fmt.Errorf("FetcherByDigest: failed to copy: %w", err)
1181 }
1182 if dgstr2.Digest() != desc.Digest {
1183 return fmt.Errorf("FetcherByDigest: content mismatch: %s != %s", dgstr2.Digest(), desc.Digest)
1184 }
1185 return nil
1186}
1187
1188func testocimanifest(ctx context.Context, f remotes.Fetcher, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
1189 r, err := f.Fetch(ctx, desc)

Callers 4

TestResolveProxyFunction · 0.85
TestResolveProxyFallbackFunction · 0.85
runBasicTestFunction · 0.85
runReferrersTestFunction · 0.85

Calls 4

CopyMethod · 0.80
FetchMethod · 0.65
DigestMethod · 0.65
FetchByDigestMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…