- 并发安全: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 二进制
128 lines
3.4 KiB
CMake
128 lines
3.4 KiB
CMake
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
|
||
)
|