pub struct FaultContext { /* private fields */ }Expand description
Context for fault injectors — gives access to SimWorld fault injection methods.
Unlike SimContext (which workloads receive), FaultContext provides direct
access to network partitioning, reboot, and other fault primitives that normal
workloads should not use.
Implementations§
Source§impl FaultContext
impl FaultContext
Sourcepub fn new(
sim: SimWorld,
process_info: ProcessInfo,
random: SimRandomProvider,
time: SimTimeProvider,
chaos_shutdown: CancellationToken,
) -> Self
pub fn new( sim: SimWorld, process_info: ProcessInfo, random: SimRandomProvider, time: SimTimeProvider, chaos_shutdown: CancellationToken, ) -> Self
Create a new fault context with process information.
Sourcepub fn dead_count(&self) -> usize
pub fn dead_count(&self) -> usize
Get the number of currently dead (killed but not yet restarted) processes.
Sourcepub fn partition(&self, a: &str, b: &str) -> SimulationResult<()>
pub fn partition(&self, a: &str, b: &str) -> SimulationResult<()>
Create a bidirectional network partition between two IPs.
The partition persists until heal_partition is called.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn heal_partition(&self, a: &str, b: &str) -> SimulationResult<()>
pub fn heal_partition(&self, a: &str, b: &str) -> SimulationResult<()>
Remove a network partition between two IPs.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn is_partitioned(&self, a: &str, b: &str) -> SimulationResult<bool>
pub fn is_partitioned(&self, a: &str, b: &str) -> SimulationResult<bool>
Check whether two IPs are partitioned.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn random(&self) -> &SimRandomProvider
pub fn random(&self) -> &SimRandomProvider
Get the seeded random provider.
Sourcepub fn time(&self) -> &SimTimeProvider
pub fn time(&self) -> &SimTimeProvider
Get the simulated time provider.
Sourcepub fn chaos_shutdown(&self) -> &CancellationToken
pub fn chaos_shutdown(&self) -> &CancellationToken
Get the chaos-phase shutdown token.
This token is cancelled at the chaos→recovery boundary, signaling fault injectors to stop.
Sourcepub fn process_ips(&self) -> &[String]
pub fn process_ips(&self) -> &[String]
Get all server process IPs.
Sourcepub fn reboot(&self, ip: &str, kind: RebootKind) -> SimulationResult<()>
pub fn reboot(&self, ip: &str, kind: RebootKind) -> SimulationResult<()>
Reboot a specific process by IP.
For RebootKind::Graceful: schedules a ProcessGracefulShutdown event.
The orchestrator cancels the per-process shutdown token, giving the process
a grace period to drain buffers and clean up. After the grace period,
a force-kill aborts the task and connections, then schedules restart.
For RebootKind::Crash and RebootKind::CrashAndWipe: immediately
aborts all connections and schedules a ProcessRestart event.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn reboot_with_delays(
&self,
ip: &str,
kind: RebootKind,
recovery_delay_range_ms: &Range<usize>,
grace_period_range_ms: &Range<usize>,
) -> SimulationResult<()>
pub fn reboot_with_delays( &self, ip: &str, kind: RebootKind, recovery_delay_range_ms: &Range<usize>, grace_period_range_ms: &Range<usize>, ) -> SimulationResult<()>
Sourcepub fn reboot_random(
&self,
kind: RebootKind,
) -> SimulationResult<Option<String>>
pub fn reboot_random( &self, kind: RebootKind, ) -> SimulationResult<Option<String>>
Reboot a random alive server process.
Picks a random process from the process IP list and reboots it.
Returns Ok(None) if no processes are available.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn reboot_tagged(
&self,
key: &str,
value: &str,
kind: RebootKind,
) -> SimulationResult<Vec<String>>
pub fn reboot_tagged( &self, key: &str, value: &str, kind: RebootKind, ) -> SimulationResult<Vec<String>>
Reboot all processes matching a tag key=value pair.
§Errors
Returns an error if IP parsing fails or the operation is rejected by the simulator.
Sourcepub fn machine_registry(&self) -> &MachineRegistry
pub fn machine_registry(&self) -> &MachineRegistry
The machine registry, for failure-domain queries during fault injection.
Sourcepub fn reboot_machine(
&self,
machine_id: &str,
kind: RebootKind,
) -> SimulationResult<Vec<String>>
pub fn reboot_machine( &self, machine_id: &str, kind: RebootKind, ) -> SimulationResult<Vec<String>>
Reboot every process collocated on a single machine — modeling correlated (shared-fate) failure.
Returns the IPs that were rebooted (empty if the machine is unknown).
§Errors
Returns an error if the operation is rejected by the simulator.
Sourcepub fn reboot_domain(
&self,
level: DomainLevel,
id: &str,
kind: RebootKind,
) -> SimulationResult<Vec<String>>
pub fn reboot_domain( &self, level: DomainLevel, id: &str, kind: RebootKind, ) -> SimulationResult<Vec<String>>
Reboot every process in a failure domain (level + id) together.
Returns the IPs that were rebooted (empty if the domain is unknown).
§Errors
Returns an error if the operation is rejected by the simulator.