Skip to content

Commit 803da57

Browse files
committed
Add failing test: Fix AdaptiveRetry stopping retries on retriable Left when shouldPayFailureCost is false
1 parent 953a042 commit 803da57

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

core/src/test/scala/ox/resilience/ImmediateRetryTest.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,22 @@ class ImmediateRetryTest extends AnyFlatSpec with EitherValues with TryValues wi
210210
result.value shouldBe message
211211
counter shouldBe 6
212212

213+
it should "not pay failureCost if result E is going to be retried and shouldPayFailureCost returns false" in:
214+
// given
215+
var counter = 0
216+
val errorMessage = "boom"
217+
218+
def f =
219+
counter += 1
220+
Left(errorMessage)
221+
222+
val adaptive = AdaptiveRetry(TokenBucket(2), 1, 1)
223+
// when
224+
val result = adaptive.retryEither(Schedule.immediate.maxRetries(5), _ => false)(f)
225+
226+
// then
227+
result.left.value shouldBe errorMessage
228+
// all attempts are made for free, without paying the failure cost: one initial + five retries
229+
counter shouldBe 6
230+
213231
end ImmediateRetryTest

0 commit comments

Comments
 (0)