public async Task Batch_CanUseResponseAfterException() { await using TestScenario scenario = Scenario(); Uri[] good = await scenario.CreateBlobUrisAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0]); Response response2 = batch.DeleteBlob(bad[0]); try { await client.SubmitBatchAsync(batch); } catch (AggregateException) { // Swallow the exception } scenario.AssertStatus(202, response1); scenario.AssertStatus(404, response2); }
public async Task SetBlobAccessTier_ContainerScoped_Basic_ContainerSas() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); string containerName = scenario.Containers[0].Container.Name; BlobSasBuilder blobSasBuilder = new BlobSasBuilder(BlobContainerSasPermissions.All, Recording.Now.AddDays(1)) { BlobContainerName = containerName }; BlobSasQueryParameters sasQueryParameters = blobSasBuilder.ToSasQueryParameters(GetNewSharedKeyCredentials()); BlobUriBuilder blobUriBuilder = new BlobUriBuilder(scenario.Service.Uri) { BlobContainerName = containerName, Sas = sasQueryParameters }; BlobContainerClient sasContainerClient = InstrumentClient(new BlobContainerClient(blobUriBuilder.ToUri(), GetOptions())); BlobBatchClient blobBatchClient = sasContainerClient.GetBlobBatchClient(); using BlobBatch batch = blobBatchClient.CreateBatch(); Response[] responses = new Response[] { batch.SetBlobAccessTier(new Uri($"{blobs[0].Uri}?{sasQueryParameters}"), AccessTier.Cool), batch.SetBlobAccessTier(new Uri($"{blobs[1].Uri}?{sasQueryParameters}"), AccessTier.Cool), batch.SetBlobAccessTier(new Uri($"{blobs[2].Uri}?{sasQueryParameters}"), AccessTier.Cool) }; Response response = await blobBatchClient.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task SetBlobAccessTier_ContainerScoped_Basic_Convenience_ContainerSas() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); string containerName = scenario.Containers[0].Container.Name; BlobSasBuilder blobSasBuilder = new BlobSasBuilder(BlobContainerSasPermissions.All, Recording.Now.AddDays(1)) { BlobContainerName = containerName }; BlobSasQueryParameters sasQueryParameters = blobSasBuilder.ToSasQueryParameters(GetNewSharedKeyCredentials()); BlobUriBuilder blobUriBuilder = new BlobUriBuilder(scenario.Service.Uri) { BlobContainerName = containerName, Sas = sasQueryParameters }; BlobContainerClient sasContainerClient = InstrumentClient(new BlobContainerClient(blobUriBuilder.ToUri(), GetOptions())); BlobBatchClient blobBatchClient = sasContainerClient.GetBlobBatchClient(); Uri[] uris = blobs.Select(b => new Uri($"{b.Uri}?{sasQueryParameters}")).ToArray(); Response[] responses = await blobBatchClient.SetBlobsAccessTierAsync(uris, AccessTier.Cool); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task Delete_MultipleFail_NoThrow() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(bad[0]); Response response3 = batch.DeleteBlob(bad[1]); Response response = await client.SubmitBatchAsync(batch, throwOnFailure : false); scenario.AssertStatus(202, response, response1); scenario.AssertStatus(404, response2, response3); await scenario.AssertDeleted(good); }
public async Task SetBlobAccessTier_MultipleFail_NoThrow() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.SetBlobAccessTier(good[0].Uri, AccessTier.Cool); Response response2 = batch.SetBlobAccessTier(bad[0], AccessTier.Cool); Response response3 = batch.SetBlobAccessTier(bad[1], AccessTier.Cool); Response response = await client.SubmitBatchAsync(batch, throwOnFailure : false); scenario.AssertStatus(202, response); scenario.AssertStatus(200, response1); scenario.AssertStatus(404, response2, response3); await scenario.AssertTiers(AccessTier.Cool, good); }
public async Task SetBlobAccessTier_Basic() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response[] responses = new Response[] { batch.SetBlobAccessTier(blobs[0].Uri, AccessTier.Cool), batch.SetBlobAccessTier(blobs[1].Uri, AccessTier.Cool), batch.SetBlobAccessTier(blobs[2].Uri, AccessTier.Cool) }; Response response = await client.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task Delete_OneFails_NoThrow() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(good[1].Uri); Response response3 = batch.DeleteBlob(bad[0]); Response response = await client.SubmitBatchAsync(batch, throwOnAnyFailure : false); Assert.AreEqual(3, batch.RequestCount); scenario.AssertStatus(202, response, response1, response2); scenario.AssertStatus(404, response3); await scenario.AssertDeleted(good); }
public async Task Delete_Basic() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response[] responses = new Response[] { batch.DeleteBlob(blobs[0].Uri), batch.DeleteBlob(blobs[1].Uri), batch.DeleteBlob(blobs[2].Uri) }; Response response = await client.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Batch_Dispose_Response_Still_Available() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = new Response[3]; Response response; using (BlobBatch batch = client.CreateBatch()) { responses[0] = batch.DeleteBlob(blobs[0].Uri); responses[1] = batch.DeleteBlob(blobs[1].Uri); responses[2] = batch.DeleteBlob(blobs[2].Uri); response = await client.SubmitBatchAsync(batch); } scenario.AssertStatus(202, response); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task SetBlobAccessTier_Version() { await using TestScenario scenario = Scenario(); BlockBlobClient[] blobs = await scenario.CreateBlockBlobsAsync(1); Response <BlobInfo> setMetadataResponse = await blobs[0].SetMetadataAsync(BuildMetadata()); blobs[0] = blobs[0].WithVersion(setMetadataResponse.Value.VersionId); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response[] responses = new Response[] { batch.SetBlobAccessTier(blobs[0].Uri, AccessTier.Cool), }; Response response = await client.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task SetBlobAccessTier_Snapshot() { await using TestScenario scenario = Scenario(); BlockBlobClient[] blobs = await scenario.CreateBlockBlobsAsync(1); Response <BlobSnapshotInfo> blobSnapshotResponse = await blobs[0].CreateSnapshotAsync(); blobs[0] = blobs[0].WithSnapshot(blobSnapshotResponse.Value.Snapshot); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response[] responses = new Response[] { batch.SetBlobAccessTier(blobs[0].Uri, AccessTier.Cool), }; Response response = await client.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task SetBlobAccessTier_Basic_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); Uri[] uris = blobs.Select(b => b.Uri).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = await client.SetBlobsAccessTierAsync(uris, AccessTier.Cool); scenario.AssertStatus(200, responses); await scenario.AssertTiers(AccessTier.Cool, blobs); }
public async Task Delete_Basic_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); Uri[] uris = blobs.Select(b => b.Uri).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = await client.DeleteBlobsAsync(uris); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Batch_AzureSasCredential() { // Create a container using SAS for Auth await using DisposingContainer test = await GetTestContainerAsync(); var serviceClient = GetServiceClient_SharedKey(); var sas = GetAccountSasCredentials().SasToken; var sasServiceClient = InstrumentClient(new BlobServiceClient(serviceClient.Uri, new AzureSasCredential(sas), GetOptions())); await using TestScenario scenario = Scenario(sasServiceClient); Uri[] blobs = await scenario.CreateBlobUrisAsync(test.Container, 2); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = await client.DeleteBlobsAsync(blobs); scenario.AssertStatus(202, responses); }
public async Task Batch_AcrossContainers() { await using TestScenario scenario = Scenario(); BlobContainerClient container1 = await scenario.CreateContainerAsync(); Uri[] blobs1 = await scenario.CreateBlobUrisAsync(container1, 2); BlobContainerClient container2 = await scenario.CreateContainerAsync(); Uri[] blobs2 = await scenario.CreateBlobUrisAsync(container2, 3); Uri[] blobs = blobs1.Concat(blobs2).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = await client.DeleteBlobsAsync(blobs); scenario.AssertStatus(202, responses); }