| test(distributed): add test for EtcdStore APIs for v2.12.0 Co-authored-by: zf_zhang<sjzz0306@outlook.com> # message auto-generated for no-merge-commit merge: !35276 merge test-elastic-etcdstore-pytorch-v2120 into v2.12.0 test(distributed): add test for EtcdStore APIs for v2.12.0 Created-by: zf_zhang Commit-by: zf_zhang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/1676?ref=&did=3850294#tid-3850294**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 用例设计原则 本次验证结合官方用例复用与自定义用例补充的方式,遵循 “最小化、核心化、针对性” 原则,核心思路为: * 补充缺失用例:针对torch.distributed.elastic.rendezvous.etcd_store.EtcdStore;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.get;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.add;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.wait;torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check等六个缺失用例,以及torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set_timeout和集成场景设置,我们设计了精简且详细的测试用例,覆盖了EtcdStore类的所有核心功能 * 聚焦核心功能:我们验证了这些 API 的基础操作以及功能,确保结果反映 API 本身适配状态; * 轻量化设计:单个测试方法仅验证一个核心功能点,逻辑清晰、执行高效,便于问题定位。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore: 我们围绕EtcdStore的连接可靠性、前缀规范化及超时机制,设计了基于真实 etcd 环境的初始化与行为一致性测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.set 和 torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.get: 我们围绕EtcdStore对不同数据类型的兼容性、覆写语义、异常处理、特殊字符支持及阻塞/超时行为,设计了全面验证 set/get 正确性与并发语义的测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.add: 我们围绕EtcdStore.add的初始化与累加语义、相减与幂等性、以及高并发场景下的原子性与一致性,设计了覆盖功能正确性与并发安全性的 add 测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.wait: 我们针对 EtcdStore.wait,设计了多线程延迟写入验证正常阻塞返回、全局与覆盖超时触发异常、以及部分 key 存在时超时失败的测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check: 我们针对 EtcdStore.check,设计了覆盖key的全部存在、部分存在、全部不存在、空列表边界及单个key 场景的非阻塞检查行为测试用例。 * torch.distributed.elastic.rendezvous.etcd_store.EtcdStore.check: 我们针对 EtcdStore.set_timeout,设计了验证默认超时生效、零超时立即返回以及对 get 和 wait 行为产生影响的测试用例。 此外,我们还针对 EtcdStore 集成场景,设计了多节点并发 rendezvous 协调流程与高并发混合操作压力测试,验证其同步一致性与稳定性。 * 用例合理性说明:自定义用例虽简洁,但具备充分有效性与合理性。 * 自定义用例精准补全:EtcdStore自定义用例聚焦无官方用例覆盖的所有核心功能,贴合实际业务使用方式,验证结果具备业务参考价值; * 适配操作最小化:只对EtcdStore类的核心功能进行验证。 * 符合官方规范:自定义用例基于 PyTorch 官方测试框架开发,使用原生断言方法,与官方用例测试标准保持一致;  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35276 | 2 个月前 |