Skip to main content
Version: 6.0.0

CLI Reference

Stroppy v6 exposes five command groups:

stroppy version
stroppy run
stroppy baseline
stroppy probe
stroppy help

Run stroppy <command> --help for terminal help. Registered workloads add their typed flags dynamically:

stroppy run tpcc/tx --help

stroppy run​

Run a registered workload, SQL file, or inline SQL:

stroppy run [<workload>] [sql_file] \
[-f config.json] [-d driver] [-D key=value] [-e KEY=VALUE] \
[--steps step1,step2] [typed flags]

The first positional may come from script in a config file. A CLI positional overrides that field.

Input modes​

InputModeExample
Registered nameGo workloadstroppy run tpcc/tx
.sql fileExecute SQL filestroppy run ./queries.sql
String containing spacesExecute inline SQLstroppy run "select 1"

A registered workload may take an explicit SQL override as its second positional:

stroppy run tpcc/tx ./workloads/tpcc/pico.sql -d pico

Arguments after -- are unsupported.

Shared run flags​

FlagTypeDefaultDescription
--executorstringshared-iterationsshared-iterations or constant-vus.
--vusinteger1Number of virtual users.
--iterationsinteger1Total iterations shared across VUs.
--durationduration0sDuration for constant-vus; positive value required there.
--query-timeoutduration0sDeadline per SQL statement; zero disables it.

Examples:

stroppy run tpcb/tx --executor shared-iterations --vus 4 --iterations 100
stroppy run tpcc/tx --executor constant-vus --vus 32 --duration 5m
stroppy run tpch/tx --query-timeout 2m

Workload flags​

Each registered workload declares typed parameters such as --scale-factor, --load-workers, or --tx-isolation. Their types and defaults differ by workload. Inspect them rather than guessing:

stroppy run tpcb/tx --help
stroppy run tpcc/procs --help
stroppy run tpch/tx --help
stroppy run tpcds --help

stroppy probe -o json provides the same schemas for tools.

Driver flags​

FlagMeaning
-d NAME, --driver NAMESelect preset or raw JSON for driver 0.
-D key=value, --driver-opt key=valueOverride driver 0 field.
-d1, -d2, ...Select additional indexed drivers.
-D1, -D2, ...Override fields on indexed drivers.

Presets: pg, mysql, pico, ydb, noop. CSV has no short preset.

stroppy run tpcc/tx -d pg
stroppy run tpcc/tx -d pg -D url=postgres://prod:5432/bench
stroppy run tpcc/tx -d pg -d1 mysql
stroppy run tpcb/tx \
-D driverType=csv \
-D url='/tmp/tpcb-csv?merge=true&workload=tpcb' \
--steps drop_schema,create_schema,load_data

See Drivers & Configuration for fields and capabilities.

Config and compatibility flags​

FlagMeaning
-f PATH, --file PATHLoad JSON config. Default is stroppy-config.json when present.
-e KEY=VALUE, --env KEY=VALUESet a compatibility environment input; keys are uppercased.
--log-level VALUEdebug, info, warn, error, or fatal.
--log-mode VALUEdevelopment or production.

Typed direct flags have higher precedence than environment and config values. See Configuration Files.

Step filters​

FlagMeaning
--steps a,bRun only named steps.
--no-steps a,bRun all steps except named steps.

The flags are mutually exclusive. Comma-separated and equals forms work:

stroppy run tpcc/tx --steps=create_schema,load_data
stroppy run tpcc/tx --no-steps workload

Unknown step names simply do not match a workload step.

Signals and exit status​

  • First SIGINT or SIGTERM cancels the scenario and runs teardown.
  • Second signal forces immediate exit.
  • Graceful SIGINT exits 130; graceful SIGTERM exits 143.
  • Forced second signal exits 2.
  • Setup, validation, fatal, teardown, and ordinary command errors exit nonzero.
  • Terminal nonfatal transaction/query errors are summarized but exit 0.

Automation that treats any terminal benchmark error as failure should inspect terminal_errors_total or the bench completed with errors summary marker.

stroppy baseline​

Measure Stroppy's framework and PostgreSQL wire ceilings without a database:

stroppy baseline [flags]
FlagDefaultDescription
--quickfalseShorter phases and smaller load.
--tiersnoop,wireTier list: noop, wire.
--vusGOMAXPROCSParallel transaction VUs.
--duration3sTransaction phase duration.
--rows250000Rows per load phase.
--jsonfalseJSON report on stdout.
--no-savefalseSkip history file.
--server-pathunsetExplicit pg-noop executable.
--downloadaskask, always, or never.
stroppy baseline
stroppy baseline --quick
stroppy baseline --tiers noop
stroppy baseline --json --no-save

See Machine Baseline.

stroppy probe​

List compiled-in workload and driver metadata without running a workload or connecting to a database:

stroppy probe [-o human|json]
FlagDefaultDescription
-o, --outputhumanhuman or json.

Probe takes no positional arguments.

stroppy probe
stroppy probe -o json

See Probe & Parameters.

stroppy version​

stroppy version [--json]

Text output:

stroppy v6.0.0
pgx v5.10.0

JSON output:

{
"pgx": "v5.10.0",
"stroppy": "v6.0.0"
}

stroppy help​

List extended reference topics:

stroppy help
stroppy help drivers
stroppy help config-file
stroppy help datagen
stroppy help envs
stroppy help probe
stroppy help resolution
stroppy help sql
stroppy help steps
stroppy help baseline

These topics are compiled into the binary and match its release.

Environment compatibility​

Every typed parameter projects to an uppercase environment name. Some preserve legacy aliases. Source precedence is:

  1. typed CLI flag;
  2. process environment;
  3. -e compatibility override;
  4. matching typed run or params config value;
  5. config env map;
  6. declared default.

Common names:

EnvironmentTyped flag
EXECUTOR--executor
VUS--vus
ITERATIONS (ITER)--iterations
DURATION--duration
QUERY_TIMEOUT--query-timeout
SCALE_FACTOR--scale-factor
LOAD_WORKERS--load-workers
TX_ISOLATION--tx-isolation

Use stroppy probe -o json for each workload's complete mapping.

SQL resolution​

SQL files resolve in this order:

  1. current directory;
  2. ~/.stroppy/;
  3. embedded assets.

An explicit local .sql path bypasses embedded content. A short workload SQL name uses the embedded snapshot and requires rebuilding Stroppy after source asset changes.