Repository navigation
test(j1939tp): a paced BAM round trip does not gate on the receiver's default T1 - #279
Conversation
… default T1 Eight tests round-trip a BAM paced at 5 ms on the real clock and assert the reassembled datagram. Their receivers kept the default T1 of 750 ms, re-armed per TP.DT, while every DT crosses a thread-pool confirmation hop, an actor post and the spacing timer on its way: a host stall longer than 750 ms between any two packets turned a reassembly test into a T1 abort, which is what the macOS leg of #276 produced (#277). Five tests in the class already pin T1 high for this reason ("T1 must not fire first"); these now share one PacedRoundtripOptions with T1 at 30 s, so ShortTimeout is their only clock. The parallel BAM+CM test lifts T2 and T3 the same way. T1 itself keeps its own tests. Closes #277 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NPLBiJfQ9po3gRXbWpiQn6
PR SummaryLow Risk Overview Adds shared Reviewed by Cursor Bugbot for commit 1f879ab. Bugbot is set up for automated code reviews on this repo. Configure here. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
What does this change?
Closes #277. Eight tests in
J1939TpTestsround-trip a BAM paced at 5 ms on the real clock and assert the reassembled datagram, not timing. Their receivers kept the default T1 of 750 ms, re-armed per TP.DT, while every DT crosses a thread-pool confirmation hop, an actor post and the spacing timer on its way. A host stall longer than 750 ms between any two packets turned a reassembly test into a T1 abort, which is what the macOS leg of #276 produced.Five tests in the class already pin T1 high for this reason (
t1: TimeSpan.FromSeconds(5)"T1 must not fire first", and 30 s elsewhere). The eight now share onePacedRoundtripOptions()with T1 at 30 s, soShortTimeoutis their only clock, and the comment on it names the quantity the host perturbs and the margin that remains.Parallel_Bam_And_TwoCm_Sessions_Do_Not_Interferelifts T2 and T3 the same way, since its CM sessions run on the same clock. T1 keeps its own tests (Bam_Receiver_T1Timeout_FaultsReceiveAsyncWhenDtStopsand the virtual-clock ones), which is where a timer that is the subject belongs.Not taken from #277: the abort message naming the packet index. That is product code and a
fixrelease for a diagnostic this change makes unnecessary in the suite; if it is wanted for the field, it is a separate decision.No mutation check: this change removes an incidental gate rather than adding a detection claim. The eight tests' reassembly assertions are unchanged.
Type of change
feat— new behaviour (minor release)fix/perf— bug or performance fix (patch release)docs/test/refactor/chore/ci— no release!in the title, plus aBREAKING CHANGE:footer explaining the migration)Checklist
dotnet build CanKit.Pro.sln -c Releasesucceeds — with-p:CI=truedotnet test CanKit.Pro.sln -c Releasepasses — 1532/1532 on net10.0;dotnet format --verify-no-changesanddotnet pack+eng/verify-packages.pyalso runFR-RAW-031,ADR-7), if any — Bam_Roundtrip_ReceiverReassemblesIdenticalPayload failed once on macos-latest with a T1 timeout #277, Three wall-clock-dependent tests fail intermittently across all three CI legs #92🤖 Generated with Claude Code
https://claude.ai/code/session_01NPLBiJfQ9po3gRXbWpiQn6
Generated by Claude Code