ci: compile-gate all features + nightly stress-tests - #578
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
WalkthroughCI adds a locked all-features workspace check and a scheduled or manually triggered stress-test workflow using a dedicated Cargo alias and ChangesCI validation
Estimated code review effort: 2 (Simple) | ~10 minutes Sequence Diagram(s)sequenceDiagram
participant Scheduler
participant GitHubActions
participant Cargo
participant Nextest
Scheduler->>GitHubActions: Trigger scheduled or manual workflow
GitHubActions->>Cargo: Run cargo ci-test-stress
Cargo->>Nextest: Run workspace tests with stress-tests feature
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #578 +/- ##
==========================================
+ Coverage 93.38% 93.41% +0.02%
==========================================
Files 175 175
Lines 104361 104361
==========================================
+ Hits 97456 97485 +29
+ Misses 6905 6876 -29 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
908a217 to
4aa18e8
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/check.yml:
- Around line 159-160: Disable checkout credential persistence by adding
persist-credentials: false to the actions/checkout steps in
.github/workflows/check.yml lines 159-160 and .github/workflows/stress.yml lines
24-25; update both workflow checkout sites consistently.
In @.github/workflows/stress.yml:
- Around line 21-22: Add a job-level timeout-minutes setting under the
stress-tests job, near runs-on, using a value comfortably above the suite’s
normal runtime so deadlocks and timing regressions terminate before the runner’s
hard limit.
- Around line 20-22: Add a permissions declaration for the stress-tests
workflow, at workflow or job scope, granting only contents: read. Place it
alongside the existing workflow or stress-tests job configuration and preserve
the current runner and test behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 5f514c0c-26c1-4306-b2c3-6ae20d25aa57
📒 Files selected for processing (3)
.cargo/config.toml.github/workflows/check.yml.github/workflows/stress.yml
4aa18e8 to
33a287c
Compare
33a287c to
fd0c994
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/check.yml:
- Line 242: Update the Cargo check command in the all-features CI step to
include the --locked flag, ensuring it uses Cargo.lock without re-resolving
dependencies while preserving the existing workspace, feature, and target
checks.
In @.github/workflows/stress.yml:
- Around line 3-8: Update the introductory comment in the stress workflow to
remove the inaccurate claim that no other CI job enables the stress-tests
feature. Clarify that check.yml enables the feature only to compile the suite,
while this scheduled/on-demand workflow executes the stress tests.
- Around line 9-17: Add a stable concurrency group to the stress workflow so
scheduled and manually dispatched runs share the same group and cannot overlap.
Configure the workflow-level concurrency settings near the existing permissions
block, preserving the current trigger and cancellation behavior unless
explicitly required.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 11b54064-75aa-4b0e-9589-19e0561e7221
📒 Files selected for processing (3)
.cargo/config.toml.github/workflows/check.yml.github/workflows/stress.yml
fd0c994 to
18f70f9
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
The regular jobs build only a fixed feature set (default + compare,simulate,profile-adjacency), and no-default-features-check builds the all-off end. That left several declared features never compiled in CI -- `memory-debug` (dozens of instrumentation sites), `dhat-heap`, and `stress-tests` -- free to bit-rot silently. Add an `all-features-check` job (`cargo check --workspace --all-features --all-targets`) that compiles every feature at once, across lib + tests + benches, so any feature that stops compiling fails at PR time. Enabling everything also covers future features automatically.
The `test_pipeline_concurrency::stress_tests` module (behind the `stress-tests` feature) exercises the BAM pipeline under adversarial thread counts, tiny queues, injected failures, and deadlock detection. The `all-features-check` job added in the previous commit compiles it, but no CI job ever ran it. Add a scheduled `stress.yml` workflow (nightly + workflow_dispatch) that runs it via a new `ci-test-stress` alias. Run on a schedule rather than per-PR because the tests are timing-sensitive and an occasional flake should not block unrelated changes; they pass in ~6s locally. A `nightly-stress-tests` concurrency group serializes scheduled and manual runs so they cannot contend for runner capacity.
18f70f9 to
b90771d
Compare
|
@coderabbitai review |
✅ Action performedReview finished.
|
Closes two "feature declared but never exercised in CI" gaps (task-list T3 + T4).
T3 — compile-gate every feature (
all-features-checkjob)CI only built a fixed feature set (default +
compare,simulate,profile-adjacency);no-default-features-checkbuilt the all-off end. Between them, several declared features were never compiled —memory-debug(dozens of instrumentation sites),dhat-heap,stress-tests— free to bit-rot.New
all-features-checkjob runscargo check --workspace --all-features --all-targets— every feature at once, lib + tests + benches, so any feature that stops compiling fails at PR time (and future features are covered automatically). Verified green locally. (I first triedcargo hack --each-feature, but this workspace's integration tests are#[cfg(feature)]-gated to the default set, so per-feature-in-isolation checks are noisy;--all-featuresis the clean, future-proof gate here.)T4 — run the concurrency stress suite nightly (
stress.yml)test_pipeline_concurrency::stress_tests(behindstress-tests) exercises the BAM pipeline under adversarial thread counts, tiny queues, injected failures, and deadlock detection. No CI job enabled the feature, so it never ran.New scheduled
stress.yml(nightly +workflow_dispatch) runs it via aci-test-stressalias. Scheduled rather than per-PR because the tests are timing-sensitive and a flake shouldn't block unrelated PRs (they pass in ~6s locally — trivially promotable to per-PR later if they prove stable).Note
Both edit CI config; like the other in-flight CI PRs (#573/#574/#575/#577) each appends its own job/workflow, so merge conflicts are trivial (append-only).
Summary by CodeRabbit
all-features-checkjob to runcargo checkacross the full workspace with all features enabled for all targets, using the committed lockfile.