| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 |
Device 测试模块总结
概述
tests/device/ 目录包含了设备管理相关的核心功能测试,主要包括设备管理器、CSR(配置状态寄存器)处理和设备驱动三个方面的测试。该模块测试了设备生命周期管理、CSR 配置解析、属性引用同步机制以及驱动加载匹配等核心功能。
源代码结构
对应的源代码位于 src/device/ 目录:
-
csr.h / csr.cpp: CSR 配置处理核心实现(674 行)
device_csr: CSR 配置解析、验证、设备对象创建init(): 初始化 CSR 配置,进行占位符替换和验证create_devices_object(): 创建组件设备对象finalize_device_setup(): 完成设备设置(创建子设备、通用设备并启动)process_topology_object(): 处理拓扑对象,建立总线映射和对象映射process_objects_placeholders(): 处理占位符替换init_functions(): 初始化函数表达式
unit: 设备单元信息(类型、名称、兼容驱动列表)validate_unit(): 验证单元信息完整性load_compatible_driver(): 加载兼容驱动(支持多个驱动尝试)
connector: 连接器信息(位置、插槽、总线等)validate_connector(): 验证连接器信息
-
manager.h / manager.cpp: 设备管理器实现(80 行)
device_manager: 设备添加和删除的统一入口(单例模式)add_device(): 添加设备(CSR 解析 → 对象创建 → 拓扑处理 → 设备启动)remove_device(): 删除设备(驱动停止 → 拓扑清理 → 对象注销)
- 集成 CSR 处理和拓扑管理(device_topo)
-
driver.h / driver.cpp: 设备驱动管理实现(139 行)
device_driver: 驱动加载、卸载、设备查找load(): 动态加载驱动库(dlopen)unload(): 卸载驱动库(dlclose)register_driver(): 注册驱动(dlsym 获取注册函数)get_device(): 根据设备名称查找设备
device_driver_factory: 驱动工厂模式,管理所有驱动实例(单例模式)get_device_driver(): 获取驱动(不存在则加载)set_device_driver(): 设置驱动(用于测试)remove_device_driver(): 移除驱动
测试文件说明
1. test_manager.cpp - 设备管理器测试
测试设备管理器的核心功能,包括设备的添加、删除和 D-Bus 集成:
添加设备测试
-
add_device_success
- 成功添加设备(从 CSR 文件解析并创建设备)
- 通过 D-Bus 查询验证设备属性(DeviceName)
- 验证设备对象路径的正确映射
- 支持多个设备的创建(PCIeNicCard、NetworkPort、OpticalModule)
- 带重试机制的 D-Bus 属性查询(最多 5 次重试,每次间隔 100ms)
-
add_device_with_topology_success
- 添加带拓扑信息的设备
- 验证拓扑对象创建(device_topo)
- 支持总线信息(Buses)
- 验证设备对象与拓扑对象的关联
-
add_device_inline_topology_anchor
- 测试添加包含内联拓扑(Anchor)的设备
- 验证内联拓扑对象的处理
- 支持 Anchor 节点和总线模板
- 验证拓扑对象正确创建和清理
-
add_device_create_devices_object_failed
- 测试 create_devices_object 失败的情况
- 当 Objects 中缺少 Unit 对象时抛出异常
- 验证异常类型(mc::parse_error_exception)
- 验证设备对象未被创建
-
add_device_driver_not_found
- 驱动未找到的异常场景
- 验证异常抛出(mc::parse_error_exception)
- 验证设备对象未被创建
-
add_device_empty_topology_result
- 测试添加没有拓扑信息的设备
- 验证设备对象可以正常创建(即使没有拓扑)
- 验证系统对空拓扑的处理
-
add_device_topology_add_failed
- 测试拓扑添加失败的情况
- 验证即使拓扑添加失败也不会抛出异常
- 验证设备对象已创建
-
add_device_finalize_setup_exception
- 测试 finalize_device_setup 可能失败的情况
- 验证系统对异常的处理
- 验证设备对象已创建
删除设备测试
-
remove_device_requires_unit_information
- 删除设备需要 Unit 信息的验证
- 无 Unit 信息时设备不会被删除(安全处理)
- 有 Unit 信息时设备被正确删除
- 删除后拓扑对象清理验证
-
remove_device_returns_when_position_missing
- 位置信息缺失时的安全处理
- 验证不会抛出异常
-
remove_device_returns_when_device_absent
- 设备不存在时的安全处理
- 验证不会抛出异常
-
remove_device_handles_driver_stop_failure
- 驱动停止失败时的异常处理
- 验证即使驱动加载失败也不会崩溃
- 验证驱动恢复后可以正常删除设备
-
remove_device_load_driver_failed
- 测试 remove_device 中 load_compatible_driver 失败的情况
- 验证使用无效 Unit 信息时驱动加载失败
- 验证设备对象不会被移除(当驱动加载失败时)
- 验证使用正确 Unit 信息后可以成功移除设备
-
remove_device_stop_exception
- 测试 remove_device 中 device.stop 可能抛出异常的情况
- 验证系统对 stop 异常的处理
- 验证设备对象可以被正常移除
D-Bus 集成
- 设备属性通过 D-Bus 查询验证
- 对象路径映射验证(路径格式:
/bmc/dev/Systems/${SystemId}/test_device/${DeviceName}) - 设备注册到 D-Bus 的完整性测试
- 带重试机制的属性查询工具方法
2. test_csr.cpp - CSR 处理测试
CSR(Configuration/Status Register)是设备配置的核心数据结构,该文件包含了 143 个测试用例,全面覆盖 CSR 处理的各种场景:
Unit 相关测试
-
Unit 驱动加载
- 成功加载兼容驱动(test_unit_load_compatible_driver_success)
- 多个兼容驱动(test_unit_load_compatible_driver_success_second)
- 兼容驱动列表中包含逗号的情况(test_unit_load_compatible_driver_with_comma)
- 驱动未找到的情况(test_unit_load_compatible_driver_not_found)
- 兼容列表中包含空字符串的情况(unit_load_compatible_driver_empty_string_in_list)
-
Unit 验证
- 成功验证(test_unit_validate_success)
- 空类型验证失败(test_unit_validate_empty_type)
- 空名称验证失败(test_unit_validate_empty_name)
- 空兼容列表验证失败(test_unit_validate_empty_compatible)
Connector 相关测试
- Connector 验证
- 成功验证(test_connector_validate_success)
- 空位置验证失败(test_connector_validate_empty_position)
- 零 Slot 验证成功(test_connector_validate_zero_slot)
CSR 初始化和验证测试
-
CSR 验证
- 成功验证(csr_validate_success)
- Unit 验证失败(csr_validate_unit_fail)
- 空 Objects 验证失败(csr_validate_empty_objects)
- Connector 验证失败(csr_validate_connector_fail)
-
CSR 初始化
- 成功初始化(csr_init_success)
- 验证失败导致初始化失败(csr_init_validation_fail)
设备创建测试
-
父对象查找
- 有 @Parent 标记的情况(find_parent_object_with_parent)
- 默认 Devmon 根对象(find_parent_object_default_devmon)
- 父对象未找到的情况(find_parent_object_not_found)
-
子设备创建
- 创建单个子设备(create_child_device)
- 子设备名称不匹配的情况(create_child_device_name_mismatch)
- 创建多个子设备(create_childs_device)
- 创建组件设备(create_component_device)
-
通用设备创建
- 成功创建设备对象(create_devices_object_success)
- 无驱动的情况(create_common_devices_no_driver)
- 驱动未找到的情况(create_devices_object_driver_not_found)
-
兼容驱动处理
- 兼容驱动包含逗号(csr_compatible_with_comma)
- 多个兼容驱动(csr_multiple_compatible_drivers)
拓扑处理测试
- 拓扑对象处理
- 基础成功场景(process_topology_object_basic_success)
- 无 Anchor 节点的情况(process_topology_object_no_anchor)
- 总线数量不匹配(process_topology_object_bus_count_mismatch)
- 连接器和内部总线处理(process_topology_object_connectors_and_inner_buses)
- 重复总线对象处理(process_topology_object_duplicate_bus_objects)
属性引用(Reference)测试
-
基础引用
- 单属性引用(csr_property_reference_single)
- 多属性引用(csr_property_reference_multiple)
- 实时更新机制(csr_property_reference_realtime_update)
- 不存在的对象引用(csr_property_reference_nonexistent_object)
-
引用与函数结合
- 引用与函数结合(csr_property_reference_with_function)
- 引用函数数值计算(csr_property_reference_function_numeric_calculation)
- 引用函数条件逻辑(csr_property_reference_function_conditional_logic)
属性同步(Sync)测试
-
基础同步
- 单属性同步(csr_property_sync_single)
- 多属性同步(csr_property_sync_multiple)
- 实时更新机制(csr_property_sync_realtime_update)
- 不存在的属性(csr_property_sync_nonexistent_property)
-
同步与函数结合
- 同步函数字符串拼接(csr_property_sync_function_string_concatenation)
- 同步函数实时更新多依赖(csr_property_function_realtime_update_multi_dependency)
属性函数测试
-
函数参数支持
- 同步参数支持(csr_property_function_args_sync_support)
- 引用参数支持(csr_property_function_args_reference_support)
- 复杂同步场景(csr_property_function_args_complex_sync)
- 分离的同步和引用(csr_property_function_args_separate_sync_ref)
-
混合场景
- 混合引用和同步(csr_property_function_mixed_reference_sync)
接口属性测试
- 接口属性引用和同步
- 接口属性单引用(csr_interface_property_reference_single)
- 接口属性单同步(csr_interface_property_sync_single)
- 接口属性混合引用同步(csr_interface_property_mixed_reference_sync)
- 接口属性函数参数(csr_interface_property_function_args)
- 接口语法兼容性(csr_interface_syntax_compatibility_test)
ref_object 测试
-
基础功能
- ref_object 基础(csr_property_ref_object_basic)
- 多个 ref_object(csr_property_ref_object_multiple)
- ref_object 与 ref_property 的区别(csr_property_ref_object_vs_ref_property)
- 动态更新(csr_property_ref_object_dynamic_update)
- 不存在的 ref_object(csr_property_ref_object_nonexistent)
-
调试和开发
- ref_object 调试(csr_property_ref_object_debug)
- ref_object 解析调试(csr_property_ref_object_parse_debug)
- ref_object 直接测试(csr_property_ref_object_direct_test)
- ref_object 分步调试(csr_property_ref_object_step_by_step_debug)
- ref_object 错误位置测试(csr_ref_object_error_location_test)
- ref_object 反射调试(csr_ref_object_reflection_debug)
-
属性设置
- ref_object 属性设置(csr_property_ref_object_set_property)
- ref_object 多引用属性设置(csr_property_ref_object_set_property_multi_ref)
- ref_object 属性设置类型转换(csr_property_ref_object_set_property_type_conversion)
- ref_object 属性设置错误处理(csr_property_ref_object_set_property_error_handling)
- ref_object 属性设置无效引用(csr_property_ref_object_set_property_invalid_ref)
占位符替换测试
-
基础替换
- 简单替换(test_placeholder_replacement_simple)
- 键中的占位符(test_placeholder_replacement_in_keys)
- 嵌套结构替换(test_placeholder_replacement_nested)
- 数组中的占位符(test_placeholder_replacement_in_array)
- 部分匹配(test_placeholder_replacement_partial_matches)
-
新属性添加
- 所有新属性(test_placeholder_replacement_all_new_properties)
- 新属性嵌套(test_placeholder_replacement_new_properties_nested)
- 新属性在数组中(test_placeholder_replacement_new_properties_in_array)
- 新属性边界情况(test_placeholder_replacement_new_properties_edge_cases)
- 新属性在键中(test_placeholder_replacement_new_properties_in_keys)
3. test_driver.cpp / test_driver.h - 设备驱动测试
测试设备驱动的核心功能,包括驱动加载、设备查找和驱动工厂模式:
测试驱动实现
-
test_device 类
- 实现设备的基本生命周期(init、start、stop)
- SystemId 属性处理(从 CSR 或 Connector 获取)
- DeviceName 属性处理(从 TestInterface 或 PCIeDevice 获取,支持引用扩展)
- 路径冲突避免(当多个设备引用同一源对象名时,追加唯一后缀)
- 反射支持(MC_REFLECT)
-
test_driver 类
- 创建测试用的设备驱动
- 支持创建 PCIeNicCard、NetworkPort、OpticalModule 等设备类型
- 为设备名称分配稳定存储,避免悬挂指针
-
C 接口封装
- create_device:创建设备对象
- init_device:初始化设备
- start_device:启动设备
- stop_device:停止设备
- 符合
driver_abi.h的 C 接口实现
设备驱动类测试(DeviceDriverTest)
-
SetDeviceDriverAndGetDeviceSuccess
- 设置设备驱动后成功获取设备
- 验证设备列表大小和设备条目信息
-
GetDeviceThrowsWhenNotLoaded
- 驱动未加载时获取设备抛出异常(mc::invalid_arg_exception)
-
GetDeviceThrowsWhenDeviceMissing
- 设备不存在时抛出异常
-
GetNameReturnsConfiguredValue
- 获取驱动名称返回配置的值
-
LoadMissingLibraryThrowsSystemException
- 加载不存在的库抛出系统异常(mc::system_exception)
-
RegisterDriverThrowsWhenSymbolMissing
- 注册驱动时符号缺失抛出异常
-
RegisterDriverThrowsWhenFunctionReturnsError
- 注册函数返回错误时抛出异常
-
RegisterDriverPopulatesDevicesOnSuccess
- 成功注册驱动时填充设备列表
-
UnloadWithoutPriorLoadIsNoop
- 卸载操作的幂等性(未加载时卸载不抛异常)
-
UnloadAfterSuccessfulLoadClosesHandle
- 成功加载后卸载会关闭句柄
设备驱动工厂测试(DeviceDriverFactoryTest)
-
LocalFactoryDestructorReleasesDrivers
- 本地工厂析构时释放驱动
-
SetDeviceDriverProvidesStubInstance
- 通过工厂设置设备驱动
- 验证获取的驱动实例正确
-
RemoveDeviceDriverClearsEntry
- 移除设备驱动后清除条目
- 移除后再次获取抛出异常
-
SetDeviceDriverOverridesPreviousDefinition
- 覆盖已有驱动定义(后设置的驱动覆盖前一个)
-
RemoveNonexistentDriverIsSafe
- 移除不存在的驱动是安全的(不抛异常)
-
SetDriverPathAffectsLoadFailure
- 设置驱动路径影响加载失败行为
-
SetDeviceDriverUpdatesExistingEntry
- 设置设备驱动更新已存在的条目
测试工具和基础设施
- TestBase 继承:所有测试类继承自
mc::test::TestWithEngine,提供统一的测试环境 - 测试驱动(test_driver):提供模拟设备驱动,支持创建 PCIeNicCard、NetworkPort、OpticalModule 等设备类型
- D-Bus 集成:测试中集成了 D-Bus 通信,验证设备在系统中的注册和属性访问
- 对象表管理:测试中包含完整的对象生命周期管理,包括注册、查询、注销等操作
- 函数集合清理:每个测试用例后清空 func_collection 缓存,避免测试用例间相互影响
- 重试机制:D-Bus 属性查询支持重试机制(最多 5 次重试,每次间隔 100ms)
测试统计
该测试模块共包含 175 个测试用例:
- test_manager.cpp: 14 个测试用例(设备管理器功能)
- test_csr.cpp: 143 个测试用例(CSR 处理功能)
- test_driver.cpp: 18 个测试用例(设备驱动功能)
测试覆盖范围
该测试模块全面覆盖了设备管理的核心功能:
- ✅ 设备生命周期管理(添加、删除)
- ✅ CSR 配置解析和验证(Unit、Connector)
- ✅ 设备驱动加载和匹配
- ✅ 设备对象创建(Child、Children、Component、Objects)
- ✅ 父对象查找和关系建立
- ✅ 拓扑关系处理
- ✅ 属性引用机制(Reference)
- ✅ 属性同步机制(Sync)
- ✅ 属性函数表达式计算
- ✅ 函数对象识别和函数参数处理
- ✅ ref_object 对象引用
- ✅ 占位符替换
- ✅ 接口属性处理
- ✅ 对象提取和重命名
- ✅ 反射元数据处理
- ✅ 设备设置完成(finalize_device_setup)
- ✅ 连接器获取(get_connector)
- ✅ D-Bus 集成
- ✅ 驱动工厂模式
- ✅ 异常处理和错误场景
运行测试
测试使用 Google Test 框架编写,可以通过 meson 构建系统运行:
meson setup builddir
meson compile -C builddir
meson test -C builddir
测试数据依赖
测试依赖于以下测试数据文件:
./tests_data/csr/test_device.sr:基础设备测试用的 CSR 文件./tests_data/csr/topology.sr:带拓扑信息的设备测试用的 CSR 文件
关键特性
属性引用和同步机制
CSR 系统实现了强大的属性引用和同步机制:
- 属性引用(Reference):使用
#/Object.Property语法,实现对象间属性的引用 - 属性同步(Sync):使用
<=/Object.Property语法,实现属性值的同步更新 - 实时更新:引用和同步都支持实时更新机制,当源属性变化时自动更新目标属性
- 函数表达式:支持在引用和同步中使用函数表达式,实现复杂的计算逻辑
ref_object 机制
ref_object 提供了对象级别的引用机制:
- 支持引用整个对象而不仅仅是属性
- 支持动态更新和多引用
- 支持属性设置时的类型转换
- 提供完善的错误处理机制
占位符替换
系统支持灵活的占位符替换机制:
- 占位符语法:使用
${VariableName}语法定义占位符 - 替换范围:支持在对象键名和属性值中使用占位符
- 嵌套支持:支持嵌套结构中的占位符替换
- 数组支持:支持数组中元素的占位符替换
- 动态属性:支持新属性的动态添加(通过占位符在键名中创建新对象)
- 部分匹配:支持部分匹配的占位符替换
- 特殊字符处理:正确处理特殊字符和边界情况
- 变量来源:占位符变量从 Connector 字典中获取(SystemId、GroupPosition、Slot、GroupId、ChassisId、ManagerId、Container、SilkText 等)
设备路径冲突处理
test_device 实现了智能的设备路径冲突处理机制:
- 当多个设备引用同一源对象名时,自动追加对象名作为唯一后缀
- 确保 D-Bus 对象路径的唯一性
- 不影响属性的引用语义
- 路径格式:
/bmc/dev/Systems/${SystemId}/test_device/${DeviceName}或${DeviceName}_${ObjectName}
测试隔离和清理
所有测试都实现了完善的清理机制:
- 对象表清理:每个测试用例后自动清理对象表中的对象(保留 Devmon 和 DevmonTopo 根对象)
- 多次清理:多次清理确保对象被完全删除(最多 3 次重试,处理依赖关系)
- 智能删除顺序:按路径长度降序删除,先删除子对象(路径更长的),避免依赖关系问题
- 缓存清理:清空 func_collection 缓存,避免测试用例间相互影响
- 驱动清理:移除测试驱动(test_driver、hisi_hi182x),确保驱动状态干净
- 异常安全:支持异常安全的清理操作(忽略注销错误,某些对象可能已被删除)
测试用例详细说明
test_manager.cpp 测试用例
add_device_success
- 功能:测试成功添加设备的基本流程
- 验证点:
- CSR 文件解析成功
- 设备对象创建成功(PCIeNicCard、NetworkPort、OpticalModule)
- D-Bus 属性查询成功(DeviceName)
- 对象路径映射正确
- 设备删除后拓扑对象清理
add_device_with_topology_success
- 功能:测试添加带拓扑信息的设备
- 验证点:
- 拓扑对象(device_topo)创建成功
- 总线信息(Buses)处理正确
- 设备对象与拓扑对象关联正确
add_device_inline_topology_anchor
- 功能:测试添加包含内联拓扑(Anchor)的设备
- 验证点:
- 内联拓扑对象处理正确
- Anchor 节点和总线模板处理
- 拓扑对象创建和清理验证
add_device_create_devices_object_failed
- 功能:测试 create_devices_object 失败的情况
- 验证点:
- 当 Objects 中缺少 Unit 对象时抛出异常
- 异常类型为
mc::parse_error_exception - 设备对象未被创建
add_device_driver_not_found
- 功能:测试驱动未找到的异常场景
- 验证点:
- 抛出
mc::parse_error_exception异常 - 设备对象未被创建
- 系统状态保持稳定
- 抛出
add_device_empty_topology_result
- 功能:测试添加没有拓扑信息的设备
- 验证点:
- 设备对象可以正常创建(即使没有拓扑)
- 系统对空拓扑的处理正确
add_device_topology_add_failed
- 功能:测试拓扑添加失败的情况
- 验证点:
- 即使拓扑添加失败也不会抛出异常
- 设备对象已创建
add_device_finalize_setup_exception
- 功能:测试 finalize_device_setup 可能失败的情况
- 验证点:
- 系统对异常的处理正确
- 设备对象已创建
remove_device_requires_unit_information
- 功能:测试设备删除的安全机制
- 验证点:
- 无 Unit 信息时设备不会被删除(安全处理)
- 有 Unit 信息时设备被正确删除
- 删除后拓扑对象清理验证
remove_device_load_driver_failed
- 功能:测试 remove_device 中驱动加载失败的情况
- 验证点:
- 使用无效 Unit 信息时驱动加载失败
- 设备对象不会被移除(当驱动加载失败时)
- 使用正确 Unit 信息后可以成功移除设备
remove_device_stop_exception
- 功能:测试 remove_device 中 device.stop 可能抛出异常的情况
- 验证点:
- 系统对 stop 异常的处理正确
- 设备对象可以被正常移除
test_csr.cpp 测试用例分类
Unit 相关测试(10 个用例)
- 驱动加载:成功场景、多驱动、逗号分隔、驱动未找到、空字符串处理、所有驱动失败、空兼容列表、第一个失败第二个成功
- 验证:成功、空类型、空名称、空兼容列表
Connector 相关测试(3 个用例)
- 验证:成功、空位置、零 Slot
CSR 初始化和验证测试(4 个用例)
- CSR 验证:成功、Unit 失败、空 Objects、Connector 失败
- CSR 初始化:成功、验证失败
设备创建测试(15+ 个用例)
- 父对象查找:有 @Parent、默认 Devmon、未找到、回退到 Devmon
- 子设备创建:单子设备、名称不匹配、名称不匹配继续处理、无下划线名称、多子设备、组件设备、所有匹配组件名称
- 通用设备创建:成功、无驱动、驱动未找到、部分驱动缺失、无下划线名称、单元对象未找到
- 兼容驱动处理:逗号分隔、多驱动
拓扑处理测试(20+ 个用例)
- 基础场景:基础成功场景、无 Anchor、总线数量不匹配、连接器和内部总线、重复总线对象
- 映射处理:总线映射构建(数组 Anchor、字典无总线、数量不匹配)、对象映射收集(数组节点、非字符串项、主总线在对象中、总线节点键重命名)
- 格式转换:数组节点、非字符串项、带总线、带连接器、非字典非数组、总线不在映射中、对象不在映射中
- 边界情况:数组节点部分已知对象、连接器未知项不重命名、主总线对象重命名、拓扑节点键重命名
- 映射处理:总线映射构建、对象映射收集和创建、拓扑格式转换
- 边界情况:数组节点处理、非字符串项处理、部分已知对象、主总线对象重命名
- 错误处理:引用未找到、未知项不重命名、非字典非数组处理
属性引用测试(8 个用例)
- 基础引用:单属性、多属性、实时更新、不存在对象
- 引用与函数:函数结合、数值计算、条件逻辑
属性同步测试(5 个用例)
- 基础同步:单属性、多属性、实时更新、不存在属性
- 同步与函数:字符串拼接、多依赖实时更新
属性函数测试(5 个用例)
- 函数参数:同步支持、引用支持、复杂同步、分离同步引用
- 混合场景:混合引用和同步
接口属性测试(5 个用例)
- 接口属性引用、同步、混合、函数参数、语法兼容性
ref_object 测试(14 个用例)
- 基础功能:基础、多个、与 ref_property 区别、动态更新、不存在
- 调试和开发:调试、解析调试、直接测试、分步调试、错误位置、反射调试
- 属性设置:属性设置、多引用设置、类型转换、错误处理、无效引用
占位符替换测试(11 个用例)
- 基础替换(5 个用例):简单替换、键中的占位符、嵌套结构替换、数组中的占位符、部分匹配
- 新属性添加(6 个用例):所有新属性、新属性嵌套、新属性在数组中、新属性边界情况、新属性在键中
- 其他类型处理:处理 variant 其他类型、数组中的占位符处理
函数对象和函数参数处理测试(7 个用例)
- 函数对象识别:test_is_function_object_true、test_is_function_object_false
- 函数参数处理:test_process_function_args_sync_property、test_process_function_args_ref_property、test_process_function_args_normal_arg、test_process_function_args_mixed_args、test_process_function_args_empty_args
设备设置和连接器测试(3 个用例)
- finalize_device_setup:test_finalize_device_setup_nullptr_device_object、test_finalize_device_setup_success
- get_connector:test_get_connector
对象提取和重命名测试(3 个用例)
- extract_and_rename_objects:test_extract_and_rename_objects_normal、test_extract_and_rename_objects_object_not_found、test_extract_and_rename_objects_empty_mapping
反射测试(5 个用例)
- 反射元数据:reflection_unit_metadata_roundtrip、reflection_connector_metadata_roundtrip
- 反射设备 CSR:reflection_device_csr_metadata_visit、reflection_device_csr_to_variant_roundtrip、reflection_device_csr_register_cycle
其他功能测试(20+ 个用例)
- 驱动加载边界情况:所有驱动加载失败、空兼容列表、第一个失败第二个成功、部分驱动缺失
- 设备创建边界情况:名称不匹配继续处理、无下划线名称、所有匹配组件名称、单元对象未找到
- 对象处理:非字符串项处理、数组节点部分已知对象、主总线在对象中、总线节点键重命名
- 函数处理:服务指针 Lambda 处理、函数参数处理