fix(test): give cert-revocation more cert life than discovery needs #158

Merged
vxfemboy merged 2 commits from fix/cert-revocation-discovery-budget into main 2026-08-04 00:36:19 +00:00
Owner

Fixes half of #157 — the hardening.41 cert-revocation flake.

CERT_A_SECS was 60. Step 8's retry loop stops 5s before expiry so the "still valid" invariant stays honest, leaving 55s of usable convergence window. But run-netns-discovery.sh:287 documents gossip warm-up as needing "up to a 60s budget".

The test allocated less time than its own sibling says the thing it waits for can take. That is why it flaked rather than failed outright: a green run was simply one that converged early, and runner load only decided which side of the line a run landed on. Commit 3cf588f failed this test on run 305 and passed it on run 306.

150s is ~2.5x the documented worst case.

The assertion is unchanged. The cert still expires mid-test — that is the entire point of the revocation check, and steps 9-11 (drop detection, no re-admission) are untouched. Every downstream deadline derives from CERT_A_SECS, so nothing else needed editing.

Cost: step 9's wait-for-expiry grows by the same 90s, on a job that runs ~31 minutes and has no timeout-minutes set.

Not addressed here: the arq_recovers_bulk_loss flake, also in #157. That one needs a decision (is the 98% floor mis-calibrated, or is recovery genuinely inconsistent?) rather than a number change, so it does not belong in this PR.

Fixes half of #157 — the `hardening.41` cert-revocation flake. `CERT_A_SECS` was 60. Step 8's retry loop stops 5s before expiry so the "still valid" invariant stays honest, leaving **55s** of usable convergence window. But `run-netns-discovery.sh:287` documents gossip warm-up as needing **"up to a 60s budget"**. The test allocated less time than its own sibling says the thing it waits for can take. That is why it flaked rather than failed outright: a green run was simply one that converged early, and runner load only decided which side of the line a run landed on. Commit `3cf588f` failed this test on run 305 and passed it on run 306. 150s is ~2.5x the documented worst case. **The assertion is unchanged.** The cert still expires mid-test — that is the entire point of the revocation check, and steps 9-11 (drop detection, no re-admission) are untouched. Every downstream deadline derives from `CERT_A_SECS`, so nothing else needed editing. **Cost:** step 9's wait-for-expiry grows by the same 90s, on a job that runs ~31 minutes and has no `timeout-minutes` set. Not addressed here: the `arq_recovers_bulk_loss` flake, also in #157. That one needs a decision (is the 98% floor mis-calibrated, or is recovery genuinely inconsistent?) rather than a number change, so it does not belong in this PR.
fix(test): give cert-revocation more cert life than discovery needs
Some checks failed
CI / shear (pull_request) Successful in 4m43s
CI / deny (pull_request) Successful in 8m39s
CI / build-test (pull_request) Successful in 13m58s
Coverage / coverage (pull_request) Successful in 14m19s
Integration (privileged) / bench-smoke (pull_request) Successful in 1m48s
Integration (privileged) / device-tests (pull_request) Successful in 58s
Integration (privileged) / netem-comparison (pull_request) Successful in 11m7s
Integration (privileged) / netns-tunnel-test (pull_request) Failing after 14m38s
Integration (privileged) / dpi-undetectability (pull_request) Successful in 14m18s
49bdcc6f05
CERT_A_SECS was 60. The retry loop in step 8 stops 5s before expiry to keep
the "still valid" invariant honest, so the usable convergence window was 55s
-- while run-netns-discovery.sh:287 documents gossip warm-up as needing "up
to a 60s budget". The test allocated less time than its own sibling says the
thing it waits for can take.

That is why it flaked rather than failed: a green run was one that happened
to converge early. Runner load only decided which side of the line a given
run landed on. Same commit 3cf588f failed this test on run 305 and passed it
on run 306, failing arq_recovers_bulk_loss instead.

150s is ~2.5x the documented worst case. The assertion is unchanged -- the
cert still expires mid-test, which is the whole point of the revocation
check. Every downstream deadline derives from CERT_A_SECS, so the only cost
is step 9's wait-for-expiry growing by the same 90s, on a job that runs ~31
minutes and has no timeout-minutes set.

Refs #157.
docs(changelog): record the CI tooling fix (#156) and the cert-revocation budget (#158)
Some checks failed
Integration (privileged) / bench-smoke (pull_request) Successful in 3m3s
Integration (privileged) / device-tests (pull_request) Successful in 49s
CI / shear (pull_request) Successful in 4m6s
CI / deny (pull_request) Successful in 6m24s
CI / build-test (pull_request) Successful in 12m38s
Coverage / coverage (pull_request) Successful in 13m6s
Integration (privileged) / netem-comparison (pull_request) Successful in 15m34s
Integration (privileged) / netns-tunnel-test (pull_request) Failing after 17m24s
Integration (privileged) / dpi-undetectability (pull_request) Successful in 14m34s
c6c70e16ae
Neither was in the changelog. #156 is the one worth reading later: three
privileged jobs drove ip/tcpdump/iperf3 without declaring them, and one of
them only ever worked because wireguard-tools listed iproute2 as a
Recommends -- so it broke the day apt stopped resolving it, with nothing in
the repo having changed.
vxfemboy deleted branch fix/cert-revocation-discovery-budget 2026-08-04 00:36:20 +00:00
Sign in to join this conversation.
No description provided.