use crate::clock::Duration;
#[derive(Debug, Clone)]
pub struct FaultConfig {
pub message_loss: (u32, u32),
pub message_reorder: (u32, u32),
pub message_delay: (u32, u32),
pub max_delay: Duration,
pub corruption: (u32, u32),
pub timeout: (u32, u32),
}
impl FaultConfig {
pub fn none() -> Self {
Self {
message_loss: (0, 1),
message_reorder: (0, 1),
message_delay: (0, 1),
max_delay: Duration::ZERO,
corruption: (0, 1),
timeout: (0, 1),
}
}
pub fn light() -> Self {
Self {
message_loss: (1, 100),
message_reorder: (1, 50),
message_delay: (1, 20),
max_delay: Duration::from_millis(50),
corruption: (1, 500),
timeout: (1, 200),
}
}
pub fn chaos() -> Self {
Self {
message_loss: (1, 10),
message_reorder: (1, 5),
message_delay: (1, 3),
max_delay: Duration::from_millis(500),
corruption: (1, 50),
timeout: (1, 20),
}
}
}