1 implementation of Blob
Microsoft.NET.Build.Containers (1)
Registry\DefaultRegistryAPI.cs (1)
34
public IBlobOperations
Blob
{ get; }
48 references to Blob
Microsoft.NET.Build.Containers (9)
Registry\Registry.cs (9)
255
JsonNode configDoc = await _registryAPI.
Blob
.GetJsonAsync(repositoryName, configSha, cancellationToken).ConfigureAwait(false);
426
using Stream responseStream = await _registryAPI.
Blob
.GetStreamAsync(repository, descriptor.Digest, cancellationToken).ConfigureAwait(false);
497
NextChunkUploadInformation nextChunk = await _registryAPI.
Blob
.Upload.UploadChunkAsync(patchUri, content, cancellationToken).ConfigureAwait(false);
520
return _registryAPI.
Blob
.Upload.UploadAtomicallyAsync(startUploadInformation.UploadUri, contents, cancellationToken);
534
if (await _registryAPI.
Blob
.ExistsAsync(repository, digest, cancellationToken).ConfigureAwait(false))
543
StartUploadInformation uploadUri = await _registryAPI.
Blob
.Upload.StartAsync(repository, cancellationToken).ConfigureAwait(false);
552
await _registryAPI.
Blob
.Upload.CompleteAsync(finalChunkUri.UploadUri, digest, cancellationToken).ConfigureAwait(false);
586
if (await _registryAPI.
Blob
.ExistsAsync(destination.Repository, digest, cancellationToken).ConfigureAwait(false))
593
if (!await _registryAPI.
Blob
.Upload.TryMountAsync(destination.Repository, source.Repository, digest, cancellationToken).ConfigureAwait(false))
Microsoft.NET.Build.Containers.UnitTests (39)
RegistryTests.cs (39)
66
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
67
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
68
api.Setup(api => api.
Blob
.Upload.UploadAtomicallyAsync(uploadPath, It.IsAny<Stream>(), It.IsAny<CancellationToken>())).Returns(Task.FromResult(new FinalizeUploadInformation(uploadPath)));
73
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(uploadPath, It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Never());
74
api.Verify(api => api.
Blob
.Upload.UploadAtomicallyAsync(uploadPath, It.IsAny<Stream>(), It.IsAny<CancellationToken>()), Times.Once());
95
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
96
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
97
api.Setup(api => api.
Blob
.Upload.UploadAtomicallyAsync(uploadPath, It.IsAny<Stream>(), It.IsAny<CancellationToken>())).Returns(Task.FromResult(new FinalizeUploadInformation(uploadPath)));
98
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
107
api.Verify(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>()), Times.Exactly(1));
108
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Never);
130
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
131
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
132
api.Setup(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>())).Throws(new Exception("Server-side shutdown the thing"));
133
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
142
api.Verify(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>()), Times.Once());
143
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Exactly(contentLength / chunkSizeLessThanContentLength));
165
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
166
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
167
api.Setup(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>())).Throws(new Exception("Server-side shutdown the thing"));
168
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
184
api.Verify(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>()), Times.Once());
185
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Exactly(10));
206
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
207
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
208
api.Setup(api => api.
Blob
.Upload.UploadAtomicallyAsync(uploadPath, It.IsAny<Stream>(), It.IsAny<CancellationToken>())).Returns(Task.FromResult(new FinalizeUploadInformation(uploadPath)));
240
api.Setup(api => api.
Blob
.ExistsAsync(repoName, layerDigest, It.IsAny<CancellationToken>())).Returns(Task.FromResult(false));
241
api.Setup(api => api.
Blob
.Upload.StartAsync(repoName, It.IsAny<CancellationToken>())).Returns(Task.FromResult(new StartUploadInformation(uploadPath)));
242
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
258
api.Verify(api => api.
Blob
.Upload.UploadAtomicallyAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<Stream>(), It.IsAny<CancellationToken>()), Times.Never());
259
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Exactly(10));
342
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
358
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Exactly(5));
378
api.Setup(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>())).Returns(() =>
395
api.Verify(api => api.
Blob
.Upload.UploadChunkAsync(It.IsIn(absoluteUploadUri, uploadPath), It.IsAny<HttpContent>(), It.IsAny<CancellationToken>()), Times.Exactly(1));
560
.SetupSequence(api => api.
Blob
.GetStreamAsync(repoName, descriptor.Digest, cancellationToken))
576
mockRegistryAPI.Verify(api => api.
Blob
.GetStreamAsync(repoName, descriptor.Digest, cancellationToken), Times.Exactly(3)); // Verify retries
601
.SetupSequence(api => api.
Blob
.GetStreamAsync(repoName, descriptor.Digest, cancellationToken))
616
mockRegistryAPI.Verify(api => api.
Blob
.GetStreamAsync(repoName, descriptor.Digest, cancellationToken), Times.Exactly(5));