public async Task GivenAFhirBlobConsumer_WhenConsumeData_AllDataShouldbeUploaded() { string containerName = Guid.NewGuid().ToString("N"); string blobName = Guid.NewGuid().ToString("N"); string connectionString = "UseDevelopmentStorage=true"; BlobContainerClient containerClient = new BlobContainerClient(connectionString, containerName); await containerClient.CreateIfNotExistsAsync(); try { BlockBlobClient blobClient = new BlockBlobClient(connectionString, containerName, blobName); await blobClient.DeleteIfExistsAsync(); FhirBlobConsumer consumer = new FhirBlobConsumer(blobClient); long totalSize = 0; Progress <long> progress = new Progress <long>(); progress.ProgressChanged += (obj, args) => { Interlocked.Add(ref totalSize, args); }; consumer.ProgressHandler = progress; int seed = DateTime.Now.Second % 30; foreach (var batch in GenerateTestData(20, 10000, seed)) { await consumer.ConsumeAsync(batch); } await consumer.CompleteAsync(); using StreamReader reader = new StreamReader((await blobClient.DownloadAsync()).Value.Content); foreach (var batch in GenerateTestData(20, 10000, seed)) { foreach (var item in batch) { Assert.Equal(item, await reader.ReadLineAsync()); } } Assert.Null(await reader.ReadLineAsync()); Assert.Equal((await blobClient.GetPropertiesAsync()).Value.ContentLength, totalSize); } finally { await containerClient.DeleteIfExistsAsync(); } }