FaultInjector

class FaultInjector(failureRate: Double = 0.0, exception: () -> Throwable = { FaultInjectedException() }, delay: Duration = Duration.ZERO, delayJitter: Boolean = false, failCount: Int = 0)

Fault injection helper for testing resilience policies.

Use this in tests to inject artificial delays, failures, or intermittent behavior to validate that your policies (retry, circuit breaker, timeout, etc.) handle them correctly.

Prefer failCount over failureRate for deterministic tests — failureRate introduces randomness that can cause intermittent test failures.

Example — deterministic (preferred):

val injector = FaultInjector.builder()
.failCount(3) // fails first 3 calls, succeeds after
.build()

Example — probabilistic:

val injector = FaultInjector.builder()
.failureRate(0.3)
.delay(50.milliseconds)
.build()

Constructors

Link copied to clipboard
constructor(failureRate: Double = 0.0, exception: () -> Throwable = { FaultInjectedException() }, delay: Duration = Duration.ZERO, delayJitter: Boolean = false, failCount: Int = 0)

Types

Link copied to clipboard
class Builder

Builder for FaultInjector.

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
suspend fun <T> execute(block: suspend () -> T): T

Executes block, potentially injecting a delay and/or failure according to configuration.