pub struct ChaosConfiguration {Show 20 fields
pub clog_probability: f64,
pub clog_duration: Range<Duration>,
pub partition_probability: f64,
pub partition_duration: Range<Duration>,
pub bit_flip_probability: f64,
pub bit_flip_min_bits: u32,
pub bit_flip_max_bits: u32,
pub bit_flip_cooldown: Duration,
pub partial_write_max_bytes: usize,
pub random_close_probability: f64,
pub random_close_cooldown: Duration,
pub random_close_explicit_ratio: f64,
pub packet_loss_probability: f64,
pub clock_drift_enabled: bool,
pub clock_drift_max: Duration,
pub buggified_delay_enabled: bool,
pub buggified_delay_max: Duration,
pub buggified_delay_probability: f64,
pub connect_failure_mode: ConnectFailureMode,
pub connect_failure_probability: f64,
}Expand description
Configuration for chaos injection in simulations.
This struct contains all settings related to fault injection and chaos testing, following FoundationDB’s BUGGIFY patterns for deterministic testing.
Fields§
§clog_probability: f64Clogging probability for individual writes (0.0 - 1.0)
clog_duration: Range<Duration>Duration range for clog delays
partition_probability: f64Network partition probability (0.0 - 1.0)
partition_duration: Range<Duration>Duration range for network partitions
bit_flip_probability: f64Bit flip probability for packet corruption (0.0 - 1.0)
bit_flip_min_bits: u32Minimum number of bits to flip (power-law distribution lower bound)
bit_flip_max_bits: u32Maximum number of bits to flip (power-law distribution upper bound)
bit_flip_cooldown: DurationCooldown duration after bit flip to prevent excessive corruption
partial_write_max_bytes: usizeMaximum bytes for partial write simulation (BUGGIFY truncates writes to 0-max_bytes) Following FDB’s approach of truncating writes to test TCP backpressure handling
random_close_probability: f64Random connection close probability per I/O operation (0.0 - 1.0) FDB default: 0.00001 (0.001%) - see sim2.actor.cpp:584
random_close_cooldown: DurationCooldown duration after a random close event (prevents cascading failures) FDB uses connectionFailuresDisableDuration - see sim2.actor.cpp:583
random_close_explicit_ratio: f64Ratio of explicit exceptions vs silent failures (0.0 - 1.0) FDB default: 0.3 (30% explicit) - see sim2.actor.cpp:602
packet_loss_probability: f64Packet loss probability (0.0 - 1.0) When non-zero, poll_write succeeds but data is probabilistically dropped and never delivered, simulating unreliable networks. Higher-level protocols must rely on timeouts to detect this.
clock_drift_enabled: boolEnable clock drift simulation When enabled, timer() can return a time up to clock_drift_max ahead of now() FDB ref: sim2.actor.cpp:1058-1064
clock_drift_max: DurationMaximum clock drift (default 100ms per FDB) timer() can be up to this much ahead of now()
buggified_delay_enabled: boolEnable buggified delays on sleep/timer operations When enabled, 25% of sleep operations get extra delay FDB ref: sim2.actor.cpp:1100-1105
buggified_delay_max: DurationMaximum additional delay for buggified sleep (default 100ms) Uses power-law distribution: max_delay * pow(random01(), 1000.0) FDB ref: sim2.actor.cpp:1104
buggified_delay_probability: f64Probability of adding buggified delay (default 25% per FDB)
connect_failure_mode: ConnectFailureModeConnection establishment failure mode (per FDB) FDB ref: sim2.actor.cpp:1243-1250 (SIM_CONNECT_ERROR_MODE)
connect_failure_probability: f64Probability of connect failure when Probabilistic mode is enabled (default 50%)
Implementations§
Source§impl ChaosConfiguration
impl ChaosConfiguration
Sourcepub fn disabled() -> Self
pub fn disabled() -> Self
Create a configuration with all chaos disabled (for fast local testing)
Sourcepub fn random_for_seed() -> Self
pub fn random_for_seed() -> Self
Create a randomized chaos configuration for seed-based testing
Trait Implementations§
Source§impl Clone for ChaosConfiguration
impl Clone for ChaosConfiguration
Source§fn clone(&self) -> ChaosConfiguration
fn clone(&self) -> ChaosConfiguration
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ChaosConfiguration
impl Debug for ChaosConfiguration
Auto Trait Implementations§
impl Freeze for ChaosConfiguration
impl RefUnwindSafe for ChaosConfiguration
impl Send for ChaosConfiguration
impl Sync for ChaosConfiguration
impl Unpin for ChaosConfiguration
impl UnwindSafe for ChaosConfiguration
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)