public async Task ItShouldImmediatelyRetryAfterTheFirstTransientFailure() { var retryStrategy = FifthweekRetryOnTransientErrorHandler.CreateRetryStrategy( FifthweekRetryOnTransientErrorHandler.DefaultMaxRetryCount, FifthweekRetryOnTransientErrorHandler.DefaultMaxDelay); Assert.IsTrue(retryStrategy.FastFirstRetry); var shouldRetry = retryStrategy.GetShouldRetry(); TimeSpan firstDelay; shouldRetry(0, new Exception(), out firstDelay); Assert.AreEqual(TimeSpan.Zero, firstDelay); }
public async Task ItShouldNotPosponeTheUserUnduely() { var retryStrategy = FifthweekRetryOnTransientErrorHandler.CreateRetryStrategy( FifthweekRetryOnTransientErrorHandler.DefaultMaxRetryCount, FifthweekRetryOnTransientErrorHandler.DefaultMaxDelay); var shouldRetry = retryStrategy.GetShouldRetry(); TimeSpan totalDelay = TimeSpan.Zero; for (int i = 0; i < FifthweekRetryOnTransientErrorHandler.DefaultMaxRetryCount; i++) { TimeSpan newDelay; shouldRetry(i, new Exception(), out newDelay); Trace.WriteLine(string.Format("Retry {0}, Delay {1}", i, newDelay)); totalDelay += newDelay; } Trace.WriteLine(string.Format("Total Delay {0}", totalDelay)); Assert.IsTrue(totalDelay < TimeSpan.FromSeconds(30)); }