Skip to main content

Crate simvar

Crate simvar 

Source
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 tui feature)
  • 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 features
  • async - Async runtime support
  • database - Database simulation
  • fs - Filesystem simulation
  • http - HTTP client/server simulation
  • mdns - mDNS simulation
  • random - Random number generation simulation
  • tcp - TCP connection simulation
  • telemetry - Telemetry support
  • time - Time simulation
  • tui - Terminal UI for simulation visualization
  • upnp - UPnP simulation
  • utils - Simulation utilities module
  • web-server - Web server simulation
  • pretty_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.
SimRunProperties
Core simulation harness APIs.

Enums§

Error
Core simulation harness APIs.
SimResult
Core simulation harness APIs.

Traits§

Sim
Core simulation harness APIs.
SimBootstrap
Core simulation harness APIs.

Functions§

end_sim
Core simulation harness APIs.
run_simulation
Core simulation harness APIs.