Files
codex/codex-rs/cli/e2e_benches/codex_help.rs
Adam Perry @ OpenAI ff672e8e61 bench: add codex help e2e macrobenchmark (#31295)
## Why

Bazel-backed end-to-end macrobenchmark plumbing needs a small,
deterministic first consumer that does not couple the shared
infrastructure to the remote-skill scenario.

## What

- add `codex_e2e_benchmark`, a small macro for Bazel-only Divan
benchmarks and runtime binary runfiles
- keep benchmark sources under `e2e_benches/` so Cargo does not
auto-discover them
- add a CLI example that resolves the real `codex` binary and measures
`codex --help`
- assert the spawned command succeeds

## Validation

- `bazel test --compilation_mode=fastbuild
--@rules_rust//rust/settings:extra_rustc_flag=-Cdebug-assertions=no
--@rules_rust//rust/settings:extra_exec_rustc_flag=-Cdebug-assertions=no
--cache_test_results=no --test_output=errors --test_arg=--test
//codex-rs/cli:codex-help-bench`

## Stack

1. [#31295 bench: add codex help e2e
macrobenchmark](https://github.com/openai/codex/pull/31295)
2. [#31428 bench: add e2e benchmark
entrypoints](https://github.com/openai/codex/pull/31428)
3. [#31429 ci: smoke Bazel e2e
benchmarks](https://github.com/openai/codex/pull/31429)
2026-07-09 17:23:44 -07:00

27 lines
806 B
Rust

#![allow(clippy::expect_used)]
use std::process::Command;
use divan::Bencher;
fn main() {
divan::main();
}
/// Exercises the Bazel-backed end-to-end benchmark path with a cheap,
/// deterministic Codex invocation. Richer scenarios can add separate
/// benchmark binaries without making the shared harness depend on them.
#[divan::bench(sample_count = 20, sample_size = 1)]
fn codex_help(bencher: Bencher) {
let codex = codex_utils_cargo_bin::cargo_bin("codex")
.expect("codex binary should be available through Bazel runfiles");
bencher.bench_local(move || {
let output = Command::new(&codex)
.arg("--help")
.output()
.expect("codex --help should run");
assert!(output.status.success(), "codex --help should succeed");
});
}