| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】: precommit src/ Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !3729 merge master_clang into master 【PR】: precommit src/ Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 格式化src下其他文件 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!3729 | 2 个月前 | |
【PR】: 简要描述 Co-authored-by: pan-tong<pantong@huawei.com> # message auto-generated for no-merge-commit merge: !2367 merge feat/plugin-version-compat into master 【PR】: 简要描述 Created-by: pan-tong Commit-by: pan-tong Merged-by: cann-robot Description: # Pull Request ## 描述 新增 host/device compat 插件包基于 **DRV 升级策略 + version + timestamp + checkcode** 的多级装包决策,避免在 host/device 插件包内容已一致时重复下发,并支持版本回退/前进的精准控制。 在 LoadPackageToDeviceByConfig 中识别 compat 插件包后,按以下优先级判定是否真实下发: 1. **DRV 升级策略**:通过 halGetDeviceInfo(MODULE_TYPE_SYSTEM, INFO_TYPE_SWPLUGIN_UPGRADE_FLAG) 取 PluginUpdateStrategy: - PLUGIN_NO_UPDATE:跳过该包; - PLUGIN_FORCE_UPDATE:忽略版本,回落 checkcode(一致仍跳过避免无意义传输); - PLUGIN_NOT_FORCE_UPDATE:进入版本比较。 - DRV 调用失败或返回值不在 [0,2] 范围内:打 TSD_RUN_WARN 并回落到 PLUGIN_NOT_FORCE_UPDATE(走版本比较),流程不拦截;失败结果不缓存,下次仍可重试。 2. **device 侧版本可得性**:device 未上报版本(旧 tsdaemon / 未加载过)时回落 checkcode;host 侧 .ini 缺失或解析失败时跳过下发并打 WARN。 3. **PluginPkgVersionUtil::Compare**:host 新于 device → 装;host 旧于或等于 device → 跳过。 ### 数据通路 - **host 侧 compat 插件包版本采集**:由 PackageProcessConfig::RefreshHostPluginVersions 在 LoadPackageConfigInfoToDevice 中调用,遍历 configMap_ 仅对 COMPAT_PLUGIN_PATH 的条目解析同名 .ini 文件得到 version/timestamp,结果存入 PackageProcessConfig::hostPluginVersions_,并由 ConstructPkgConfigMsg 写入 host_plugin_versions 字段随 TSD_UPDATE_PACKAGE_PROCESS_CONFIG 一并下发。 - **device 侧版本回传**:device 在收到 TSD_UPDATE_PACKAGE_PROCESS_CONFIG 后,于 TSD_UPDATE_PACKAGE_PROCESS_CONFIG_RSP 的 device_plugin_versions 字段回填本地已加载 compat 插件包版本,host 侧 ProcessModeMsgParse::DeviceMsgProcess 收到后调用 HandleDevicePluginVersionRsp 把数据存入 ProcessModeManager::devicePluginVersions_。 ### 工具函数整合 - plugin_pkg_version.cpp 中的 Trim/Split/CompareSegmentNumeric 抽出到 tsd_util_func: - tsd::SplitByChar、tsd::CompareSegmentNumeric 直接迁出; - 因 tsd_util_func.cpp 已存在仅去空格的 Trim,新增并保留语义上去全部空白字符的 tsd::TrimWhitespace,避免修改既有调用方。 - PluginPkgVersionUtil::ParseIniFile 限制最多解析 10 行,且在拿到 version + timestamp 后立刻 break。 ### Loader 圈复杂度治理 - 将 LoadPackageToDeviceByConfig 的圈复杂度降到 20 以下,抽取两个辅助函数: - GetTrustedBasePathFromDevice:封装 drvHdcGetTrustedBasePathV2 取信任根路径; - LoadSinglePackageToDevice:封装单个包的「是否需要加载 → 取路径 → 计算 hash → compat 版本/策略判定 → checkcode 判定 → 下发」全流程,返回 TSD_StatusT。 - 主函数仅保留「支持性判断 + 取路径 + 遍历配置」骨架,逻辑等价、可读性更佳。 ## 单元测试 - tsd_client_utest:673/673 通过。 - 新增/调整的用例覆盖:IsCompatPluginPackage、GetPluginUpdateStrategy(含 DRV 失败/越界 fallback)、ShouldLoadCompatPluginPkg(NoUpdate/Force/ForceHashSame/DeviceVersionEmpty±HashSame/HostNewer/HostOlder/SameVersion/HostIniMissing)、ConstructOpenMsg_DoesNotCarryPluginInfo、PluginPkgVersionUtil 解析与比较。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #582 ## 如何测试 1. 编译构建 runtime,确保 tsd_client_utest 通过; 2. 运行 tsd_client_utest,重点覆盖 LoadPackageToDeviceByConfig、GetPluginUpdateStrategy、ShouldLoadCompatPluginPkg、PluginPkgVersionUtil 等用例; 3. host/device 联调场景验证 compat 插件包按版本/策略下发与跳过逻辑。  ## Self-check - [x] 代码符合贡献指南 - [x] 已构建并通过单元测试 - [x] 提交信息符合规范 See merge request: cann/runtime!2367 | 3 个月前 | |
【PR】: 简要描述 process mode manager 上帝类重构 Co-authored-by: LiWei79<liwei174@huawei.com> # message auto-generated for no-merge-commit merge: !3632 merge package_manager into master 【PR】: 简要描述 process mode manager 上帝类重构 Created-by: LiWei79 Commit-by: LiWei79 Merged-by: cann-robot Description: # Pull Request ## 描述 对 ProcessModeManager 上帝类进行重构,将其拆分为 4 个单一职责的类,同时归档包处理文件到 basic_component/package_manager。 ### 主要变更 **1. ProcessModeManager God Class 拆分** - **提取 ProcessSharedContext** — 将 rspCode_/errMsg_/errorLog_/startOrStopFailCode_/openSubPid_/pidArry_/pidList_ 等共享响应状态提取为独立的 ProcessSharedContext 结构体 - **提取 ResponseMsgDispatcher** — 将 DeviceMsgProcess/ServerToClientMsgProc/PackageInfoMsgProc/CapabilityResMsgProc/PidQosMsgProc/StoreProcListStatus 等 21 条消息回调注册和响应处理逻辑提取为独立的 ResponseMsgDispatcher 类 - **提取 SubProcessController** — 将 ProcessOpenSubProc/ProcessCloseSubProc/ProcessCloseSubProcList/GetSubProcStatus/GetSubProcListStatus/RemoveFileOnDevice 等 SubProc 生命周期管理方法提取为独立的 SubProcessController 类 - **提取 TsdProcessController** — 将 Open/Close/GetHdcConctStatus/InitQs/UpdateProfilingConf/WaitRsp/BuildBaseMessageContext 等 TSD 进程生命周期管理方法提取为独立的 TsdProcessController 类 **2. PackageManager 抽取** - 将 ProcessModeManager 中的包管理功能解耦为独立的 PackageManager 类,以组合形式存在于 ProcessModeManager 中 - 将所有包处理相关文件从 common/ 和 tsdclient/ 归档到 basic_component/package_manager/ **3. Stub 文件整理** - 合并 stub_process_mode_nowin.cpp 到 tsd_process_controller.cpp - 迁移 stub_dc.cpp 到 common/stub/ - 删除 tsdclient/src/stub/ 空目录 ### 重构前后对比 | 指标 | 重构前 | 重构后 | |------|--------|--------| | ProcessModeManager.h 行数 | 229 | 166 | | ProcessModeManager.cpp 行数 | 783 | 114 | | ProcessModeManager 方法数 | 60+ | 16(薄委托) | | ProcessModeManager 数据成员 | 25+ | 6 | | 新增类 | - | ProcessSharedContext / ResponseMsgDispatcher / SubProcessController / TsdProcessController | ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #733 ## 如何测试 根据代码变更,测试场景如下: 1. **编译构建测试** - 执行 cmake 配置和编译,验证 CMakeLists.txt 配置变更正确 - 验证 libtsdclient.so 能正确链接 2. **单元测试** - 执行 tsd_client_utest,验证 774 个测试用例全部通过 - 验证 ProcessModeManager 的所有 virtual 接口(Open/Close/GetHdcConctStatus/ProcessOpenSubProc 等)行为不变 - 验证 ResponseMsgDispatcher 的 21 条消息回调注册和分发正确 - 验证 SubProcessController 的子进程管理功能(Open/Close/GetStatus) - 验证 TsdProcessController 的 TSD 进程管理功能(Open/Close/InitQs/UpdateProfilingConf) 3. **ABI 兼容性验证** - 验证对外 C API 符号(TsdOpen/TsdClose/GetHdcConctStatus 等 12 个)无变化 - 验证 ProcessModeManager 虚函数表(vtable)无变化 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 重构方案基于 Composition over Inheritance + Facade 设计模式,已通过专家代码审查(修复了 POD 成员未初始化和封装性问题),UT 774 passed 零回归,ABI 无变化。 See merge request: cann/runtime!3632 | 2 个月前 | |
feat:aicpu日志整改 Co-authored-by: liu-lu<www.liulu824910939@qq.com> # message auto-generated for no-merge-commit merge: !4513 merge master into master feat:aicpu日志整改 Created-by: liu-lu Commit-by: liu-lu Merged-by: cann-robot Description: ## 描述 本次 PR 对 runtime 源码中的日志文本进行规范化,并补充 UT 测试用例确保覆盖率达标: 1. **日志文本规范化**(56 个源文件):修正语法错误(如 has exist → already exists)、添加参数单位(如 us、ms)、展开缩写(如 f2nf → full-to-notfull event)、补充空日志内容(如 TSD_ERROR("") → TSD_ERROR("insert package config to map failed")) 2. **clang-format 格式修复**(6 个源文件):修复超过 ColumnLimit:120 的超长日志行换行 3. **UT 测试用例补充**(12 个测试文件,新增约 20 个测试用例):覆盖修改的日志行所在的条件分支和异常路径,使 TSD UT 和 AICPU SD UT 增量覆盖率均达到 80%+ ## 变更类型 请选择本次代码的变更类型: - [x] ✨ 新功能(日志描述规范化) - [ ] 🐛 Bug 修复 - [ ] ♻️ 性能优化(正式格式、命名规范、代码整理等不影响功能也不会添加功能的代码变动) - [ ] ♻️ 重构等不涉及修改对外接口的代码变动 - [x] 🧪 测试(引入测试流程或工具的变动) - [ ] 📦 文档内容更新 ## 关联的Issue #891 ## 如何测试 请描述你打算如何测试此次变更: 1. **编译验证**:执行 bash tests/build_ut.sh --ut=aicpusd --target=aicpu_sched_ut 和 TSD UT 编译,确认无编译错误 2. **UT 覆盖率验证**:执行 UT 并检查增量覆盖率 ≥ 80%(覆盖路径包括:路径超长、设备非空闲、参数超限、线程创建失败、文件过大、SO 名称非法、环境变量开关、Buffer 初始化失败、Profiling 响应失败、内存分配失败) 3. **clang-format 验证**:clang-format --dry-run --Werror 确认所有修改文件格式合规 4. **功能验证**:UT 测试全部通过,无回归问题 ## 确认清单 - [x] 我的代码已遵循项目的代码规范 - [x] 已完成对所有代码的测试 - [x] 已更新所有相关的文档 - [x] 我已确保使用了合适的类型和标签,如:feat:,fix: - [x] 我已经仔细阅读了贡献指南(CONTRIBUTING.md),并理解了其中的所有规定,包括对提交commit message的格式和有效commit的合并) ## 附加信息 - 源文件修改仅涉及日志文本(aicpusd_info/aicpusd_err/TSD_RUN_INFO/TSD_ERROR 等日志宏的格式字符串),不改变任何代码逻辑 - UT 测试用例通过 MOCKER(pthread_create) mock 线程创建失败、MOCKER(halBuffInit) mock buffer 初始化失败等方式覆盖异常路径 See merge request: cann/runtime!4513 | 30 天前 |