Class: Synthra::Behaviors::Failure

Inherits:
Base
  • Object
show all
Defined in:
lib/synthra/behaviors/failure.rb

Overview

Failure behavior - simulates service failure

Raises a SimulatedFailure error based on configured probability. This is useful for testing how applications handle service unavailability, timeouts, and other failure scenarios.

Examples:

Create with probability

failure = Failure.new(10, rng)  # 10% failure rate
failure.apply(result)  # May raise SimulatedFailure

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Synthra::Behaviors::Base

Instance Method Details

#apply(result, context = nil) ⇒ Object

Apply the failure behavior

Based on probability, either raises SimulatedFailure or returns the result unchanged.

Examples:

failure = Failure.new(10, rng)  # 10% failure rate
failure.apply({ "id" => "123" })
# Returns result 90% of the time
# Raises SimulatedFailure 10% of the time

Parameters:

  • result (Object)

    the generated data

  • context (Generator::Context, nil) (defaults to: nil)

    generation context (not used)

Returns:

  • (Object)

    the result if no failure

Raises:



60
61
62
63
64
65
66
# File 'lib/synthra/behaviors/failure.rb', line 60

def apply(result, context = nil)
  if should_apply?
    probability = extract_probability
    raise SimulatedFailure.new(probability: probability)
  end
  result
end