Configuration Values

cargo-maelstrom supports the following configuration values:

ValueTypeDescriptionDefault
cache-sizestringtarget cache disk space usage"1 GB"
inline-limitstringmaximum amount of captured standard output error"1 MB"
slotsnumberjob slots available1 per CPU
container-image-depot-rootstringcontainer images cache directory$XDG_CACHE_HOME/maelstrom/containers
accept-invalid-remote-container-tls-certsbooleanallow invalid container registry certificatesfalse
brokerstringaddress of brokerstandalone mode
log-levelstringminimum log level"info"
quietbooleandon't output per-test informationfalse
uistringUI style to use"auto"
repeatnumberhow many times to run each test1
timeoutstringoverride timeout value testsdon't override
featuresstringcomma-separated list of features to activateCargo's default
all-featuresbooleanactivate all available featuresCargo's default
no-default-featuresbooleando not activate the default featureCargo's default
profilestringbuild artifacts with the specified profileCargo's default
targetstringbuild for the target tripleCargo's default
target-dirstringdirectory for all generated artifactsCargo's default
manifest-pathstringpath to Cargo.tomlCargo's default
frozenbooleanrequire Cargo.lock and cache are up to dateCargo's default
lockedbooleanrequire Cargo.lock is up to dateCargo's default
offlinebooleanrun without Cargo accessing the networkCargo's default
extra-test-binary-argslistpass arbitrary arguments to test binaryno args
stop-afternumberstop after given number of failuresnever stop

cache-size

This is a local-worker setting, common to all clients. See here for details.

inline-limit

This is a local-worker setting, common to all clients. See here for details.

slots

This is a local-worker setting, common to all clients. See here for details.

container-image-depot-root

This is a container-image setting, common to all clients. See here for details.

accept-invalid-remote-container-tls-certs

This is a container-image setting, common to all clients. See here for details.

broker

The broker configuration value specifies the socket address of the broker. This configuration value is optional. If not provided, cargo-maelstrom will run in standalone mode.

Here are some example value socket addresses:

  • broker.example.org:1234
  • 192.0.2.3:1234
  • [2001:db8::3]:1234

log-level

This is a setting common to all Maelstrom programs. See here for details.

cargo-maelstrom always prints log messages to stdout. It also passes the log level to maelstrom-client, which will log its output in a file named client-process.log in the state directory.

quiet

The quiet configuration value, if set to true, causes cargo-maelstrom to be more more succinct with its output. If cargo-maelstrom is outputting to a terminal, it will display a single-line progress bar indicating all test state, then print a summary at the end. If not outputting to a terminal, it will only print a summary at the end.

ui

The ui configuration value controls the UI style used. It must be one of auto, fancy, quiet, or simple. The default value is auto.

StyleDescription
simpleThis is our original UI. It prints one line per test result (unless quiet is true), and will display some progress bars if standard output is a TTY.
fancyThis is our new UI. It has a rich TTY experience with a lot of status updates. It is incompatible with quiet or with non-TTY standard output.
quietMinimal UI with only a single progress bar
autoWill choose fancy if standard output is a TTY and quiet isn't true. Otherwise, it will choose simple.

repeat

The repeat configuration value specifies how many times each test will be run. It must be a nonnegative integer. On the command line, --loop can be used as an alias for --repeat.

timeout

The optional timeout configuration value provides the timeout value to use for all tests. This will override any value set in cargo-maelstrom.toml.

Cargo Settings

cargo-maelstrom shells out to cargo to get metadata about tests and to build the test artifacts. For the former, it uses cargo metadata. For the latter, it uses cargo test --no-run.

cargo-maelstrom supports a number of command-line options that are passed through directly to cargo. It does not inspect these values at all.

Command-Line OptionCargo GroupingPassed To
featuresfeature selectiontest and metadata
all-featuresfeature selectiontest and metadata
no-default-featuresfeature selectiontest and metadata
profilecompilationtest
targetcompilationtest
target-diroutputtest
manifest-pathmanifesttest and metadata
frozenmanifesttest and metadata
lockedmanifesttest and metadata
offlinemanifesttest and metadata

cargo-maelstrom doesn't accept multiple instances of the --features command-line option. Instead, combine the features into a single, comma-separated argument like this: --features=feat1,feat2,feat3.

cargo-maelstrom doesn't accept the --release alias. Use --profile=release instead.

extra-test-binary-args

This allows passing of arbitrary command-line arguments to the Rust test binary. See the help text for a test binary for what options are accepted normally.

These arguments are added last after --exact and --nocapture, but before we pass the test case to run. It could be possible to use these flags to somehow not run the test cargo-maelstrom was intending to, producing confusing results.

When provided on the command-line these arguments are positional and come after any other arguments. To avoid ambiguity, -- should be used to denote the end of normal command-line arguments, and the beginning these arguments like follows:

cargo maelstrom -- --force-run-in-process

stop-after

This optional configuration value if provided gives a limit on the number of failure to tolerate. If the limit is reached, cargo-maelstrom exits prematurely.