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)); } }
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); } }
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)); } }
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"); }