2.0 KiB
2.0 KiB
Mock 服务随机 logId 实施记录
问题背景
- 2026-03-20 联调过程中,
lsfx-mock-server的logId仍使用进程内递增方式分配。 - 仓库文档与接口预期要求 Mock 返回随机
logId,避免联调时对顺序值形成隐式依赖。
根因分析
lsfx-mock-server/services/file_service.py中,upload_file()与fetch_inner_flow()都直接通过self.log_counter += 1生成logId。- 现有测试只覆盖了
logId落在10000-99999区间内,没有约束“冲突时需要重试并避让已有记录”。
本次修改
- 在
lsfx-mock-server/tests/test_file_service.py先新增红灯测试test_generate_log_id_should_retry_when_random_value_conflicts。- 固定随机值第一次命中已存在
logId时必须重试。 - 同步把行内流水测试中的旧递增断言改为随机区间断言。
- 固定随机值第一次命中已存在
- 在
lsfx-mock-server/services/file_service.py新增统一_generate_log_id()。- 在
10000-99999区间内随机生成。 - 若命中
file_records中已存在的logId,则继续重试直到拿到未占用值。 upload_file()与fetch_inner_flow()均切换为调用该方法。
- 在
验证结果
python3 -m pytest lsfx-mock-server/tests/test_file_service.py -k "fetch_inner_flow_persists_primary_binding_record or generate_log_id_should_retry_when_random_value_conflicts" -v- 结果:
2 passed
- 结果:
python3 -m pytest lsfx-mock-server/tests/test_file_service.py lsfx-mock-server/tests/test_statement_service.py lsfx-mock-server/tests/test_api.py lsfx-mock-server/tests/integration/test_full_workflow.py -v- 结果:
39 passed, 20 warnings
- 结果:
实施结果
- Mock 服务的新建上传记录与行内流水记录已改为随机
logId。 - 同一
logId下的规则命中计划、流水样本与上传状态复用逻辑保持不变。