SDK Confirmation
SDK 按响应确认版本,并在失败后原样重发
为什么验证
SDK 只靠响应判断哪些版本已保存,不读回数据。每种响应都要对应确定的处理:确认、拒绝、拆批、重发或停止。约定见 Submission · 确认 和 重试。
前置条件
SDK 使用独立的 SQLite 文件,后端是记录每次请求、按每行的需要返回响应的 HTTP 处理器。
操作与预期结果
| 后端的响应 | 预期结果 |
|---|---|
200 | 这一批全部确认为已保存,待发送的数量为 0 |
409,index 为 1 | 第一个版本确认为已保存,第二个版本被拒绝,之后的版本仍待发送 |
400,不带 index | 停止发送,发送状态中报告错误 |
一批有两个版本时返回 413,一个版本时返回 200 | 拆成每批一个版本重新发送,两个版本都确认 |
| 第一次请求的响应丢失;重启 SDK 后再发送 | 第二次请求的内容与第一次相同,版本得到确认 |
测试实现
ObserverSdkTests 中的确认与重试测试。
执行结果
Case ID:sdk-confirmation
报告时间:
报告代码版本:d0ad859f366f8a9bd66443fc7a4fb2262bda1081
以下仅展示此 Case 在该报告中的执行结果。
- 在原报告中定位:LostResponseRetriesIdenticalPayloadAfterRestartAnd413Splits
- 在原报告中定位:IndexedConflictConfirmsPrefixRejectsTargetAndLeavesSuffixPending
- 在原报告中定位:ContractErrorWithoutIndexStopsSendingAndReportsError
- 在原报告中定位:SuccessfulResponseConfirmsWholeBatch
- 测试总数
- 4
- 通过
- 4
- 未成功
- 0
- 运行总耗时
- 未知