Configuration Values
cargo-maelstrom
supports the following configuration values:
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
.
Style | Description |
---|---|
simple | This 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. |
fancy | This 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. |
quiet | Minimal UI with only a single progress bar |
auto | Will 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 Option | Cargo Grouping | Passed To |
---|---|---|
features | feature selection | test and metadata |
all-features | feature selection | test and metadata |
no-default-features | feature selection | test and metadata |
profile | compilation | test |
target | compilation | test |
target-dir | output | test |
manifest-path | manifest | test and metadata |
frozen | manifest | test and metadata |
locked | manifest | test and metadata |
offline | manifest | test 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.