Skip to main content

Module config

Module config 

Source
Expand description

Network configuration and settings

§Network Chaos Configuration

This module provides configuration for network chaos testing, following FoundationDB’s battle-tested simulation approach and TigerBeetle’s deterministic testing patterns.

§Connection Failure Modes

FailureConfig FieldDefaultReal-World Scenario
Random closerandom_close_probability0.001%Reconnection logic, message redelivery, connection pooling
Asymmetric closerandom_close_explicit_ratio30% explicitHalf-closed sockets, FIN vs RST handling
Connect failureconnect_failure_modeProbabilisticConnection establishment retries, timeout handling
Connection cutManual via cut_connection()N/ATemporary network outages, transient failures

§Network Latency & Congestion

Delay TypeConfig FieldDefaultReal-World Scenario
Operation latencybind/accept/connect/read/write_latencyVarious rangesTimeout settings, async operation ordering
Latency distributionlatency_distributionUniformTail latency testing, P99 behavior
Slow latencyslow_latency_probability0.1%99.9th percentile testing
Write cloggingclog_probability + clog_duration0%, 100-300msBackpressure handling, flow control
Read cloggingSame as writeSameSymmetric flow control
Clock driftclock_drift_enabled + clock_drift_maxtrue, 100msLease expiration, distributed consensus, TTL handling
Buggified delaybuggified_delay_enabled + buggified_delay_maxtrue, 100msRace conditions, timing-dependent bugs
Handshake delayhandshake_delay_enabled + handshake_delay_maxtrue, 10msTLS negotiation, connection startup overhead

§Network Partitions

Partition TypeConfig/MethodDefaultReal-World Scenario
Random partitionpartition_probability + partition_duration0%, 200ms-2sSplit-brain, quorum loss, leader election
Bi-directionalpartition_pair()ManualComplete isolation between nodes
Send-only blockpartition_send_from()ManualAsymmetric network failures
Recv-only blockpartition_recv_to()ManualAsymmetric network failures
Partition strategypartition_strategyRandomDifferent failure patterns (uniform, isolate)

§Data Integrity Faults

FaultConfig FieldDefaultReal-World Scenario
Bit flipbit_flip_probability + bit_flip_min/max_bits0.01%, 1-32 bitsCRC/checksum validation, data corruption detection

§Half-Open Connection Simulation

StateMethodReal-World Scenario
Peer crashsimulate_peer_crash()TCP keepalive, heartbeat detection, silent failures
Half-open detectionshould_half_open_error()Timeout-based failure detection

§Partial Write Simulation

FeatureConfig FieldDefaultReal-World Scenario
Short writespartial_write_max_bytes1000 bytesTCP fragmentation handling, message framing

§Stable Connections

FeatureMethodReal-World Scenario
Mark stablemark_connection_stable()Exempt supervision from chaos, parent-child connections

§Configuration Examples

§Fast Local Testing (No Chaos)

use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};

let config = NetworkConfiguration::fast_local();
// All chaos disabled, minimal latencies

§Full Chaos Testing

use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration};

let config = NetworkConfiguration::random_for_seed();
// Randomized chaos parameters for comprehensive testing

§Custom Configuration

use moonpool_sim::network::{NetworkConfiguration, ChaosConfiguration, LatencyDistribution, PartitionStrategy};
use std::time::Duration;

let mut config = NetworkConfiguration::default();
config.chaos.latency_distribution = LatencyDistribution::Bimodal;
config.chaos.partition_strategy = PartitionStrategy::IsolateSingle;
config.chaos.partition_probability = 0.05; // 5%

§FDB/TigerBeetle References

  • Random close: FDB sim2.actor.cpp:580-605
  • Latency distribution: FDB sim2.actor.cpp:317-329 (halfLatency())
  • Partitions: FDB SimClogging, TigerBeetle partition modes
  • Bit flips: FDB FlowTransport.actor.cpp:1297
  • Clock drift: FDB sim2.actor.cpp:1058-1064
  • Connect failures: FDB sim2.actor.cpp:1243-1250

Structs§

ChaosConfiguration
Configuration for chaos injection in simulations.
NetworkConfiguration
Configuration for network simulation parameters

Enums§

ConnectFailureMode
Connection establishment failure mode for fault injection.
LatencyDistribution
Latency distribution mode for network operations.
PartitionStrategy
Network partition strategy for chaos testing.

Functions§

sample_duration
Sample a random duration from a range
sample_duration_bimodal
Sample a random duration with bimodal distribution support.
sample_handshake_delay
Sample a handshake delay based on chaos configuration.