public void ComputeSleepDuration_Applies_ConstantTimeSleepDurationInMilliseconds_When_Retry_Count_Is_Greater_Than_NumberOfRetriesWithExponentialSleepDuration_Plus_One() { // ARRANGE const int numberOfRetriesWithExponentialSleepDuration = 3; const int exponentialRetryBaseInMilliseconds = 2_000; const int constantTimeSleepDurationInMilliseconds = 5_000; var target = new CappedExponentialRetryThenConstantTimeSleeps( numberOfRetriesWithExponentialSleepDuration, exponentialRetryBaseInMilliseconds, constantTimeSleepDurationInMilliseconds); // ACT const int retryCount = numberOfRetriesWithExponentialSleepDuration + 2; var result = target.ComputeSleepDuration(retryCount); // ASSERT var expectedSleepDuration = TimeSpan.FromMilliseconds(constantTimeSleepDurationInMilliseconds); Assert.AreEqual(expectedSleepDuration, result); }
public void ComputeSleepDuration_Throws_ArgumentOutOfRangeException_When_RetryCount_Is_Not_Positive_Integer( int retryCount) { // ARRANGE const int numberOfRetriesWithExponentialSleepDuration = 3; const int exponentialRetryBaseInMilliseconds = 2_000; const int constantTimeSleepDurationInMilliseconds = 5_000; var target = new CappedExponentialRetryThenConstantTimeSleeps( numberOfRetriesWithExponentialSleepDuration, exponentialRetryBaseInMilliseconds, constantTimeSleepDurationInMilliseconds); // ACT var exception = Assert.Throws <ArgumentOutOfRangeException>( () => target.ComputeSleepDuration(retryCount) ); // ASSERT Assert.IsNotNull(exception); Assert.AreEqual("retryCount", exception.ParamName); }
public void ComputeSleepDuration_Applies_Number_Of_Exponential_Retries_Equal_To_NumberOfRetriesWithExponentialSleepDuration() { // ARRANGE const int numberOfRetriesWithExponentialSleepDuration = 3; const int exponentialRetryBaseInMilliseconds = 2_000; const int constantTimeSleepDurationInMilliseconds = 5_000; var target = new CappedExponentialRetryThenConstantTimeSleeps( numberOfRetriesWithExponentialSleepDuration, exponentialRetryBaseInMilliseconds, constantTimeSleepDurationInMilliseconds); // ACT const int retryCount = numberOfRetriesWithExponentialSleepDuration; var result = target.ComputeSleepDuration(retryCount); // ASSERT var expectedSleepDuration = TimeSpan.FromMilliseconds( Math.Pow(exponentialRetryBaseInMilliseconds, retryCount - 1) ); Assert.AreEqual(expectedSleepDuration, result); }