Crroak 3 hours ago

Hi HN,

I’ve been working on Fracture, a testing framework that brings deterministic chaos engineering to async Rust.

We all know the pain: async code often passes unit test but fails in production due to timeouts, race conditions, or network blips. I built Fracture to reproduce these failures locally and deterministically.

What it does: Fracture is a drop-in replacement for Tokio during testing. It runs your async code in a pure in-memory simulation. This allows it to:

Inject Chaos: simulate packet loss, connection resets, high latency, and task aborts.

Control Time: fast-forward timeouts instantly (no real sleeping).

Guarantee Determinism: It uses a seeded RNG. If a test fails due to a specific sequence of race conditions and network drops, it gives you the seed. You can re-run that seed to trigger the exact same bug again.

How it handles dependencies: One of the hardest parts of testing async Rust is dealing with external crates (like reqwest or sqlx) that depend on the real Tokio runtime. Fracture solves this via a "shim" crate strategy. You can patch tokio in your Cargo.toml to redirect the dependency tree to Fracture’s simulation runtime, meaning you can chaos-test your entire stack without changing your production code.

Current Status: This is an Alpha (v0.1.2) release. The core concepts work, but there are edge cases we haven't found yet.

I’d love for you to try breaking it (and your code).