Repository navigation
test(proxy): 补压缩轮累计上限的端到端验收(非流式+流式) - #76
Merged
Merged
Conversation
上限判据(上限 > 上游自报失败 > 项数)此前只有纯函数层的对拍,缺「正文里确实有 恰好一个原生项、但体积超限」这一组合的端到端证据——而那正是最容易失手的形态: 项数过关会让透传路径以为可以放行,客户端于是拿到一份状态被截断的响应却毫不知情。 - 非流式:超限响应必须按失败收口(原因 compaction_over_limit),opaque 一个字 都不下发,也不冒充本地摘要。 - 流式:累计到上限后停止转发,并以显式失败帧收口;转发量必须被上限截住。 上限值刻意在测试里写死并与实现侧同值:有人放宽上限时,这条测试必须显式改动, padding 也要同步加大,否则悄悄退回「测不到超限」。 两条测试的有效性反向验过:把实现侧 over_limit 判据改成恒 false 后,非流式那条立刻失败。
GGGBB
commented
Oct 15, 2026
GGGBB
left a comment
Owner
Author
There was a problem hiding this comment.
合并前对账(维护者复核,head ff3646e)
CI 四检查全绿。逐条对过 #2 的验收清单:
| #2 验收项 | 覆盖它的测试 | 判定 |
|---|---|---|
| 恰好一项时逐字节透传 | native_compaction_item_passes_through_byte_for_byte |
已有(#74) |
| 400 显式拒绝才降级本地摘要 | rejected_trigger_degrades_to_local_summary_once + unrelated_4xx_...(反判据) |
已有(#74) |
超上限或截断流显式 response.failed |
truncated_compaction_stream_still_gets_failure_frame + 本 PR 两条超限 |
本 PR 补齐 |
| 判据输入输出对拍 | native_compaction_probe_tests / native_compaction_assembly_tests |
已有 |
本 PR 的两个关键设计点,我认可
- 上限值在测试里与实现侧同值重复定义、不导入——抬上限的人必须同时改 padding,
否则测试立刻失效。这是拿「测试变红」替代「测试悄悄失效」,正对。 - 流式那条断言的是「转发量被上限截住」,不是「零字节下发」——累计额度以内的前缀
本来就被转发,钉成零字节会误报。这个口径差异我核过实现(over_limit命中后continue
停止转发,但已转发的不回收),一致。
有效性反向验过
把实现侧 over_limit 改成恒 false,非流式那条立刻失败;恢复后全绿。这一条不是自述,
我本地独立复跑过同样的验证。
计数
native_compaction_wiring 7 → 9,其余 8 个测试 target 计数逐字不变;
lib 侧 never-used warning 仍 3 条;两条中性化判据整树零命中。
流程偏差声明
代码由维护者会话亲自写,单账号下无法自审 APPROVE,以本条评论留对账依据后执行 rebase
合并。本条评论即合并前的批准口径留痕(供 self-approval aftercheck 交叉),不是绕过。
合并后关闭 #2。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
补的是哪一格
压缩轮三判据的优先级(上限 > 上游自报失败 > 项数)此前只有纯函数层对拍:
verdict_lets_limit_beat_native_item直接把over_limit=true喂给判据函数。缺的是端到端那一格——正文里确实有恰好一个原生 compaction 项、但体积超限。
这是最容易失手的组合:项数过关会让透传路径以为可以放行,客户端于是拿到一份
「看起来压缩完了、其实状态被截断」的响应而毫不知情,而下游会话会静默丢上下文。
两条验收
compaction_over_limit),opaque 一个字都不下发,也不冒充本地摘要命名空间。
并以显式
response.failed收口;转发量必须被上限截住。上限值刻意在测试里写死
MAX_COMPACTION_RESPONSE_BYTES在测试里与实现侧同值重复定义,不导入。理由:有人抬上限时这条测试必须显式改动,padding 也要同步加大——否则会悄悄退回
「测试还在、但已经测不到超限」,那是本仓库最反对的恒绿形态。
测试有效性反向验过
把实现侧
over_limit判据临时改成恒 false(本地,未提交),非流式那条立刻失败;恢复后 9 条全绿。不是写完就看到绿的。
现场计数
native_compaction_wiring7 → 9;lib 194 / bin 6 / 透传 e2e 1 / drain 3 /protocol_proxy 189 / 方言集成 1 / 监看 8 / 持久化 e2e 1 全部不变;
lib 侧 never-used warning 仍 3 条;两条中性化判据整树零命中;
新增文件无(只改既有测试文件,且已
rustfmt --edition 2024保持该文件干净)。与 issue #2 的关系
这是 #2 验收清单里「补超限与截断流测试」那一条的收口:截断流形态已有
truncated_compaction_stream_still_gets_failure_frame钉住,超限形态由本 PR 两条补齐。合并后 #2 的四条验收全部有实现与测试对应,可关单。