SDK Rejections
被拒绝的版本交给业务代码处理,处理完之前暂停发送
为什么验证
被拒绝的版本可能被后面的版本引用,继续发送只会得到更多拒绝。SDK 要把它和依赖它的版本一起交给业务代码,并在业务代码丢弃、改写或采用已保存的版本后继续发送。约定见 Submission · 被拒绝的版本。
前置条件
SDK 使用独立的 SQLite 文件,后端是记录每次请求、按需拒绝某个位置的 HTTP 处理器。待发送的版本依次是 EntitySchema、业务版本和引用业务版本的 InputSet,业务版本被拒绝。
操作与预期结果
| 操作 | 预期结果 |
|---|---|
发送,业务版本因 VERSION-6 被拒绝;再发送一次 | EntitySchema 已保存;发送状态给出被拒绝的业务版本和依赖它的 InputSet;第二次没有发出请求 |
| 重启 SDK | 被拒绝的版本仍在等待处理 |
| 丢弃被拒绝的版本 | InputSet 一起丢弃,其余版本继续发送 |
| 读取实体新的当前版本,基于它改写被拒绝的版本 | 发送改写后的版本和 InputSet |
| 后端的当前版本与被拒绝的版本内容相同,采用已保存的版本 | InputSet 改为引用当前版本后发送;之后引用这个实体时得到当前版本 |
测试实现
ObserverSdkTests 中的拒绝处理测试。
执行结果
Case ID:sdk-rejections
报告时间:
报告代码版本:d0ad859f366f8a9bd66443fc7a4fb2262bda1081
以下仅展示此 Case 在该报告中的执行结果。
- 在原报告中定位:PartialRejectionPausesPersistsAndAdoptsEqualSavedVersion
- 在原报告中定位:DiscardingRejectedVersionDiscardsDependentsAndResumesOthers
- 在原报告中定位:RewritingRejectedVersionUsesReadCurrentVersionAndResendsDependents
- 测试总数
- 3
- 通过
- 3
- 未成功
- 0
- 运行总耗时
- 未知