From b4cc918f31195fcb282038a0f2d36a739cd19234 Mon Sep 17 00:00:00 2001 From: Alexander Zeitler Date: Sat, 29 Apr 2023 16:31:00 +0200 Subject: [PATCH] feat: create timespans from backoff constant method --- .../CoreTests/ErrorHandling/BackoffTests.cs | 26 +++++++++++++++++++ src/Wolverine/ErrorHandling/Backoff.cs | 11 ++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/Testing/CoreTests/ErrorHandling/BackoffTests.cs create mode 100644 src/Wolverine/ErrorHandling/Backoff.cs diff --git a/src/Testing/CoreTests/ErrorHandling/BackoffTests.cs b/src/Testing/CoreTests/ErrorHandling/BackoffTests.cs new file mode 100644 index 000000000..8e9478402 --- /dev/null +++ b/src/Testing/CoreTests/ErrorHandling/BackoffTests.cs @@ -0,0 +1,26 @@ +using Wolverine.ErrorHandling; +using Xunit; + +namespace CoreTests.ErrorHandling; + +public class BackoffTests +{ + [Fact] + public void ConstantBackoffWithZeroRetriesShouldByEmpty() + { + var backoff = Backoff.Constant(10, 0); + backoff.ShouldNotBeNull(); + backoff.Count().ShouldBe(0); + } + + [Fact] + public void ConstantBackoffWithNonZeroRetriesShouldYieldDelay() + { + const int maxRetries = 1; + const int delay = 10; + + var backoff = Backoff.Constant(delay, maxRetries); + backoff.Count().ShouldBe(maxRetries); + backoff.First().Milliseconds.ShouldBe(delay); + } +} \ No newline at end of file diff --git a/src/Wolverine/ErrorHandling/Backoff.cs b/src/Wolverine/ErrorHandling/Backoff.cs new file mode 100644 index 000000000..5092b3bc7 --- /dev/null +++ b/src/Wolverine/ErrorHandling/Backoff.cs @@ -0,0 +1,11 @@ +namespace Wolverine.ErrorHandling; + +public class Backoff +{ + public static IEnumerable Constant(int delay, int maxRetries) + { + return maxRetries == 0 + ? new List() + : Enumerable.Range(1, maxRetries).Select(i => TimeSpan.FromMilliseconds(delay)); + } +} \ No newline at end of file