Expand description
Deterministic simulation test harness for concurrent systems.
This crate is a facade that re-exports the core simulation testing framework from
simvar_harness and optional utilities from simvar_utils. It provides a unified
interface for writing deterministic tests of distributed systems and concurrent applications.
§Features
- Deterministic execution - Same seed produces identical simulation results
- Host and client actors - Model persistent services (hosts) and ephemeral clients
- Simulation lifecycle hooks - Customize behavior at key points via
SimBootstrap - Built-in TUI - Optional terminal UI for monitoring simulation progress (with
tuifeature) - Parallel execution - Run multiple simulation runs concurrently
- Cancellation support - Graceful shutdown with Ctrl-C handling
§Example
use simvar::{run_simulation, SimBootstrap, Sim, SimConfig};
struct MyBootstrap;
impl SimBootstrap for MyBootstrap {
fn build_sim(&self, config: SimConfig) -> SimConfig {
config
}
fn on_start(&self, sim: &mut impl Sim) {
// Spawn a host actor
sim.host("server", || async {
// Server logic here
Ok(())
});
// Spawn a client actor
sim.client("client", async {
// Client logic here
Ok(())
});
}
}
let results = run_simulation(MyBootstrap)?;§Feature Flags
all(default) - Enable all featuresasync- Async runtime supportdatabase- Database simulationfs- Filesystem simulationhttp- HTTP client/server simulationmdns- mDNS simulationrandom- Random number generation simulationtcp- TCP connection simulationtelemetry- Telemetry supporttime- Time simulationtui- Terminal UI for simulation visualizationupnp-UPnPsimulationutils- Simulation utilities moduleweb-server- Web server simulationpretty_env_logger- Pretty logging output
§Environment Variables
SIMULATOR_RUNS- Number of simulation runs to execute (default: 1)SIMULATOR_MAX_PARALLEL- Maximum parallel runs (default: number of CPUs)NO_TUI- Disable terminal UI when set
Re-exports§
pub use simvar_utils as utils;
Modules§
- client
- Core simulation harness APIs.
- formatting
- Core simulation harness APIs.
- host
- Core simulation harness APIs.
- plan
- Core simulation harness APIs.
- switchy
- Core simulation harness APIs.
- utils
- Utility functions for simulation testing and cancellation management.
Structs§
- SimConfig
- Core simulation harness APIs.
- SimProperties
- Core simulation harness APIs.
- SimRun
Properties - Core simulation harness APIs.
Enums§
Traits§
- Sim
- Core simulation harness APIs.
- SimBootstrap
- Core simulation harness APIs.
Functions§
- end_sim
- Core simulation harness APIs.
- run_
simulation - Core simulation harness APIs.