fleetd #668: add the validateLeadRollover reachability case #674

Closed
agent wants to merge 0 commits from worker/668-08534d-4 into main
Member

Closes fleetd #668.

FleetConfigValidateAllTest.validateAllReachesEveryOneOfTodaysRealValidators enumerated one minimal failing config per validator and drove it through validateAll(), but covered only seven of FleetConfig's eight declared validators. validateLeadRollover had no case, so nothing proved validateAll() actually reaches it.

What changed:

  • Added a validateLeadRollover case: a minimal config with a present leadRollover: block and no handoverPath, asserted to fail through validateAll() with a message containing handoverPath.
  • Updated the class javadoc and the test method javadoc to say all eight validators are now covered (removed the stale note about the eighth having no case).
  • fleetConfigDeclaresExactlyTheseValidatorsToday()'s failure message now also tells the reader to add or remove a case in the reachability enumeration, not only update its own expected set - that assertion alone never proved reachability.

Proof the new case is not vacuous: temporarily renamed validateLeadRollover in FleetConfig.java (so the reflective sweep in invokeAllValidators no longer finds it) and reran FleetConfigValidateAllTest - validateAllReachesEveryOneOfTodaysRealValidators failed exactly at the lead-rollover.yaml case ("Expected IllegalStateException to be thrown, but nothing was thrown"), then reverted and reran green.

Tests run: mvn clean install in this worktree - BUILD SUCCESS, Tests run: 1928, Failures: 0, Errors: 0, Skipped: 0.

Closes fleetd #668. `FleetConfigValidateAllTest.validateAllReachesEveryOneOfTodaysRealValidators` enumerated one minimal failing config per validator and drove it through `validateAll()`, but covered only seven of FleetConfig's eight declared validators. `validateLeadRollover` had no case, so nothing proved `validateAll()` actually reaches it. What changed: - Added a `validateLeadRollover` case: a minimal config with a present `leadRollover:` block and no `handoverPath`, asserted to fail through `validateAll()` with a message containing `handoverPath`. - Updated the class javadoc and the test method javadoc to say all eight validators are now covered (removed the stale note about the eighth having no case). - `fleetConfigDeclaresExactlyTheseValidatorsToday()`'s failure message now also tells the reader to add or remove a case in the reachability enumeration, not only update its own expected set - that assertion alone never proved reachability. Proof the new case is not vacuous: temporarily renamed `validateLeadRollover` in `FleetConfig.java` (so the reflective sweep in `invokeAllValidators` no longer finds it) and reran `FleetConfigValidateAllTest` - `validateAllReachesEveryOneOfTodaysRealValidators` failed exactly at the `lead-rollover.yaml` case ("Expected IllegalStateException to be thrown, but nothing was thrown"), then reverted and reran green. Tests run: `mvn clean install` in this worktree - BUILD SUCCESS, Tests run: 1928, Failures: 0, Errors: 0, Skipped: 0.
agent added 1 commit 2026-10-03 20:48:34 +02:00
fleetd #668: add the missing validateLeadRollover reachability case
CI / shell-tests (pull_request) Failing after 10s
CI / contract (pull_request) Successful in 1m6s
CI / build (pull_request) Failing after 1m43s
37b23cd704
validateAllReachesEveryOneOfTodaysRealValidators now exercises all
eight FleetConfig validators through validateAll(), not seven -
adding a minimal leadRollover: block with no handoverPath as the
eighth fixture. The canary's failure message in
fleetConfigDeclaresExactlyTheseValidatorsToday now also points the
reader at the reachability enumeration, since updating the expected
set alone does not prove validateAll() reaches a newly added
validator.
ltms closed this pull request 2026-10-03 20:54:02 +02:00
Some checks are pending
CI / shell-tests (pull_request) Failing after 10s
CI / contract (pull_request) Successful in 1m6s
CI / build (pull_request) Failing after 1m43s

Pull request closed

Sign in to join this conversation.