public async Task SetBlobAccessTier_MultipleFail_NoThrow() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); using 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, throwOnAnyFailure : false); scenario.AssertStatus(202, response); scenario.AssertStatus(200, response1); scenario.AssertStatus(404, response2, response3); await scenario.AssertTiers(AccessTier.Cool, good); }
public async Task SetBlobAccessTier_OneFails_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); Uri[] uris = good.Select(b => b.Uri).Concat(bad).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SetBlobsAccessTierAsync(uris, AccessTier.Cool)); RequestFailedException ex = exes.InnerException as RequestFailedException; Assert.IsNotNull(ex); Assert.AreEqual(404, ex.Status); Assert.IsTrue(BlobErrorCode.ContainerNotFound == ex.ErrorCode); await scenario.AssertTiers(AccessTier.Cool, good); }
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 SetBlobAccessTier_MultipleFail() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); using 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); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SubmitBatchAsync(batch, throwOnAnyFailure: true)); Assert.AreEqual(2, exes.InnerExceptions.Count); Assert.AreEqual(404, (exes.InnerExceptions[0] as RequestFailedException)?.Status); Assert.AreEqual(404, (exes.InnerExceptions[1] as RequestFailedException)?.Status); await scenario.AssertTiers(AccessTier.Cool, good); }
public async Task SetBlobAccessTier_OneFails() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.SetBlobAccessTier(good[0].Uri, AccessTier.Cool); Response response2 = batch.SetBlobAccessTier(good[1].Uri, AccessTier.Cool); Response response3 = batch.SetBlobAccessTier(bad[0], AccessTier.Cool); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SubmitBatchAsync(batch)); RequestFailedException ex = exes.InnerException as RequestFailedException; Assert.IsNotNull(ex); Assert.AreEqual(404, ex.Status); Assert.IsTrue(BlobErrorCode.ContainerNotFound == ex.ErrorCode); await scenario.AssertTiers(AccessTier.Cool, good); }
public async Task Delete_OneFails() { 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]); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SubmitBatchAsync(batch, throwOnAnyFailure: true)); RequestFailedException ex = exes.InnerException as RequestFailedException; Assert.IsNotNull(ex); Assert.AreEqual(404, ex.Status); Assert.IsTrue(BlobErrorCode.ContainerNotFound == ex.ErrorCode); await scenario.AssertDeleted(good); }
public async Task Batch_CanUseResponseAfterException() { using TestScenario scenario = Scenario(); Uri[] good = await scenario.CreateBlobUrisAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); 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); }