benchconnect
Overview¶
benchconnect¶
A small Python package that creates a CLI for benchmark runners interacting with a Conbench server.
This is a light wrapper on top of benchadapt.BenchmarkResult, benchadapt.BenchmarkRun, and benchclients.ConbenchClient. If your code is already in Python, it may be simpler to use those classes directly.
Installation¶
With pipx:
pipx install benchconnect@git+https://github.com/conbench/conbench.git@main#subdirectory=benchconnect
Environment variables¶
benchconnect relies on a number of environment variables to obtain various metadata:
CONBENCH_URL
: Required. The URL of the Conbench server without a trailing slash, e.g.https://conbench.example.com
CONBENCH_EMAIL
: The email to use for Conbench login. Only required if the server is private.CONBENCH_PASSWORD
: The password to use for Conbench login. Only required if the server is private.CONBENCH_PROJECT_REPOSITORY
: The repository name (in the formatorg/repo
) or the URL (in the formathttps://github.com/org/repo
)CONBENCH_PROJECT_PR_NUMBER
: [recommended] The number of the GitHub pull request that is running this benchmark. Do not supply this for a runs on the default branch.CONBENCH_PROJECT_COMMIT
: The 40-character commit SHA of the repo being benchmarkedCONBENCH_MACHINE_INFO_NAME
: By default, the running machine host name (sent inmachine_info.name
when posting runs and benchmarks) will be obtained withplatform.node()
, but in circumstances where consistency is needed (e.g. running in CI or on cloud runners), a value for host name can be specified via this environment variable instead.
Usage¶
Benchmark run workflow¶
To submit a run of benchmark results to a Conbench server, benchconnect can open a run, modify submitted results to be a part of that run, and close it.
A minimal example:
benchconnect start run '{"run_reason": "test"}'
# pass one result or a whole set at a time, inline or from files
benchconnect submit result --path my-results/
benchconnect finish run
Additional metadata can be passed via JSON, e.g. name
and github
when
creating the run, or error_type
and error_info
when closing it.
Manual API¶
See the man pages:
benchconnect --help
benchconnect augment --help
benchconnect post --help
benchconnect put --help
The augment
command takes JSON for a benchmark result (augment result
)
or benchmark run (augment run
) and fills in defaults for unspecified fields.
This is useful for filling in fields like machine_info
consistently. Note
this is stateless, and will not make run_id
and suite_id
values correspond
across results, nor will the resulting JSON necessarily be complete enough to
post to a Conbench server correctly (it can’t fill in things like run_reason
for you); please ensure data is correct before posting.
The post
and put
commands authenticate with a Conbench server (see man
pages for environment variables) and send JSON passed. Since they correspond
to the API, there are post result
and post run
methods, but only put run
.