Database stress testing CLI. A single self-contained Go binary with no external runtime dependencies.
- Built-in TPC-B, TPC-C, TPC-H, and TPC-DS workload tests
- Deterministic typed Go generation and loading through
driver.InsertRequest - PostgreSQL, MySQL, YDB, Picodata, CSV, and noop drivers
- Transaction support with configurable isolation levels
- Go-native load generation and metrics
Download the latest release from GitHub Releases.
docker pull ghcr.io/stroppy-io/stroppy:latest
# or build locally
docker build -t stroppy .Build requirements: Go 1.24.3+
make buildThe binary will be available at ./build/stroppy.
Configure the target database via driver flags:
stroppy run tpcc/tx -d pg -D url=postgres://user:password@host:5432/dbnameThe first argument selects a built-in workload; the optional second is a .sql
schema file override. Inline SQL is also accepted:
stroppy run tpcc/tx # TPC-C, raw transactions (any DB)
stroppy run tpcc/procs # TPC-C, stored procedures (pg/mysql)
stroppy run tpcb/tx # TPC-B, raw transactions (any DB)
stroppy run tpch/tx # TPC-H, relational load + query suite
stroppy run tpcds --scale-factor 1 # TPC-DS, load 24 tables + 99 queries
stroppy run queries.sql # execute a SQL file
stroppy run "select 1" # execute inline SQLTPC-B and TPC-C each ship two variants:
procs— uses stored procedures; supports PostgreSQL and MySQLtx— uses raw transactions; works with all SQL drivers (PostgreSQL, MySQL, Picodata, YDB)
TPC-H loads all eight tables and runs the 22 query suite. TPC-DS generates and
loads all 24 tables (faithful dsdgen port) and runs the 99 query suite; scale
either workload via --scale-factor.
Use -d to select a driver preset and -D to override driver options:
stroppy run tpcc/tx -d pg
stroppy run tpcc/tx -d mysql -D url=mysql://root:pass@localhost:3306/bench
stroppy run tpcc/tx -d pico
stroppy run tpcc/tx -d pg -d1 mysql # two drivers
stroppy run simple -d noop # framework/runner overhead onlyRegistered workloads expose typed direct flags. Select the executor explicitly;
use stroppy run <workload> --help to inspect that workload's parameters:
stroppy run tpcc/tx --executor constant-vus --vus 10 --duration 60s
stroppy run tpcc/tx --executor shared-iterations --iterations 100
stroppy run tpcc/tx --scale-factor 10 --load-workers 8
stroppy run tpcc/tx -e pool_size=200 # legacy env compatibilityCollect repeated settings in stroppy-config.json or an explicit -f file.
Typed scenario parameters belong under run, workload parameters under params,
and the string-valued env map remains available for compatibility:
{
"version": "1",
"script": "tpcc/tx",
"run": {"executor": "constant-vus", "vus": 10, "duration": "60s"},
"params": {"scaleFactor": 10, "loadWorkers": 8}
}stroppy run -f prod.jsonTyped parameter precedence is: CLI flag > process environment > -e > matching
run/params config > config env > declared default. Driver precedence is
-d/-D > config drivers. Legacy DURATION inference remains compatible but
warns; use an explicit executor.
Use stroppy help to explore available topics:
stroppy help drivers
stroppy help config-fileProbe lists registered workload parameter schemas, embedded presets, and the insert methods each driver supports:
stroppy probe
stroppy probe -o json├─ execute_sql (run a .sql file or inline SQL)
├─ simple (smoke / overhead benchmark)
├─ tpcb
│ ├─ tx (raw transactions — any DB)
│ └─ pg.sql mysql.sql pico.sql ydb.sql
├─ tpcc
│ ├─ tx (raw transactions — any DB)
│ ├─ procs (stored procedures — pg/mysql)
│ └─ pg.sql mysql.sql pico.sql ydb.sql ydb_no_indexes.sql
├─ tpch
│ ├─ tx (relational load + 22 queries)
│ └─ pg.sql mysql.sql pico.sql ydb.sql distributions.json answers_sf1.json
└─ tpcds
├─ tpcds (load 24 tables + 99 queries)
└─ schema.pg.sql schema.mysql.sql schema.pico.sql schema.ydb.sql \
pg.sql mysql.sql pico.sql ydb.sql answers_sf1.json
Run directly (--network host to reach localhost databases):
docker run --network host ghcr.io/stroppy-io/stroppy run simple
docker run --network host stroppy run tpcc/tx \
-d pg -D url=postgres://user:password@host:5432/dbnameAvailable workloads: simple, tpcb/tx, tpcc/tx, tpch/tx, tpcds, execute_sql.
See LICENSE file for details.