Loading...
Loading...
Information about the differential fuzzer tool, how to run it and use it catch bugs in Turso. Always load this skill when running this tool
npx skill4agent add tursodatabase/turso differential-fuzzertesting/differential-oracle/fuzzer/# Basic run (100 statements, random seed)
cargo run --bin differential_fuzzer
# With specific seed for reproducibility
cargo run --bin differential_fuzzer -- --seed 12345
# More statements with verbose output
cargo run --bin differential_fuzzer -- -n 1000 --verbose
# Keep database files after run (for debugging)
cargo run --bin differential_fuzzer -- --seed 12345 --keep-files
# All options
cargo run --bin differential_fuzzer -- \
--seed <SEED> # Deterministic seed
-n <NUM> # Number of statements (default: 100)
-t <NUM> # Number of tables (default: 2)
-c <NUM> # Columns per table (default: 5)
--verbose # Print each SQL statement
--keep-files # Persist .db files to disk# Run forever with random seeds
cargo run --bin differential_fuzzer -- loop
# Run 50 iterations
cargo run --bin differential_fuzzer -- loop 50# Build and run from repo root
docker build -f testing/differential-oracle/fuzzer/docker-runner/Dockerfile -t fuzzer .
docker run -e GITHUB_TOKEN=xxx -e SLACK_WEBHOOK_URL=xxx fuzzerTIME_LIMIT_MINUTESPER_RUN_TIMEOUT_SECONDSNUM_STATEMENTSLOG_TO_STDOUTGITHUB_TOKENSLACK_WEBHOOK_URLsimulator-output/| File | Description |
|---|---|
| All executed SQL statements. Failed statements prefixed with |
| Database schema at end of run (or at failure) |
| Turso database file (only with |
| SQLite database file (only with |
INFO: Starting differential_fuzzer with config: SimConfig { seed: 12345, ... }cargo run --bin differential_fuzzer -- --seed 12345 --verbose --keep-filessimulator-output/test.sql-- FAILED:simulator-output/schema.json.sqltest.rs# Run failing SQL against SQLite
sqlite3 :memory: < simulator-output/test.sql
# Run against tursodb CLI
tursodb :memory: < simulator-output/test.sql| File | Purpose |
|---|---|
| CLI parsing, entry point |
| Main simulation loop, executes statements on both DBs |
| Compares Turso vs SQLite results |
| Introspects schema from both databases |
| In-memory IO for deterministic simulation |
RUST_LOGRUST_LOG=debug cargo run --bin differential_fuzzer -- --seed 12345