mirror of
https://github.com/openai/codex.git
synced 2026-08-26 13:38:49 +00:00
## 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)
27 lines
806 B
Rust
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");
|
|
});
|
|
}
|