Commit 8facb8d
Test the catch-up NACK guard at the ack boundary
The catch-up-NACK routing guard (fsn <= ackedFsn) had its equality case
untested: the common single-frame catch-up maps its only catch-up frame
to fsn == ackedFsn exactly, yet the existing test only exercised the
strictly-below case (fsn = -2 < ackedFsn = -1). A "<=" -> "<" mutation
therefore survived the suite while routing the single (or last) catch-up
frame's NACK onto the poison-strike path and laundering the detector.
Add testPostSendCatchUpNackAtAckedFsnBoundaryDoesNotStrike, which drives
fsn == ackedFsn == -1 and asserts poisonStrikes stays 0. poisonStrikes,
not poisonFsn, is the discriminator here: a wrongly-charged strike sets
poisonFsn to the rejected fsn -1, which is the "no suspect" sentinel, so
a poisonFsn check is blind at this boundary. The mutation charges the
strike (0 -> 1) and the test fails; the production guard is unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 084f93f commit 8facb8d
1 file changed
Lines changed: 42 additions & 0 deletions
File tree
- core/src/test/java/io/questdb/client/test/cutlass/qwp/client/sf/cursor
Lines changed: 42 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
696 | 696 | | |
697 | 697 | | |
698 | 698 | | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
699 | 741 | | |
700 | 742 | | |
701 | 743 | | |
| |||
0 commit comments