Repository navigation
fix(performance): preserve failed and incomplete benchmark rounds - #39
Merged
Merged
Conversation
majinghe
marked this pull request as draft
September 8, 2026 02:10
majinghe
marked this pull request as ready for review
September 8, 2026 02:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issues
Part of rustfs/backlog#2297. Complements rustfs/rustfs#7199, which preserves the exit status this runner returns.
Summary of Changes
Return failure when any selected benchmark round fails, its output capture fails, or required metrics are missing. Previously, even a warp process that exited 42 in every round could leave an empty summary and a successful script exit. Continue collecting the selected rounds and their diagnostics, and report selected, parsed, and failed counts.
Record each round's warp and capture exit status in its existing output file.
--parse-onlynow rejects failed, missing, or incomplete execution records instead of recertifying metrics printed by a failing warp process. Preserve the default 30-round matrix, timing, concurrency, method arguments, and optional TTFB fields. Report the selected methods in both initial and parse-only summaries, so a one-method selection no longer claims GET, PUT, and MIXED were all exercised.Add a small GitHub-hosted contract-test workflow for relevant PRs and main pushes. It executes local fake-warp tests and shell syntax validation without a server, credentials, SSH, or shared test machines.
Verification
python3 test_rustfs_performance_testing.py,bash -n rustfs_performance_testing.sh,shellcheck rustfs_performance_testing.sh,actionlint, andgit diff --checkpassed on the final diff.No actual benchmark, remote-machine operation, or deployment was run; this patch changes orchestration and result validation, which the local failure-injection tests exercise directly.
Impact
Calling workflows will now fail on unsuccessful or incomplete benchmarks. Historical output files without an execution-status record cannot provide a successful parse-only result; rerun the benchmark to obtain verified execution evidence. TTFB remains optional because warp does not always emit it.
Additional Notes
The terminal line is an execution-consistency record, not a tamper-proof signature. Immutable package/source identity and complete functional-chain provenance are tracked separately in rustfs/backlog#2297.