ci(#5441): enable parallel godog concurrency (default 12) - #5636
Conversation
Remove the serial-only guard in suite_test.go that rejected GODOG_CONCURRENCY != 1. The suite now parses GODOG_CONCURRENCY from the environment as an integer, defaulting to 12 (matching the repo pool size). Per-scenario World cloning, repo pool leasing, lazy ensure, and ephemeral fork aliasing are all in place from the four prerequisite issues (#5437-#5440), so concurrent scenarios no longer share mutable state. Add -race to the behaviour-test Make target so the race detector validates concurrent scenarios during CI runs. Document the GODOG_CONCURRENCY env var in the behaviour testing guide, including how to set concurrency and fall back to serial mode for debugging. Closes #5441
|
🤖 Finished Review · ✅ Success · Started 10:30 AM UTC · Completed 10:44 AM UTC |
Site previewPreview: https://e7f9a111-site.fullsend-ai.workers.dev Commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ReviewFindingsMedium
Labels: PR modifies e2e behaviour test suite and test documentation |
There was a problem hiding this comment.
See the review comment for full details.
Note: The following inline comments could not be posted on the diff (GitHub returned 422) and are included here instead:
e2e/behaviour/suite_test.go(file-level): Line 80 · [medium] pool-concurrency mismatch
The repo pool size is hardcoded to 12 (NewRepoPool(12)) while godog concurrency is configurable via GODOG_CONCURRENCY. If a user sets GODOG_CONCURRENCY above 12, extra godog workers will block in pool.Acquire waiting for a lease, silently capping real parallelism at 12 with no error or warning.
Suggested fix: Add a validation check after computing concurrency that fatals or warns if concurrency > 12. Do NOT use NewRepoPool(concurrency) as the sole fix because the pool org only has 12 enrolled repos with per-repo mint enrollment. The simplest correct fix is: if concurrency > 12 { t.Fatalf("GODOG_CONCURRENCY=%d exceeds repo pool size 12", concurrency) }.
|
/fs-fix |
|
🤖 Finished Fix · ✅ Success · Started 11:13 AM UTC · Completed 11:24 AM UTC |
Add poolSize const (12) and validate that GODOG_CONCURRENCY does not exceed it — previously extra godog workers would silently block in pool.Acquire. Also update behaviour-drivers.md to reflect that numbered test-repo-NN repos are now actively leased during parallel execution. Addresses review feedback on #5636
🔧 Fix agent — iteration 1 (human-triggered)Addressed both review findings: (1) added poolSize const and validation guard preventing GODOG_CONCURRENCY from exceeding repo pool size, and (2) updated stale documentation in behaviour-drivers.md to reflect that parallel execution is now enabled. Fixed (2):
Tests: passed Updated by fullsend fix agent |
|
🤖 Finished Retro · ✅ Success · Started 11:52 AM UTC · Completed 12:07 PM UTC |
Retro: PR #5636 — enable parallel godog concurrencyVerdict: Workflow executed well. The code→review→fix pipeline completed in ~1.5 hours with one rework iteration. All improvement areas are already tracked by existing open issues — no new proposals. Timeline
What went well
Evidence for existing issues
Non-issues investigated
|
Summary
Enable parallel godog scenario execution in the behaviour suite, defaulting to
GODOG_CONCURRENCY=12(matching the repo pool size). This removes the serial-only guard that was in place while per-scenario isolation prerequisites were being built.Related Issue
Closes #5441 (child of epic #3454)
Changes
e2e/behaviour/suite_test.go: Remove the serial-only guard that fataled onGODOG_CONCURRENCY != 1. ParseGODOG_CONCURRENCYfrom the environment as an integer (default 12) and pass it togodog.Options.Concurrency.Makefile: Add-raceto thebehaviour-testtarget so concurrent scenarios are validated under the Go race detector.docs/guides/dev/behaviour-testing.md: DocumentGODOG_CONCURRENCYenv var, the default of 12, and how to use serial mode (GODOG_CONCURRENCY=1) for debugging.Testing
go vet -tags behaviour ./e2e/behaviour/passesgo test -tags behaviour -run "^$" ./e2e/behaviour/compiles successfullymake go-testpasses for all packages (pre-existing infra failures ininternal/binary,internal/cli,internal/fetchare unrelated)GODOG_CONCURRENCY=12 make behaviour-test— requires live GitHub infra (CI validation)GODOG_CONCURRENCY=1 make behaviour-test— serial fallback (CI validation)Checklist
!for breaking changes)workflowspermission limitation)e2e.ymlenv var changesCloses #5441
Post-script verification
agent/5441-enable-godog-concurrency)70e5d9132d67e0afd75632ceeed7f77c738d8ba8..HEAD)