コード例 #1
0
        public void Delete_RetriesTheRightNumberOfTimesThenGivesUpAndThrowsIfException()
        {
            var sleepCount = 0;
            using (SpinLoop.ForTests(i => { sleepCount++; }))
            {
                var api = new ScriptedAzureManagementLowLevelApiFake();

                api.Script.Add(() => { throw new UnhandledHttpException(); });
                api.Script.Add(() => { throw new UnhandledHttpException(); });
                api.Script.Add(() => { throw new UnhandledHttpException(); });

                var azureManagement = new AzureManagementApiWithRetries(
                    api, 2, TimeSpan.FromMilliseconds(30000));

                Assert.That(
                    () => azureManagement.Delete(FooUri),
                    Throws.TypeOf<MaxRetriesExceededException>().With.InnerException.TypeOf<UnhandledHttpException>());
                Assert.That(sleepCount, Is.EqualTo(2));
            }
        }
コード例 #2
0
        public void Delete_RetriesOnExpectedExceptionAndThrowsOnUnexpected()
        {
            using (SpinLoop.ForTests(i => { }))
            {
                var api = new ScriptedAzureManagementLowLevelApiFake();

                api.Script.Add(() => { throw new UnhandledHttpException(); });
                api.Script.Add(() => { throw new ArgumentException(); });

                var azureManagement = new AzureManagementApiWithRetries(
                    api, 2, TimeSpan.FromMilliseconds(30000));

                Assert.That(() => azureManagement.Delete(FooUri), Throws.ArgumentException);
            }
        }
コード例 #3
0
        public void Delete_RetriesTheDeleteWhenRequestStatusReturnsFailed()
        {
            using (SpinLoop.ForTests(i => { }))
            {
                var api = new ScriptedAzureManagementLowLevelApiFake();
                var createCallCount = 0;
                var requestId = 12345;
                Action handleCall = () =>
                {
                    createCallCount++;
                    api.NextRequestId = (++requestId).ToString();
                };

                api.Script.Add(handleCall);
                api.Script.Add(() => api.NextRequestStatus = AzureRequestStatus.InProgress);
                api.Script.Add(() => api.NextRequestStatus = AzureRequestStatus.Failed);
                api.Script.Add(handleCall);
                api.Script.Add(() => api.NextRequestStatus = AzureRequestStatus.Succeeded);

                var azureManagement = new AzureManagementApiWithRetries(
                    api, 2, TimeSpan.FromMilliseconds(30000));

                azureManagement.Delete(FooUri);
                Assert.That(createCallCount, Is.EqualTo(2));

                var expectedUri = FooUri.ToRequestUri(api.NextRequestId);
                Assert.That(api.LastCheckRequestStatusRequestUri, Is.EqualTo(expectedUri));
            }
        }
コード例 #4
0
        public void Delete_CallsBeginDelete()
        {
            var api = new ScriptedAzureManagementLowLevelApiFake();

            var wasCalled = false;
            api.Script.Add(() => wasCalled = true);
            api.Script.Add(() => api.NextRequestStatus = AzureRequestStatus.Succeeded);

            var azureManagement = new AzureManagementApiWithRetries(
                api, 2, TimeSpan.FromMilliseconds(30000));

            azureManagement.Delete(FooUri);

            Assert.That(wasCalled, "was called");
            Assert.That(api.BeginDeleteDeploymentUri, Is.EqualTo(FooUri), "expected URI");
        }