public void GetRetryDelay_FirstTry_ReturnsBaseDelay() { // Arrange var classUnderTest = new LimitedExponentialBackoffRetryStrategy(); var context = new RetryContext(); // Act classUnderTest.BaseDelay = TimeSpan.FromMilliseconds(200); var retryDelay = classUnderTest.NextRetryDelay(context); // Assert Assert.AreEqual(TimeSpan.FromMilliseconds(200), retryDelay); }
public void GetRetryDelay_ThirdTry_Returns400Milliseconds() { // Arrange var classUnderTest = new LimitedExponentialBackoffRetryStrategy(); var context = new RetryContext(); context.Update(); context.Update(); // Act var retryDelay = classUnderTest.NextRetryDelay(context); // Assert Assert.AreEqual(TimeSpan.FromMilliseconds(400), retryDelay); }
public void NextRetryDelay_CounterReachesMax_ShouldReturnMaxDelay() { // Arrange var classUnderTest = new LimitedExponentialBackoffRetryStrategy { MaxDelay = TimeSpan.FromMinutes(2) }; var mockeContext = new Mock <IRetryContext>(); mockeContext.Setup(context => context.Count).Returns(int.MaxValue); // Act var retryDelay = classUnderTest.NextRetryDelay(mockeContext.Object); // Assert Assert.AreEqual(TimeSpan.FromMinutes(2), retryDelay); }
public void GetRetryDelay_CalculatedExponentialValueExceedsMaxDelay_ReturnedValueDoesNotExceedMaxDelay() { // Arrange var classUnderTest = new LimitedExponentialBackoffRetryStrategy { MaxDelay = TimeSpan.FromMilliseconds(500) }; var context = new RetryContext(); context.Update(); context.Update(); context.Update(); // Act var retryDelay = classUnderTest.NextRetryDelay(context); // Assert Assert.AreEqual(TimeSpan.FromMilliseconds(500), retryDelay); }