예제 #1
0
        public void Ctor_Set_Value_To_ConstantTimeSleepDurationInMilliseconds_Property()
        {
            // ARRANGE
            const int numberOfRetriesWithExponentialSleepDuration = 3;
            const int exponentialRetryBaseInMilliseconds          = 2_000;
            const int constantTimeSleepDurationInMilliseconds     = 5_000;

            // ACT
            var result = new CappedExponentialRetryThenConstantTimeSleeps(
                numberOfRetriesWithExponentialSleepDuration,
                exponentialRetryBaseInMilliseconds,
                constantTimeSleepDurationInMilliseconds);

            // ASSERT
            Assert.AreEqual(constantTimeSleepDurationInMilliseconds, result.ConstantTimeSleepDurationInMilliseconds);
        }
예제 #2
0
        public void Ctor_Creates_New_Instance()
        {
            // ARRANGE
            const int numberOfRetriesWithExponentialSleepDuration = 3;
            const int exponentialRetryBaseInMilliseconds          = 2_000;
            const int constantTimeSleepDurationInMilliseconds     = 5_000;

            // ACT
            var result = new CappedExponentialRetryThenConstantTimeSleeps(
                numberOfRetriesWithExponentialSleepDuration,
                exponentialRetryBaseInMilliseconds,
                constantTimeSleepDurationInMilliseconds);

            // ASSERT
            Assert.IsNotNull(result);
        }
        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);
        }