Skip to content

ci: add scheduled fuzz testing workflow - #744

Open
mliem2k wants to merge 1 commit into
bytedance:mainfrom
mliem2k:ci/scheduled-fuzz-tests
Open

ci: add scheduled fuzz testing workflow#744
mliem2k wants to merge 1 commit into
bytedance:mainfrom
mliem2k:ci/scheduled-fuzz-tests

Conversation

@mliem2k

@mliem2k mliem2k commented Jul 15, 2026

Copy link
Copy Markdown

What problem does this PR solve?

Issue Number: close #115

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance improvement (optimization)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactoring (no logic changes)
  • Build/CI or Infrastructure changes
  • Documentation only

Description

Bolt already ships several Velox derived fuzzers (expression, aggregation, window, join, parquet, connector, vector), but none of them are wired into CI today, so they only catch bugs when someone remembers to run them manually. This adds a nightly scheduled workflow, .github/workflows/scheduled-fuzz-tests.yml, that builds Bolt once with test utilities enabled and then runs seven of the existing fuzzer binaries for a bounded duration each, in parallel, via a matrix job:

  • bolt_expression_fuzzer_test
  • spark_expression_fuzzer_test
  • bolt_aggregation_fuzzer_test
  • spark_aggregation_fuzzer_test
  • bolt_window_fuzzer_test
  • spark_window_fuzzer_test
  • bolt_join_fuzzer_test

Each binary is located dynamically under _build/Release with find rather than a hardcoded path, so the workflow does not break if the CMake output layout changes. Duration is controlled by a FUZZ_DURATION_SEC env var, defaulting to 1800 seconds and overridable via workflow_dispatch for manual runs. On failure, any reproducer output under /tmp/velox_* or /tmp/bolt_* is uploaded as a build artifact to aid triage.

The job reuses the exact runner, container image, and conan service conventions already used in build-main.yml and build-test.yml (self-hosted, medium runner, bolt-registry:5000/bolt-ci image, bolt-build-base composite action, make release_spark_with_test), so it fits the existing CI setup rather than introducing a new pattern.

Scope was kept intentionally narrow to what issue #115 asks for. Additional fuzz targets that already exist in the tree (parquet, exchange, connector, vector) were left out of this first pass and can be added later if useful.

Note: issue #114 (scheduled ASAN builds) was not addressed in this PR. It already has an open PR (#656) covering the same scope, so I did not duplicate that effort.

Performance Impact

  • No Impact: This change does not affect the critical path (e.g., build system, doc, error handling).

Release Note

Release Note:

Chore: Added a nightly scheduled CI workflow that runs the existing expression, aggregation, window, and join fuzzers for a bounded duration to catch bugs that per PR CI does not exercise.

Checklist (For Author)

  • I have added/updated unit tests (ctest).
  • I have verified the code with local build (Release/Debug).
  • I have run clang-format / linters.
  • (Optional) I have run Sanitizers (ASAN/TSAN) locally for complex C++ changes.
  • No need to test or manual test.

Breaking Changes

  • No

Add a nightly scheduled GitHub Actions job that builds Bolt with test
utilities enabled and runs the existing expression, aggregation,
window, and join fuzzer binaries for a bounded duration each. This
complements per-PR CI, which does not exercise these fuzzers, and
follows the same self-hosted runner and container conventions used by
the existing build-main and build-test workflows.
Copilot AI review requested due to automatic review settings July 15, 2026 16:54

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@CLAassistant

CLAassistant commented Jul 15, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

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.

[Chore] Add scheduled fuzzer runs

3 participants