示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }