Skip to content

ci(storage): add GCS read microbenchmark runner and Cloud Build config - #18298

Merged
shradhakatyal merged 9 commits into
googleapis:mainfrom
shradhakatyal:feat-gcs-read-benchmark-runner
Sep 22, 2026
Merged

shradhakatyal merged 9 commits into
googleapis:mainfrom
shradhakatyal:feat-gcs-read-benchmark-runner

Conversation

@shradhakatyal

Copy link
Copy Markdown
Contributor

Add automated Cloud Build CI workflow and test runner script for high-bandwidth GCS DirectPath read microbenchmarks against rapid zonal buckets.

  • Add benchmarks-cloudbuild.yaml to orchestrate VM lifecycle and private SSH runs.
  • Add run_benchmark_tests.sh for VM environment setup and pytest execution.
  • Display formatted performance results table directly in Cloud Build logs.

Add automated Cloud Build CI workflow and test runner script for high-bandwidth
GCS DirectPath read microbenchmarks against rapid zonal buckets.

- Add benchmarks-cloudbuild.yaml to orchestrate VM lifecycle and private SSH runs.
- Add run_benchmark_tests.sh for VM environment setup and pytest execution.
- Display formatted performance results table directly in Cloud Build logs.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a Cloud Build pipeline (benchmarks-cloudbuild.yaml) and a runner script (run_benchmark_tests.sh) to automate running GCS DirectPath read microbenchmarks on high-bandwidth GCE VMs. The review feedback highlights several critical improvements: implementing a bash trap to guarantee the VM is stopped on early exit, adding defensive type-validation for loaded JSON data to comply with the repository style guide, fixing potential TypeError and ValueError bugs during benchmark result parsing, and verifying that the runtime patching of conftest.py does not fail silently.

… and type validation

- Add EXIT trap to ensure standing VM shutdown on failure.
- Check SSH connection success and fail if connection times out.
- Add target existence validation when patching conftest.py.
- Add defensive type validation (isinstance) for parsed JSON results.
- Wrap float conversion for network throughput in try-except.
@shradhakatyal

shradhakatyal commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor Author

/gcbrun e682ba4

@shradhakatyal
shradhakatyal marked this pull request as ready for review September 10, 2026 05:45
@shradhakatyal
shradhakatyal requested a review from a team as a code owner September 10, 2026 05:45
@chandra-siri

Copy link
Copy Markdown
Contributor

nit: regarding the name of CloudBuild Run - gcs itself has storage , you named it gcs-storage ..., extra storage. - Please remove it.

…nner

- Add _BUCKET_TYPE and _REGIONAL_BUCKET substitutions in benchmarks-cloudbuild.yaml.
- Update run_benchmark_tests.sh to export distinct DEFAULT_RAPID_ZONAL_BUCKET and DEFAULT_STANDARD_BUCKET.
- Pass BUCKET_TYPE, ZONAL_BUCKET, and REGIONAL_BUCKET to run_benchmark_tests.sh over SSH.
…dencies

- Update default benchmark rounds from 2 to 3.
- Rename OUT_JSON to OUTPUT_JSON_PATH.
- Echo OUTPUT_JSON_PATH and UPLOAD_GCS_PREFIX in runner banner.
- Remove redundant google-cloud-kms and duplicate editable pip install commands.
…lone script

- Add display_benchmark_results.py to format and display test results.
- Invoke display_benchmark_results.py from run_benchmark_tests.sh.
- Update Cloud Build Step 4 to reuse display_benchmark_results.py.
@shradhakatyal

Copy link
Copy Markdown
Contributor Author

/gcbrun 5c6c050

- Support optional environment variables for benchmark parameters in time_based/reads/config.py.
- Export benchmark parameters in run_benchmark_tests.sh.
- Remove runtime on-the-fly patching of config.yaml, sed, and conftest.py.
@shradhakatyal

Copy link
Copy Markdown
Contributor Author

/gcbrun 51668d3

@shradhakatyal

Copy link
Copy Markdown
Contributor Author

/gcbrun 5121cec

@shradhakatyal

Copy link
Copy Markdown
Contributor Author

/gcbrun 0613d07

@shradhakatyal
shradhakatyal merged commit 1b7dcd5 into googleapis:main Sep 22, 2026
48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants