Files
H100PowerManger/test/CMakeLists.txt
T
zjk 12f0dee86e 修复:跨线程数据竞争 + 协议字段越界 + UDP 发送失败吞错
- 并发安全:PowerManger 新增 m_stateMutex,保护 m_pmCurrentState /
  m_currentDisBreakerState / m_CcuColCmd / faultCode,并封装
  addFaultCode/clearFaultCodes/getFaultCodes 访问器
- SystemData 新增跨线程读访问器(getDynVoltageLink/getPowerBusStatus/
  getDcdcStatus/getDeviceCommonStatus 等)及配电故障码集合加锁访问
- upmsg buildMsg / httpserver pushSystemData / LowerCommManager 均改为
  持锁快照,避免 listen 线程与 comm 线程撕裂读写
- 修复析构顺序:先删 httpServer 再删其他对象,避免 use-after-free
- 修复 ccuState reserved2 越界读(协议预留 2 字节,结构体仅声明 1),
  修正 coutMsg 中 SOC 门限/功率限制字段打印
- udpComm::sendDisSysCmd 不再吞掉异常,返回 sendMsg 实际结果并记录 ERROR,
  新增 SendDisSysCmdFailsWithoutSocket 单测
- 新增 fullFeeder 全类型 UDP 集成仿真器与 fetch-data/clean-data 脚本,
  .gitignore 补充 SQLite 运行期文件与 fullFeeder 二进制
2026-08-21 11:36:19 +08:00

128 lines
3.4 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
cmake_minimum_required(VERSION 3.10)
project(H100PowerMangerTests)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 需要 GoogleTest(由 CI Dockerfile 或本地安装,提供 GTestConfig/库)
find_package(GTest REQUIRED)
################################################SQLiteTest(保留原有)#######
# 添加 SQLite 测试可执行文件(不使用第三方测试库)
add_executable(SQLiteTest
until/testSqlitdb.cpp
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/SQLite.cpp
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/sqlite3.c
${CMAKE_SOURCE_DIR}/src/pPowerManger/logc/loguru.cpp
)
# 包含目录
target_include_directories(SQLiteTest PRIVATE
${CMAKE_SOURCE_DIR}/src/pPowerManger
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3
)
# 链接库文件
target_link_libraries(SQLiteTest
pthread
dl
)
################################################PowerMangerTests(gtest)####
# 综合单元测试:Driver / SystemData / FaultMap / Upmsg / UdpComm /
# PmSysvariable / SQLite 读回。仅链接现有 src 源码,不改动生产代码。
set(PM_SRC_DIR ${CMAKE_SOURCE_DIR}/src/pPowerManger)
set(PM_TEST_SOURCES
until/DriverTest.cpp
until/SystemDataTest.cpp
until/FaultMapTest.cpp
until/UpmsgTest.cpp
until/UdpCommTest.cpp
until/PmSysvariableTest.cpp
until/SqliteTest.cpp
)
add_executable(PowerMangerTests ${PM_TEST_SOURCES}
${PM_SRC_DIR}/driver.cpp
${PM_SRC_DIR}/udpcomm/udpComm.cpp
${PM_SRC_DIR}/upmsg/upmsg_definitions.cpp
${PM_SRC_DIR}/sqlit3/SQLite.cpp
${PM_SRC_DIR}/sqlit3/sqlite3.c
${PM_SRC_DIR}/logc/loguru.cpp
)
target_include_directories(PowerMangerTests PRIVATE
${PM_SRC_DIR}
${PM_SRC_DIR}/sqlit3
${PM_SRC_DIR}/upmsg
${PM_SRC_DIR}/udpcomm
${PM_SRC_DIR}/logc
)
# gtest 需要 C++14+
set_target_properties(PowerMangerTests PROPERTIES
CXX_STANDARD 14
CXX_STANDARD_REQUIRED ON
)
# 兼容两种 gtest 安装方式:镜像安装(提供 GTest::gtest_main) 或 apt(仅 GTest_LIBRARIES)
if(TARGET GTest::gtest_main)
set(GTEST_LIBS GTest::gtest_main GTest::gtest)
else()
set(GTEST_LIBS ${GTest_LIBRARIES})
target_include_directories(PowerMangerTests PRIVATE ${GTest_INCLUDE_DIRS})
endif()
target_link_libraries(PowerMangerTests
${GTEST_LIBS}
${MOOS_LIBRARIES}
mbutil
jsoncpp
m
pthread
dl
)
################################################udpFeeder(集成测试用)#######
# 集成测试辅助:向 pPowerManger 发送真实 CCU 状态反馈 UDP 消息(字节级一致)
add_executable(udpFeeder
integration/udp_feeder.cpp
${PM_SRC_DIR}/udpcomm/udpComm.cpp
${PM_SRC_DIR}/logc/loguru.cpp
)
target_include_directories(udpFeeder PRIVATE
${PM_SRC_DIR}
${PM_SRC_DIR}/udpcomm
${PM_SRC_DIR}/logc
)
set_target_properties(udpFeeder PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(udpFeeder
${MOOS_LIBRARIES}
mbutil
m
pthread
dl
)
################################################fullFeeder(集成测试用)#######
# 全类型 UDP 仿真器:CCU 状态 + 4 路配电反馈(自包含,仅依赖协议结构体头文件)
add_executable(fullFeeder
integration/full_feeder.cpp
)
target_include_directories(fullFeeder PRIVATE
${PM_SRC_DIR}
${PM_SRC_DIR}/udpcomm
)
set_target_properties(fullFeeder PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(fullFeeder
pthread
)