moonpool 0.2.0

A place to experiment around actors
docs.rs failed to build moonpool-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: moonpool-0.5.0

Moonpool

Deterministic simulation testing for distributed systems in Rust.

Moonpool enables you to write distributed system logic once, test it with simulated networking for reproducible debugging, then deploy with real networking—all using identical application code.

Inspired by FoundationDB's simulation testing.

Crate Architecture

┌─────────────────────────────────────────────────┐
│           moonpool (this crate)                 │
│         Re-exports all functionality            │
├─────────────────────────────────────────────────┤
│  moonpool-transport    │    moonpool-sim        │
│  • Peer connections    │    • SimWorld runtime  │
│  • Wire format         │    • Chaos testing     │
│  • FlowTransport       │    • Buggify macros    │
│  • RPC primitives      │    • Assertions        │
├─────────────────────────────────────────────────┤
│              moonpool-core                      │
│  Provider traits: Time, Task, Network, Random   │
│  Core types: UID, Endpoint, NetworkAddress      │
└─────────────────────────────────────────────────┘

Quick Start

use moonpool::{SimulationBuilder, WorkloadTopology};

SimulationBuilder::new()
    .topology(WorkloadTopology::ClientServer { clients: 2, servers: 1 })
    .run(|ctx| async move {
        // Your distributed system workload
    });

Which Crate to Use

Use case Crate
Full framework (recommended) moonpool
Provider traits only moonpool-core
Simulation without transport moonpool-sim
Transport without simulation moonpool-transport

Documentation

  • [moonpool_core] - Provider traits and core types
  • [moonpool_sim] - Simulation runtime and chaos testing
  • [moonpool_transport] - Network transport layer