diff --git a/doc/clang-tidy_user_guide.md b/doc/clang-tidy_user_guide.md deleted file mode 100644 index 07d0c7c..0000000 --- a/doc/clang-tidy_user_guide.md +++ /dev/null @@ -1,42 +0,0 @@ -# 1. clang-tidy使用指南 - -   使用clang-tidy工具进行代码规范管理。 -1. 编译时实时报错; -2. 指定自研源码检测; - -## 1.1. 环境搭建 - -1. llvm使用cmake编译,cmake版本要求 3.20以上,此处使用cmake-3.27.4 -``` -// cmake源码目录://tools/cmake/cmake-3.27.4.tar.gz -// cmake源码安装: -tar zxvf cmake-3.27.4.tar.gz -cd cmake-3.27.4/ -sudo apt-get install openssl // 如果执行./bootstrap提示缺少ssl相关资源,执行此安装命令 -./bootstrap -make -sudo make install -``` -2. 安装llvm -``` -// 下载源码 -git clone https://github.com/llvm/llvm-project.git -cd llvm-project/ -mkdir build -cd build -cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm -make -j8 -find ./ -name clang-tidy // 确认编译完成 -``` - -## 1.2. clang-tidy使用 -修改配置:< IPC-SDK >/build/global_config.cmake -``` -# ------------ build clang-tools ------------ # -if(${LINUX_TEST} MATCHES "true") - set(CLANG_TIDY_SUPPORT "true") // 使能工具 - set(CLANG_FORMAT_SUPPORT "true") - set(LLVM_PATH "/home/xiaojiazhu/project/tmp/llvm-project") // llvm安装目录 -endif() -# ------------ build clang-tools end ------------ # -``` \ No newline at end of file diff --git a/doc/cmake_exploitReport.md b/doc/cmake_exploitReport.md deleted file mode 100644 index 61a54da..0000000 --- a/doc/cmake_exploitReport.md +++ /dev/null @@ -1,54 +0,0 @@ -# 1.cmake开发报告 - -## 1.1 前言 -该篇md用于ipc项目下log功能的cmakelist的开发报告,以阐述其功能和组成。 - -## 1.2 功能介绍 -* 设置库文件输出路径:`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})`. -该语句用于设置该功能的静态库的生成路径,其中`${LIBS_OUTPUT_PATH}`在/build/cmake/global_config.cmake被定义在项目根目录的/output_files/libs/。 - -* 添加实现功能的文件目录:`include_directories(./)`. -该语句旨在向编译器告知该功能的实现文件和头文件的所在位置。 - -* 添加功能目录到搜索路径:`set(CMAKE_AUTOMOC ON);set(CMAKE_INCLUDE_CURRENT_DIR ON)` -这些 CMake 命令支持自动处理 Qt moc(元对象编译器),并将当前目录设置为包含在包含文件的搜索路径中;在构建过程中自动运行Qt moc编译器,用于包含Q_OBJECT宏的任何源文件。这对于为信号和插槽生成必要的C++代码是必需的;该选项将当前源目录添加到包含文件的搜索路径中。这允许构建系统查找与正在编译的源文件位于同一目录中的头文件。 - -* 收集、生成头文件列表:`file(GLOB_RECURSE HEADER_FILES "*.h")` -该语句的功能是搜索当前目录及其子目录中扩展名为 .h 的所有文件。生成的文件列表存储在 HEADER_FILES 变量中。 - -* 收集源文件列表:`aux_source_directory(. SRC_FILES)` -在本语句中,aux_source_directory(.SRC_FILES) 从当前目录(由 .) 及其子目录中收集所有源文件(例如,.cpp 个文件),生成的文件列表存储在 SRC_FILES 变量中。 - -* 添加编译器标志和定义到当前目录及其子目录:`add_definitions("-fexceptions")` -添加编译器标志`-fexceptions`以在代码中启用异常处理。此标志告诉编译器生成支持捕获和引发异常的代码。通过使用 add_definitions(),可以将特定的编译器标志或定义全局应用于项目或特定源文件。 - -* 创建静态库目标:`add_library(xlog STATIC ${SRC_FILES} ${HEADER_FILES})` -在这种情况下,本语句使用提供的源文件和头文件列表创建一个名为“xlog”的静态库目标;`STATIC`关键字指定库将构建为静态库,这意味着库代码将在编译时直接链接到最终可执行文件中;`${SRC_FILES}`变量包含应编译并链接到库中的源文件(通常.cpp文件)的列表。${HEADER_FILES} 变量包含头文件(通常为 .h 文件)的列表,这些文件定义库使用的接口和声明。 - -## 1.3 总结 -该篇cmakelists.txt的主要用途是对ipc项目下xlog功能的显现文件的编译和汇总。 - -## 2.1 返回码管理库概述 -提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,内部实现不限于C或者C++,形成项目内部唯一返回码标准。 - -## 2.2 功能介绍 -* 设置可执行文件的输出路径:`set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})`;`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})` - -* 引入头文件目录:`include_directories`。`include_directories`表示引入头文件搜索路径,当工程要用到某个头文件的时候,就会去该路径下搜索。 - -* 开启自动编译:`set(CMAKE_AUTOMOC ON)` `set(CMAKE_INCLUDE_CURRENT_DIR ON)`. 这段代码开启了 CMake 的元对象编译器、界面编译器和资源编译器自动编译,这样当项目使用了包含元对象的文件、界面文件和资源文件时 CMake 可以自动检测并编译。 - -* 查找在./src路径下的所有源文件:`aux_source_directory(./src SRC_FILES)` 。 - -* 设置ReturnCode地址:`set(TARGET_NAME ReturnCode)`。根据提供的源文件创建一个叫ReturnCode的静态库。然后将目标文件与库文件进行链接:`target_link_libraries(${TARGET_NAME} Log)`。 - -## 2.3 返回码test -* 添加test文件到目录,本目录为测试代码目录,目录结构保持与源码目录结构一致。 - -* 在test各个文件夹里添加相对应的CMakeLists.txt文件,通过`add_subdirectory(utils)`添加与源码目录结构相对应的子文件夹。 - -* 在src文件夹下创建ReturnCodeTest.cpp,调用返回码管理接口。在根目录添加第三方库文件,存放需要用到的第三方库。 - -## 2.4 总结 -Cmake的语句都在CMakeLists.txt的文件中,Cmake运行之后就会产生想要的makefile文件,然后再直接make就可以编译出可执行程序。 - diff --git a/doc/design.md b/doc/design.md deleted file mode 100644 index b9e60e3..0000000 --- a/doc/design.md +++ /dev/null @@ -1,1103 +0,0 @@ -# 1. 设计文档 - -## 1.1. 产品概述 - -  一款低功耗的IPC产品设计方案。 - -### 1.1.1. 名词说明: -MCU:外接的单片机; -小核:rk1106内置的单片机 -大核:rk1106 linux部分业务 - -## 1.2. 结构设计 -1. 迷彩外观; -2. 抽屉式电池箱组; -3. 捆绑/相机支架安装方式; -4. 可拓展4G模块; -5. 户外防水等级? - -### 1.2.1. 结构 - -| 物料 | 备注 | -|----|----| -| 喇叭 | - | -| 麦克风 | - | -| 按键 | 恢复出厂
SD卡格式化
TEST拨键
硬件电源开关 | -| 指示灯 | RGB三色灯 | -| 红外灯 | 940nm | -| usb | TYPEC,充电 | -| 太阳能板 | - | -| 电池仓 | - | -| TF卡卡槽 | - | -| PIR | - | - -### 1.2.2. 配件 - -| 物料 | 备注 | -|----|----| -| 捆绑轧带 | - | -| 快充电池 | - | -| 快充适配器 | - | - -## 1.3. 硬件设计 - -### 1.3.1. 关键外设 -1. 双摄像头; -2. PIR sensor; -3. IR leds; -4. 电池(箱体); -5. 电源开关; -6. 复位按键:同步/复位/格式化; -7. 功能按键:拍摄/cpu通电启动/ -8. tf card; -9. usb接口; -10. 光感传感器:白天/黑夜; -11. 单色指示灯:设备状态(工作/WiFi连接/异常); - -## 1.4. 软件设计 - -### 1.4.1. 多态单例设计模式 - -  多态单例模式包含两部分:抽象接口 + 抽象接口实例,代码基于抽象接口存在,业务基于抽象接口实例存在。 - -#### 1.4.1.1. 多态单例图示 - -  下述图示分别为:类图 / 依赖关系图 / 编译链接关系图 -```mermaid -classDiagram - APP --> AbstractInterface:使用 - AbstractInterface <|.. Instance:实现 - 应用 --> 抽象接口库:依赖 - 抽象接口库 ..> 实例库:依赖 - main线程 --> 抽象接口代码库:链接 - main线程 --> 实例代码库:链接 -``` -#### 1.4.1.2. 多态单例模块使用时序图 - -  在使用多态单例设计模式开发功能模块时,使用统一的命名规则: -* 抽象接口命名:xxx + Abstract,例如:libLogAbstract.a; -* 实例库命名:xxx + 具体实例名称,例如:libLogEasylogging.a; - -**调用关系如下图** -```mermaid -sequenceDiagram -User ->> +libLogAbstract.a:调用抽象接口 -libLogAbstract.a --> +libLogEasylogging.a:实际调用实例接口 -libLogEasylogging.a --> -libLogAbstract.a:return -libLogAbstract.a -->> -User:return -``` -**只有main函数实际调用实例库的实例化接口时,log功能才会生效。** - -#### 1.4.1.3. 多态单例目录结构规范 - -  根据多态单例设计模式,指定使用多态单例模式开发的模块的源码目录结构,耦合思路清晰。 -``` -└── Log // 多态单例模式模块的目录 - ├── include // 多态单例模块对外暴露的头文件目录,抽象接口定义 - │   └── ILogAbstract.h - ├── abstract // 多态单例模式抽象接口声明 - │   └── ILogAbstract.cpp - └── src // 多态单例接口实例代码,目录名称可根据实际功能定义 - ├── LogAstract.cpp - └── LogAstract.h -``` -  构建时把abstract目录和src目录的源码分别编译成库,main线程根据实际需要链接并实例化即可。 - -#### 1.4.1.4. 混合多态单例 - -  多态单例的分类有C++版本多态单例,C语言版本多态单例,混合(C/C++)多态单例。混合多态单例的提出是由于纯C语言多态单例开发难度较高,纯C++语言的多态单例不适合底层(特指本文的分层结构中的适配层)接口为C++时,很多C语言代码调用困难。 - -  混合多态单例,内部多态实现使用C++,保留C++开发便捷性和易维护性(智能指针),对外同时提供C语言多态抽象接口和C++多态抽象接口,满足C/C++混编时易用性。最大特点是include文件夹里面会包含两个头文件。 - -##### 1.4.1.4.1. 多态单例目录结构 -``` -hal -├── abstract // 抽象接口库的基础代码 -│   ├── IHal.cpp -│   └── IHalCpp.cpp -├── include -│   ├── IHalCpp.h // C++抽象接口头文件 -│   └── IHal.h // C语言抽象接口头文件 -└── src // 抽象接口实例库代码 - ├── Hal.c // C语言接口实例 - ├── HalCpp.cpp // C++接口实例 - ├── HalCpp.h - ├── Hal.h - ├── HalMakePtr.cpp // 负责创建内部实例 - └── HalMakePtr.h -``` - -#### 1.4.1.5. 多态单例总结: - -1. 应用代码只使用抽象接口,禁止直接依赖实例代码; -2. 应用代码只有在main线程初始化时实例化实例模块即可; -3. 多态单例模块由两个库组成,一个是抽象接口库,一个是实例代码库,支持静态多态和动态多态; - -### 1.4.2. 产品业务功能设计 - -  基于芯片大小核架构的启动设计。 - -#### 1.4.2.1. 白/黑切换状态启动 - -  由外置单片机检测光敏adc,判断由白天切换到黑夜或者黑夜切换到白天时,主动给主控上电,主控上电后会校验并保存新的环境参数,以下次正常PIR启动时,可以避免ircut耗时快速收敛第一帧,最大程度实现快启功能。 - -**启动时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -loop 光敏检测 - MCU ->> MCU:定时唤醒(定时时间待定) - opt 光敏>>>黑夜状态 - note over MCU:由外置单片机点亮红外补光灯 - MCU ->> MCU:点亮红外灯 - end - opt 光敏>>>黑/白切换 - MCU ->> 小核:上电 - activate 小核 - note over 小核:根据上次启动的ircut切换条件初始化ircut IO
本次启动上次的切换条件是异常的 - 小核 ->> 小核:ircut切换-消耗0ms - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms - deactivate 小核 - activate 大核 - 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - 大核 ->> +MCU:获取启动模式 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复启动模式 - opt 黑/白切换状态 - 大核 ->> +MCU:获取黑/白状态 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复黑或者白 - opt 黑/白状态不符合抓拍的初始化参数 - 大核 ->> 大核:ircut重新切换 - 大核 ->> 大核:重新初始化sensor参数 - end - 大核 ->> MCU:关机 - MCU ->> 大核:断电 - end - deactivate 大核 - end -end -``` - -#### 1.4.2.2. 红外触发状态启动(正常工作快启) - -  红外触发启动作为产品正常工作时最经常最重要的启动状态。启动后快速抓拍/录像,快速关机。 - -1. 为保证快启速度,IRCUT需要业务设计进行提前切换; -2. 每次启动抓拍/录像完,需要校验IRCUT状态,保证sensor初始化参数和环境相匹配; -3. 如果发生sensor初始化参数和光照环境不匹配,需要重新初始化sesor并补拍; - -**启动时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -MCU ->> MCU:PIR中断唤醒 -opt 光敏>>>黑夜状态 -note over MCU:由外置单片机点亮红外补光灯 - MCU ->> MCU:点亮红外灯 -end -opt PIR信号触发 - alt 主控未开机 - MCU ->> 小核:上电 - activate 小核 - note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好 - 小核 ->> 小核:ircut切换-消耗0ms - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms - deactivate 小核 - activate 大核 - 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - 大核 ->> +MCU:获取启动模式 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复启动模式 - opt PIR触发状态 - 大核 ->> +MCU:获取黑/白状态 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复黑或者白 - alt sensor初始化参数和环境参数匹配 - note over 大核:环境参数未发生变化时,可直接保存快启的抓拍 - 大核 ->> 大核:保存到sd卡-?ms - else sensor初始化参数和环境参数不匹配 - note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍 - 大核 ->> 大核:ircut重新切换 - 大核 ->> 大核:重新初始化sensor参数 - 大核 ->> 大核:重新抓拍/录像 - 大核 ->> 大核:保存到sd卡-?ms - end - end - alt TEST拨键-OFF - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - else TEST拨键-ON - opt 超时关机 - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - end - end - deactivate 大核 - else 主控已经开机 - MCU ->> +大核:发送抓拍指令 - 大核 ->> 大核:抓拍 - 大核 ->> MCU:回复抓拍 - 大核 ->> 大核:保存抓拍 - 大核 ->> -MCU:关机指令 - MCU ->> 大核:断电 - end -end -``` - -#### 1.4.2.3. 定时触发状态启动 - -**定时触发状态启动时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -MCU ->> MCU:定时中断唤醒 -opt 光敏>>>黑夜状态 -note over MCU:由外置单片机点亮红外补光灯 - MCU ->> MCU:点亮红外灯 -end -opt 根据定时参数上电 - MCU ->> 小核:上电 - activate 小核 - note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好 - 小核 ->> 小核:ircut切换-消耗0ms - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms - deactivate 小核 - activate 大核 - 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - 大核 ->> +MCU:获取启动模式 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复启动模式 - opt 定时启动状态 - 大核 ->> +MCU:获取黑/白状态 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复黑或者白 - alt sensor初始化参数和环境参数匹配 - note over 大核:环境参数未发生变化时,可直接保存快启的抓拍 - 大核 ->> 大核:保存到sd卡-?ms - else sensor初始化参数和环境参数不匹配 - note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍 - 大核 ->> 大核:ircut重新切换 - 大核 ->> 大核:重新初始化sensor参数 - 大核 ->> 大核:重新抓拍/录像 - 大核 ->> 大核:保存到sd卡-?ms - end - end - note over 大核:定时状态启动抓拍完直接关机 - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - deactivate 大核 -end -``` - -#### 1.4.2.4. 设置/调试状态启动 - -  特殊的启动状态,可以较长时间通电完成其它功能,期间可供用户完成相关调试和参数设置,此时功耗较高。超时进入工作模式。 - -1. 设置状态按键触发CPU上电,首先进入设置状态启动,5分钟后自动切换到工作状态。 - -**设置状态启动时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -MCU ->> MCU:待机 -opt 光敏>>>黑夜状态 -note over MCU:由外置单片机点亮红外补光灯 - MCU ->> MCU:点亮红外灯 -end -opt TEST拨键-ON - MCU ->> 小核:上电 - activate 小核 - MCU ->> 大核:上电 - activate 大核 - note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好 - 小核 ->> 小核:ircut切换-消耗0ms - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms - deactivate 小核 - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - 大核 ->> +MCU:获取启动模式 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复启动模式 - opt TEST状态 - 大核 ->> +MCU:获取黑/白状态 - note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务 - MCU -->> -大核:回复黑或者白 - opt sensor初始化参数和环境参数不匹配 - note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍 - 大核 ->> 大核:ircut重新切换 - 大核 ->> 大核:重新初始化sensor参数 - end - alt WiFi链接 - 大核 ->> 大核:常通电待机 - else 无WiFi连接/无操作 - opt 超时 - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - end - end - end - deactivate 大核 -end -``` - -#### 1.4.2.5. 厂测状态启动 - -  生产测试状态触发:使用tf card配置文件触发生产测试状态; - -**厂测状态启动时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -MCU ->> MCU:物理上电 -MCU ->> 小核:上电 - activate 小核 - MCU ->> 大核:上电 - activate 大核 - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms - deactivate 小核 - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - alt TEST拨键-ON - alt tf card厂测配置文件存在 - 大核 ->> 大核:常通电待机 - else tf card厂测配置文件不存在 - opt 超时 - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - end - end - else TEST拨键-OFF - alt tf card厂测配置文件存在 - 大核 ->> 大核:常通电待机 - else tf card厂测配置文件不存在 - 大核 ->> MCU:关机 - MCU ->> 小核:断电 - MCU ->> 大核:断电 - end - end - deactivate 大核 -``` - -#### 1.4.2.6. 快启时序时间消耗 - -```mermaid -sequenceDiagram -participant MCU -participant 小核 -participant 大核 -MCU ->> MCU:PIR中断唤醒 -note right of MCU:设此时为时间轴0ms -MCU ->> 小核:上电 -MCU ->> 大核:上电 -activate MCU -activate 小核 -activate 大核 -note right of 大核:竞品时间12ms - opt 光敏>>>黑夜状态 - note over MCU:由外置单片机点亮红外补光灯 - MCU ->> MCU:点亮红外灯 - end -deactivate MCU - opt PIR信号触发 - alt 主控未开机 - note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好 - note right of 大核:竞品在CPU启动后,获取MCU的光敏值
再切ircut和打开红外灯-时间168ms - 小核 ->> 小核:ircut切换-消耗0ms - 小核 ->> 小核:Sensor初始化 - 小核 --> 大核:Sensor初始化完成-100ms -deactivate 小核 - activate 大核 - 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms - note right of 大核:竞品第一帧时间350ms - 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms - 大核 ->> 大核:启动脚本启动APP-?ms - deactivate 大核 - end - end -deactivate 大核 -``` - -### 1.4.3. 根据软件模块作用域分层 - -#### 1.4.3.1. 应用层(application) - -##### 1.4.3.1.1. 应用层概述 - -  应用层负责处理产品级的复杂业务关系,是产品功能的直接体现,应用层模块全部使用C++接口的多态单例模式设计,各模块之间可以互相调用接口,应用层各库可以随意任意调用中间件或者工具类接口。 - -##### 1.4.3.1.2. 网络服务模块 - -###### 1.4.3.1.2.1. 网络服务概述 - -  根据产品联网属性,网络服务模块分为不联网 / 联网(B端)/ 联网(自研)三个多态属性。联网时,IPC的图片 / 视频资源通过网络服务器进行管理。 - -1. 不联网版本:网络服务模块不实例化即可; -2. 联网(B端):媒体资源由三方服务器管理; -3. 联网(自研):媒体资源由自研服务器管理; - -###### 1.4.3.1.2.2. 网络服务多态设计模式 - -  通过构建配置文件选择需要实例化的网络服务模块代码。 - -##### 1.4.3.1.3. 相机任务管理 - -  相机主业务逻辑使用状态机机制进行管理。 - -###### 1.4.3.1.3.1. 任务状态 - -  任务状态是指相机启动需要执行的任务,可能是拍照 / 视频,可能是其它任务。 - -**例如:** -1. 移动物体侦测启动; -2. 定时启动拍照 / 录像; -3. 测试启动; - -###### 1.4.3.1.3.2. 状态机设计 - -```mermaid -stateDiagram-v2 -[*] --> TopState -TopState --> PowerOff -TopState --> MSDCState -TopState --> DeviceAbnormal -TopState --> MissionState -MissionState --> 存储管理 -存储管理 --> EMMC -存储管理 --> SD卡 -SD卡 --> 插卡 -SD卡 --> 拔卡 -SD卡 --> 卡异常 -MissionState --> 网络管理 -网络管理 --> 联网 -联网 --> 上传文件 -网络管理 --> 未联网 -MissionState --> 直播 -MissionState --> 4G管理 -4G管理 --> Sim卡初始化 -4G管理 --> 注网状态 -MissionState --> Upgrade -``` - -###### 1.4.3.1.3.3. 任务状态获取启动 - -  应用程序运行后,首先需要知道主控是由于何种任务被唤醒,然后根据任务来执行相应的功能代码; - -**时序图** - -```mermaid -sequenceDiagram -participant MCU -participant 大核 -MCU ->> MCU:待机 -opt MCU上电 - MCU ->> 大核:上电 - activate 大核 - 大核 ->> 大核:系统初始化 - 大核 ->> 大核:启动脚本拉起APP - 大核 ->> +MCU:读取启动任务 - MCU -->> -大核:return - alt PIR触发 - 大核 ->> 大核:APP初始化 - 大核 ->> 大核:抓拍并保存 - else 定时 - 大核 ->> 大核:APP初始化 - 大核 ->> 大核:抓拍并保存 - else TEST - 大核 ->> 大核:APP初始化 - 大核 ->> 大核:待机 - end - deactivate 大核 -end -``` - -#### 1.4.3.2. 中间件(middleware) - -##### 1.4.3.2.1. 中间件概述 - -  一些相对中性的业务功能库,这些库可以提供给不同的产品需求使用,在应用层不同的调用方式可实现不同的产品功能。中间件只能被应用层调用或者向下调用适配层或者调用工具库,中间件各模块之间不能互相调用。中间件库接口可以使用C或者C++接口。 - -##### 1.4.3.2.2. 设备管理模块 - -  设备,统指Linux的设备节点,应用层唯一的硬件设备接口库。包含灯 / 按键 / GPIO / SD卡 / 串口 / USB等。 - -##### 1.4.3.2.3. 相机管理模块 - -  应用层唯一的摄像头接口库。 - -##### 1.4.3.2.4. MCU管理模块 - -  MCU通信接口库,一般使用串口进行通信,需要考虑多态其它接口(例如I2C),考虑多态协议数据结构。MCU负责管理外设的电源控制 / 充当硬狗等。 - -###### 1.4.3.2.4.1. MCU管理模块设计模式 - -  使用C++接口的多态单例模式。 - -基本功能: - -1. 使用utils当中的串口功能模块,支持多态切换到其它串口功能模块; -2. 设置MCU管理的监视器monitor,用于回调处理MCU接受到的业务事件; -3. 通信协议不暴露,内部处理基于协议的数据解析 / 组包; -4. 通信协议支持多态拓展,通信协议独立成库; - -##### 1.4.3.2.5. MCU协议模块 - -  负责对MCU协议进行封包/解包,负责协议的多态替换。协议数据统一使用网络字节序(大端字节序)。 - -###### 1.4.3.2.5.1. 协议格式 - -| 协议头 | 流水号 | 命令字 | 长度 | 数据段 | 校验码 | -|----|----|----|----|----|----| -| 2字节
0xFAC1 | 4字节 | 2字节 | 2字节 | - | 2字节 | - -**流水号** - -  流水号用于强绑定问答型协议的发送数据和回复数据,回复者原数据回传即可。例如: - -``` -unsigned char ASK_IPC_MISSION[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x01, 0x00, 0x0C, 0x71, 0x88}; -unsigned char REPLY_IPC_MISSION[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x0D, 0x01, 0xAA, 0x89}; -``` - -  流水号管理发送方和接收方互相独立,各自往外发的协议中流水号存在重复的可能,接收方直接复制回传即可。 - -  流水号必须大于等于1,0用于代码初始化值,代码意义上表示无效的流水号。 - -**协议收发匹配逻辑** -  协议发送时,附带自管理的流水号,对端回复时,根据流水号绑定发送的协议,为了避免对端回复时,流水号错误导致的业务逻辑错乱,本端除了匹配流水号,还需要根据协议匹配回复的命令字,保证回复内容的有效匹配。如果流水号和命令字无法同时匹配,该回复的数据包被丢弃。 - -**校验码算法** - -  校验码算法使用ModBus CRC16方法计算。 - -**参考代码(查表法)** - -``` -/* Table of CRC values for high–order byte */ -unsigned char chCRCHi[] ={ - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, - 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, - 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, - 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, - 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 -}; - -/* Table of CRC values for low–order byte */ -unsigned char chCRCLo[] ={ - 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, - 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, - 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, - 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, - 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, - 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, - 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, - 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, - 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, - 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, - 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, - 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, - 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, - 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, - 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, - 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, - 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, - 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, - 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, - 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, - 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, - 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, - 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, - 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, - 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, - 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 -}; -/** - * @brief 计算校验和 - * - * @param pData 数据指针 - * @param length 数据长度 - * @return unsigned short - */ -unsigned short calculate_check_sum(const unsigned char* pData, unsigned short length) -{ - unsigned char CRCHi = 0xFF; - unsigned char CRCLo = 0xFF; - int uIndex; - while (length--) - { - uIndex = CRCHi ^ *pData++; - CRCHi = CRCLo ^ chCRCHi[uIndex]; - CRCLo = chCRCLo[uIndex]; - } - return (CRCHi << 8 | CRCLo); -} -``` - -###### 1.4.3.2.5.2. 协议内容 - -**基本描述** -1. 大于等于0x8000的命令字由CPU发给MCU; -2. 小于0x8000的命令字由MCU发给CPU; -3. 大于0x0801而小于0xC101的命令由CPU主动发送给MCU,大于等于0xC101的命令由CPU回复发送给MCU; -4. 问答型协议只有按位最高位相反,其它位相等,例如:0x8101与0x0101是一问一答的协议; - -| 命令字 | CPU | MCU | 数据段 | 协议解析 | 备注 | -|----|----|----|----|----|----| -| 0x8101 | ask | - | - | 获取启动模式 | - | -| 0x0101 | - | reply | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:连拍启动
0x04:PIR延时启动
0x05:定时(间隔一定时间)启动
0x06:关机
0x07:低电关机 | 回复启动模式 | - | -| 0x8102 | ask | - | - | 断电关机 | - | -| 0x8103 | ask | - | - | 喂狗 | - | -| 0x8104 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 开启狗/设置喂狗周期 | - | -| 0x0104 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 开启狗/设置喂狗周期回复 | - | -| 0x8105 | ask | - | - | 关闭狗 | - | -| 0x0105 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 关闭狗回复 | - | -| 0x8106 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置间隔启动时间 | - | -| 0x0106 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置间隔启动时间回复 | - | -| 0x8107 | ask | - | Data[0]:Year
Data[1]:Mon
1-12
Data[2]:Day
0-31
Data[3]:Hour
0-23
Data[4]:Min
0-59
Data[5]:Sec
0-59 | 设置日期和时间 | - | -| 0x0107 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置日期和时间回复 | - | -| 0x8108 | ask | - | Data[0]:灵敏度
0-9 | 设置PIR灵敏度 | - | -| 0x0108 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置PIR灵敏度回复 | - | -| 0x8109 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置连拍间隔 | - | -| 0x0109 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置连拍间隔回复 | - | -| 0x810A | ask | - | Data[0]:控制模式
0-关闭红外灯
1-开启红外灯 | 红外灯控制 | - | -| 0x010A | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 红外灯控制回复 | - | -| 0x810B | ask | - | - | 获取光敏值 | - | -| 0x010B | - | reply | Data[0]:结果
0-100 | 获取光敏值回复 | - | -| ====== | === | ====== | ============================ | ==================== | ======= | -| 0xC101 | reply | - | Data[0]:结果
0x01:成功
0x02:失败 | 发送启动模式回复 | - | -| 0x4101 | - | ask | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:连拍启动
0x04:PIR延时启动
0x05:定时(间隔一定时间)启动
0x06:关机
0x07:低电关机 | 发送启动模式 | - | - -##### 1.4.3.2.6. IPC配置库 - -  负责管理IPC产品相关的配置数据。 - -###### 1.4.3.2.6.1. IPC配置库设计模式 - -  使用多态单例设计模式,对外提供C语言接口,内部不局限使用C或者C++。 - -**基本功能** - -1. 敏感数据(例如:账号 / 密码)需要加密处理; -2. 读到内存使用二进制数据,缓存到数据结构体; -3. 调用utils工具里面的配置库,对配置文件进行读 / 写; -4. 使用二进制结构体 + 明文配置文件结合的模式,既可减少内存消耗,又可以规避二进制数据升级迭代数据匹配困难问题; -5. 使用枚举方式管理IPC配置数据定义,当使用纯16进制保存数据时,可不链接utils工具里面的配置库,直接保存16进制数据到文件系统即可; -6. 应用程序全局唯一可以操作IPC配置文件的库,保证配置文件正确读写; - -###### 1.4.3.2.6.2. IPC配置库类图 -```mermaid -classDiagram - i_ipc_config <.. ipc_config:实现 - ipc_config --> i_config_manager:依赖 - ipc_config --> IHal:依赖 - i_config_manager <.. config_manager:实现 - config_manager --> libconfig开源库:依赖 -``` - -###### 1.4.3.2.6.3. 关键业务时序图 - -  **时序图会忽略抽象接口直接使用实例接口表示。** - -* IPC配置库初始化 / 解初始化 -```mermaid -sequenceDiagram -participant User -participant ipc_config -participant i_config -participant IHal -User ->> +ipc_config:初始化 - ipc_config ->> +IHal:获取文件系统路径 - IHal -->> -ipc_config:return - ipc_config ->> +i_config:打开配置文件 - i_config -->> -ipc_config:return - alt 打开成功 - rect rgba(255,220,200,1) - loop 读取所有数据到IPC数据结构体 - ipc_config ->> +i_config:读取一个数据到IPC数据结构体 - i_config -->> -ipc_config:return - rect rgba(255,255,200,1) - opt 读取失败 - ipc_config ->> ipc_config:生成默认数据 - ipc_config ->> +i_config:设置默认数据 - i_config ->> -ipc_config:return - end - end - end - ipc_config ->> +i_config:关闭配置文件 - i_config -->> -ipc_config:return - end - else 打开失败 - rect rgba(255,200,200,1) - ipc_config ->> ipc_config:生产默认数据 - ipc_config ->> +i_config:创建配置文件 - i_config -->> -ipc_config:return - ipc_config ->> +i_config:设置默认数据 - i_config -->> -ipc_config:return - ipc_config ->> +i_config:关闭配置文件 - i_config -->> -ipc_config:return - end - end -ipc_config -->> -User:return -User ->> +ipc_config:解初始化 - ipc_config ->> ipc_config:释放内存中的数据 -ipc_config -->> -User:return -``` - -* 读 / 写(修改)数据 - -```mermaid -sequenceDiagram -participant User -participant ipc_config -User ->> +ipc_config:读取数据 - ipc_config ->> ipc_config:返回内存保存的数据 -ipc_config -->> -User:return -User ->> +ipc_config:修改数据 - ipc_config ->> ipc_config:修改内存保存的数据 -ipc_config -->> -User:return -``` - -* 保存数据 - - -```mermaid -sequenceDiagram -participant User -participant ipc_config -participant i_config -User ->> +ipc_config:保存 - ipc_config ->> +i_config:打开配置文件 - i_config -->> -ipc_config:return - ipc_config ->> +i_config:同步数据 - i_config -->> -ipc_config:return - ipc_config ->> +i_config:保存配置文件 - i_config -->> -ipc_config:return - ipc_config ->> +i_config:关闭配置文件 - i_config -->> -ipc_config:return -ipc_config -->> -User:return -``` - - -##### 1.4.3.2.7. 高级配置库 - -  对配置库的二级封装,提供更便捷的功能服务,例如:可以监控文件的修改事件 / 可以直接捕获某个配置文件或者数据的操作对象。 - -###### 1.4.3.2.7.1. 高级配置库设计 - -  对外暴露C++接口,使用多态单例设计模式。 - -##### 1.4.3.2.8. 状态机管理 - -  提供实现状态机管理机制C++接口,使用鸿蒙状态机开源源码进行改造封装。 - -###### 1.4.3.2.8.1. 状态机管理设计模式 - -  使用多态单例设计模式,暂定使用鸿蒙状态机开源代码改造实现,后续可替换其它源码或者自研代码。 - -##### 1.4.3.2.9. 文件数据库 - -  文件数据库负责管理设备的媒体资源(图片 / 视频等)。 - -###### 1.4.3.2.9.1. 文件数据设计模式 - -  使用混合多态单例模式开发。 - -###### 1.4.3.2.9.2. 开源库选型 - -  sqlite3开源库,编译成工具类库提供给文件数据库使用。 - -###### 1.4.3.2.9.3. 基本功能和业务需求 - -1. 对媒体资源文件的增删改查处理; -2. 记录媒体资源文件的生成时间,任务(是否发送); -3. 业务根据需要,通过数据库判断哪些文件已经发送完成,哪些文件发送失败,哪些文件待发送; - -#### 1.4.3.3. 硬件适配层(hal) - -  负责适配不同的硬件平台。 - -##### 1.4.3.3.1. 硬件适配层设计模式 - -  基于C语言接口的多态单例模式,编译时静态多态链接对应的芯片平台适配代码,实现芯片接口的标准功能定义。 - -##### 1.4.3.3.2. 媒体适配方案: - -  IPC应用在适配芯片平台的多媒体接口时,使用多进程的方式实现。满足IPC应用可以快起(无需等待媒体相关的初始化)的需求。 - -**媒体基本需求** - -1. 图片抓拍; -2. 视频抓拍; - -**多进程通信方案** - -  使用本地socket的方式进行多进程通信,媒体进程为客户端,IPC应用为服务端(IPC先启动)。 - -1. 客户端可自动重连; -2. 服务端可多次关闭和开启,满足gtest资源回收需求; - -##### 1.4.3.3.3. 适配层多进程类图 - -```mermaid -classDiagram - i_hal <.. hal:实现 - hal --> v_media_handle:依赖 - v_media_handle --> local_socket:依赖 - local_socket .. media进程:跨进程 - media进程 --> 芯片媒体API:依赖 -``` - -##### 1.4.3.3.4. 跨进程业务时序图 - -* 本地socket链接 - -```mermaid -sequenceDiagram -participant hal -participant v_media_handle -participant local_socket_s -participant local_socket_c -participant media进程 -participant 芯片媒体API -hal ->> +v_media_handle:初始化 - v_media_handle ->> +local_socket_s:本地socket服务端启动 - par 本地socket初始化 - local_socket_s -->> -v_media_handle:return -v_media_handle -->> -hal:return - and - media进程 ->> media进程:启动 - media进程 ->> +local_socket_c:初始化服务端 - local_socket_c -->> local_socket_s:链接 - local_socket_c -->> -media进程:return - local_socket_s -->> local_socket_c:初始化媒体 - local_socket_c ->> media进程:回调回传协议事件 - media进程 ->> +芯片媒体API:初始化媒体 - 芯片媒体API -->> -media进程:return - end -``` - -* 存在问题: -使用C语言开发时如何解决智能指针问题? - -#### 1.4.3.4. 工具库(utils) - -##### 1.4.3.4.1. 工具库概述 -  工具库是功能单一的不依赖任何三方库的独立库(日志库和返回码管理库除外),必须提供C语言接口,内部实现不限于C或者C++。工具类库可以被任意的其它模块调用,特别指hal/component/application三大层级。 - -##### 1.4.3.4.2. 日志库 - -###### 1.4.3.4.2.1. 日志库概述 -  提供程序的日志管理功能,含日志的实时打印/保存/跟踪(实时上传云端)。 - -###### 1.4.3.4.2.2. 日志库设计模式 -  C语言接口的多态单例模式,可动态/静态加载多态实例。 - -###### 1.4.3.4.2.3. 日志库启动 -  日志库是否启用一般来讲是dubug版本启用日志功能,release版本禁用日志功能,考虑到release版本的维护问题,标准启动时,main线程在启动时使用dlopen系列函数去加载日志库(多态),特殊版本仍可在main线程加载日志库后,二次实例化日志库(多态)来实现不同的日志功能。 - -1. 标准流程:main线程加载sd卡动态库,如有即可动态实现日志功能,正常出货sd卡不带日志库,此时没有日志功能; -2. 可以通过配置参数决定是否启用日志; -3. sd卡的日志动态,根据实际售后维护,可以是实时打印log/保存本地log/云log的多态实例库; -4. 多态日志功能,可以忽略debug和release版本的区别,只发布一个版本即可; - -##### 1.4.3.4.3. 状态码管理库 - -  提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,纯C语言开发的模块,形成项目内部唯一返回码标准。 - -###### 1.4.3.4.3.1. 状态码功能 - -1. 创建返回码操作“句柄”; -2. 打印返回码/获取返回码(字符串); -3. 不同模块可继承实现各自的返回码处理接口; -4. 不同模块之间可透传状态码,避免错误码的转换麻烦; -5. 状态码的定义是跟着模块走的,独立模块的状态码定义在模块内部,不链接时不占用程序空间; - -###### 1.4.3.4.3.2. 基础状态码定义 - -  基础状态码是全局的基础状态码,枚举值全局唯一,其它独立模块必须继承基础状态码累加枚举值,但是,独立模块之间的枚举值可重复,状态码在使用时,日志只关注状态码的字符串,不关心状态码枚举值,代码逻辑使用枚举值。 - -``` -enum STATUS_CODE -{ - STATUS_CODE_OK = 0, - STATUS_CODE_NOT_OK, - STATUS_CODE_VIRTUAL_FUNCTION, - STATUS_CODE_INVALID_PARAMENTER, - STATUS_CODE_END -}; -``` -| 枚举名 | 字符串 | 描述 | -| ------ | :------------------------------- | --------- | -| STATUS_CODE_OK | STATUS_CODE_OK | 成功 | -| STATUS_CODE_NOT_OK | STATUS_CODE_NOT_OK | 失败 | -| STATUS_CODE_VIRTUAL_FUNCTION | STATUS_CODE_VIRTUAL_FUNCTION | 抽象接口,提示抽象接口未实例化 | -| STATUS_CODE_INVALID_PARAMENTER | STATUS_CODE_INVALID_PARAMENTER | 无效的参数 | -| STATUS_CODE_END | STATUS_CODE_END | 结束,无意义 | -| 其它 | ? | 其它状态码在各自模块定义 | - -###### 1.4.3.4.3.3. 已知漏洞 - -  状态码在代码层面是存在重复的可能性的,代码逻辑在使用状态码枚举值时,可能会出现逻辑错误。 - -* 解决方案 -在使用状态码进行逻辑判断时,使用状态码枚举值的字符串。 -Example: -``` -static inline bool StatusCodeEqual(const StatusCode code, const char *value) -``` - -##### 1.4.3.4.4. 系统标准接口库 - -  对系统标准接口的套壳封装,主要是为了对系统标准打桩满足测试需求。 - -  使用普通的C语言接口封装即可,通过使用gcc编译参数在Linux x86系统中满足打桩需求,在交叉编译(担心工具链兼容问题)测试程序中无法对系统标准接口进行打桩。 - -##### 1.4.3.4.5. 通用配置库 - -###### 1.4.3.4.5.1. 通用配置库概述 - -  配置库负责管理软件配置参数,对配置数据进行设置 / 获取 / 存储 / 备份 / 升级等功能;通用配置库不限制使用场景,是一个通用的配置文件管理库。 - -###### 1.4.3.4.5.2. 配置库设计模式 - -  对外提供C语言接口,内部不局限使用C或者C++。整个软件唯一可以直接操作文件系统配置文件的库。配置库可以理解为简单的三方库的接口直接封装,使用多态单例设计模式实现静态或者动态切换三方库的使用。 - -**基本功能** - -1. 使用**三方库**保存明文格式的配置文件到文件系统; -2. 可注册回调函数,监听文件的操作事件; -3. 使用字符串名字key + 值的方式管理配置文件,作为通用的配置文件管理库; - -###### 1.4.3.4.5.3. 开源库 - -两种方案: -1. 使用libconfig作为文件操作的开源库,实现文件和数据的读 / 写。 -2. 使用sqlite3作为文件操作的开源库,作为数据库文件处理。 - -###### 1.4.3.4.5.4. 通用配置库类图 -  多态单例设计模式,main线程静态链接多态库。 -```mermaid -classDiagram - i_config_manager <.. config_manager:实现 - config_manager --> libconfig开源库:依赖 - i_config_manager <.. sqlite_manager:实现 - sqlite_manager --> sqlite3数据库:依赖 -``` - -###### 1.4.3.4.5.5. 备份机制 - -  备份数据用于数据异常时可还原旧数据。 - -方案选择: -1. 出厂默认配置文件为只读文件,在数据破坏时还原; - -###### 1.4.3.4.5.6. 升级机制 - -  程序升级后配置数据发生增 / 删时如何兼容和还原。 - -##### 1.4.3.4.6. 串口功能模块 - -  串口的打开 / 关闭 / 数据读 / 数据写 功能。 - -###### 1.4.3.4.6.1. 串口开源库 -使用下述开源库对串口数据进行收发。 -``` -https://gitee.com/RT-Thread-Mirror/TinyFrame -``` - -##### 1.4.3.4.7. MCU协议库 - -  负责MCU通信协议的组包 / 拆包 / 事件转换。 - -###### 1.4.3.4.7.1. MCU协议库设计模式 - -  基于C语言的多态单例设计模式。 - -###### 1.4.3.4.7.2. 协议数据结构 - -##### 1.4.3.4.8. 多进程通讯库 - -  负责多进程之间的数据交换。使用local socket方式实现。 - -##### 1.4.3.4.9. 多进程协议库 - -  负责IPC应用和媒体进程之间的协议组包 / 拆包,在协议和业务之间进行转换接口的封装。 - -## 1.5. 生产测试/研发调试 - -  基于公版代码派生出来的特定的定制版本,用于辅助生产和测试。 - -## 1.6. 自动化测试 - -### 1.6.1. 自动化测试概述 - -  自动化测试是该产品设计的一大特点,需要严格执行。自动化测试指使用纯代码对业务设计进行测试用例设计,实现业务集成测试的能力。 - - -### 1.6.2. 自动化测试规范 - -1. 每个源码文件在开发时,均要写调试的example,用于验证该文件的接口功能;测试文件的命名规则为:文件名 + “_Test.c(pp)”; -例如: -* C语言:log_impl.c对应的测试文件为log_impl_Test.cpp; -* C++:LogImpl.cpp对应的测试文件为LogImpl_Test.cpp; - -## 1.7. 编码规范 - -1. 文件命名统一使用大驼峰命名规则; -2. 混合多态单例的C++抽象接口头文件需要有Cpp关键字标识; -3. 多单单例的头文件 / 类名 统一使用“I”前缀,interface的单词首字母; -4. 抽象对象接口类统一使用“V”前缀, virtual的单词首字母; -5. 所有函数统一使用大驼峰命名规则; -6. 其它遵循华为的编码规范要求; \ No newline at end of file diff --git a/doc/develop_standard.md b/doc/develop_standard.md deleted file mode 100644 index c218327..0000000 --- a/doc/develop_standard.md +++ /dev/null @@ -1,111 +0,0 @@ -# 1. SDK开发规范 - -## 1.1. 编码规范 - -### 1.1.1. 指针/智能指针 - -* C++编码只能使用智能指针; -* 指针遵循谁使用谁进行“非空”判断,且无比使用前进行“非空”判断; -* 智能指针经过转换后务必进行“非空”判断; - -理论上,**明显不可能为空的指针,可以不进行“非空”判断**,可以不进行“非空”判断的场景: - -``` -void McuManagerImpl::OtherSideSendIpcMission(const unsigned int &serialNumber, const unsigned char &mission) -{ - class McuRecvIpcMission : public McuRecvImpl, public McuRecv - { - public: - McuRecvIpcMission(std::shared_ptr &mcuManager, const unsigned int &serialNumber, - const OtherSideSendType &sendType, const unsigned char &mission) - : McuRecvImpl(serialNumber, sendType) - { - McuRecv::mDataRecvReply = mission; - McuRecvImpl::mMcuManager = mcuManager; - } - ~McuRecvIpcMission() = default; - void ReplyFinished(const bool result) override - { - // 此处可以不进行“非空”判断,该值在有限范围内(OtherSideSendIpcMission函数内部)就能看出是否为空 - McuRecvImpl::mMcuManager->ReplyOtherSideSendIpcMission(ASK_RESULT::SUCCEED, McuRecvImpl::mSerialNumber); - } - }; - std::shared_ptr monitor = GetMcuMonitor(); - std::shared_ptr manager = std::dynamic_pointer_cast(SharedFromThis()); - std::shared_ptr recv = - std::make_shared(manager, serialNumber, OtherSideSendType::SEND_IPC_MISSION, mission); - if (monitor) { - monitor->RecvIpcMissionEvent(recv, static_cast(mission)); - } - else { - LogWarning("mMonitor is nullptr, AddMcuRecv.\n"); - AddMcuRecv(recv); - } -} -``` - -**没有进行“非空”判断的代码,应该开发测试用例,保证“空指针”的报错。** - -### 1.1.2. 注释 - -* 注释必须使用英文,且使用翻译器翻译; -  避免编码问题导致的乱码,且需要保证阅读困难时可使用翻译器翻译成可读的中文; - -**注:** 注释翻译工具使用[百度翻译](https://fanyi.baidu.com/);翻译的注释在使用doxygen工具生成接口文档时,在网页上方便翻译成中文。 - -### 1.1.3. C++继承 - -* 子类使用父类的函数时,函数前必须加父类名,降低阅读难度,没有父类名的一律为本类函数(有可能是虚函数); - -### 1.1.4. 变量命名 - -#### 1.1.4.1. 结构体/类成员 - -* 结构体和类成员必须要使用驼峰命名法,且首字母必须为m表示成员变量; - -``` -typedef struct app_get_product_info -{ - app_get_product_info(); - std::string mModel; - std::string mCompany; - std::string mSoc; - std::string mSp; -} AppGetProductInfo; -``` - -### 1.1.5. 文件命名 - -* 文件名必须使用驼峰命名法,且首字母大写; - -### 1.1.6. 代码排版 - -* 使用统一标准的代码排版风格,保持多人开发时代码的整洁,避免因为排版(特别是编辑工具的自动排版功能)导致每次提交时都产生大量的排版修改,影响后续代码异常排查; - -  请使用仓库跟目录下.clang-format配置文件进行排版,如果使用vscode编辑器开发代码,可直接使用快捷键ctrl+alt+f进行排版;也可以使用构建脚本对代码进行排版。 - -**对发生修改的代码进行格式化:** - -```code -$ make cmake // 在仓库根目录执行,对发生修改的文件创建格式化命令 -$ cd cmake-shell/ -$ make improve_modified_code // 文件格式化命令,统一排版,此命名只对发生修改的文件进行格式化 -``` - -**对全部文件进行格式化:** - -```code -详见配置文件://build/global_config.cmake -把 COMPILE_IMPROVE_SUPPORT 设置为 true 时,将会在每次编译代码时进行格式化。 -if(${LINUX_TEST} MATCHES "true") - set(CLANG_TIDY_SUPPORT "true") - set(CLANG_FORMAT_SUPPORT "true") - set(COMPILE_IMPROVE_SUPPORT "false") # 开启后每次编译可能会很慢 - set(LLVM_PATH "$ENV{HOME}/llvm-project") -endif() -``` - -### 1.1.7. 函数 - -* 单个函数代码行控制在50行内,阅读时无需上下滚动去理解代码逻辑;极少数初始化数据的无逻辑推理的代码除外; -* 函数参数不能超过10个; diff --git a/doc/doxygen_user_guide.md b/doc/doxygen_user_guide.md deleted file mode 100644 index 33907f6..0000000 --- a/doc/doxygen_user_guide.md +++ /dev/null @@ -1,21 +0,0 @@ -# 1. Linux嵌入式项目使用Doxygen生成API文档 - -## 1.1. Doxygen简介 - -  Doxygen是一个开源的文档生成工具,可以用来生成项目源代码的API文档。 - -## 1.2. Doxygen安装 - -  Doxygen安装非常简单,直接在官网下载最新版本即可。 - -``` - $ sudo apt-get install doxygen -``` - -## 1.3. 安装Graphviz - -  Doxygen本身不直接支持画图功能,但它可以生成DOT格式的图形描述文件,然后使用Graphviz工具进行渲染。 - -``` -$ sudo apt-get install graphviz -``` \ No newline at end of file diff --git a/doc/gdb_coredump_guide.md b/doc/gdb_coredump_guide.md deleted file mode 100644 index b7de2ad..0000000 --- a/doc/gdb_coredump_guide.md +++ /dev/null @@ -1,209 +0,0 @@ -# 1. gdb coredump分析 - -  本文介绍ubuntu系统环境下coredump文件的分析方法。 - -**一个coredump示例:** - -``` -$ ../output_files/test/bin/McuManagerTest --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission -Note: Google Test filter = McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission -[==========] Running 1 test from 1 test suite. -[----------] Global test environment set-up. -[----------] 1 test from McuManagerTest -NewLog succeed. -LogImplInit -[ RUN ] McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission -2024-05-15 17:43:04,782 INFO [default] [McuManagerMakePtr.cpp:23]:CreateMcuManager is ok. - -2024-05-15 17:43:04,783 INFO [default] [IMcuManager.cpp:72]:Instance changed succeed. - -2024-05-15 17:43:04,783 INFO [default] [UartDeviceImpl.cpp:277]:Create the uart device object. - -Can't Open Serial Port: No such file or directory -2024-05-15 17:43:04,784 ERROR [default] [McuDevice.cpp:51]:IUartOpen failed. - -2024-05-15 17:43:04,787 INFO [default] [UartDeviceImpl.cpp:277]:Create the uart device object. - -Can't Open Serial Port: No such file or directory -2024-05-15 17:43:04,787 ERROR [default] [McuDevice.cpp:51]:IUartOpen failed. - -terminate called without an active exception -Aborted (core dumped) -``` - -## 1.1. coredump文件生成路径查询 - -``` -$ cat /proc/sys/kernel/core_pattern -|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E -``` - -修改coredump文件生成路径: - -``` -$ sudo sh -c 'echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern' -$ cat /proc/sys/kernel/core_pattern -/home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p -``` -命令: -sudo sh -c 'echo /path/core.%e.%p > /proc/sys/kernel/core_pattern' - -例如: -``` -sudo sh -c 'echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern' -``` - -**发现路径下并未生成coredump文件** - -``` -$ ulimit -a -core file size (blocks, -c) 0 // 0表示终端未开启core dump -data seg size (kbytes, -d) unlimited -scheduling priority (-e) 0 -file size (blocks, -f) unlimited -pending signals (-i) 63499 -max locked memory (kbytes, -l) 65536 -max memory size (kbytes, -m) unlimited -open files (-n) 1024 -pipe size (512 bytes, -p) 8 -POSIX message queues (bytes, -q) 819200 -real-time priority (-r) 0 -stack size (kbytes, -s) 8192 -cpu time (seconds, -t) unlimited -max user processes (-u) 63499 -virtual memory (kbytes, -v) unlimited -file locks (-x) unlimited -``` - -解决: -``` -$ ulimit -c unlimited -``` - -sudo echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern - -## 1.2. gdb查看堆栈信息 - -**Ubuntu系统需要加sudo执行程序才会生成coredump文件。** - -### 1.2.1. 无法识别coredump文件 - -  在gdb中无法识别coredump文件,如下所示: - -``` -$ sudo gdb ../output_files/test/bin/McuManagerTest core.smbd.3390383 -[sudo] password for xiaojiazhu: -Sorry, try again. -[sudo] password for xiaojiazhu: -GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 -Copyright (C) 2020 Free Software Foundation, Inc. -License GPLv3+: GNU GPL version 3 or later -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. -Type "show copying" and "show warranty" for details. -This GDB was configured as "x86_64-linux-gnu". -Type "show configuration" for configuration details. -For bug reporting instructions, please see: -. -Find the GDB manual and other documentation resources online at: - . - -For help, type "help". -Type "apropos word" to search for commands related to "word"... -Reading symbols from ../output_files/test/bin/McuManagerTest... - -warning: core file may not match specified executable file. // 表示coredump文件与可执行文件不匹配 -[New LWP 3390383] -Core was generated by `/usr/sbin/smbd --foreground --no-process-group'. -Program terminated with signal SIGABRT, Aborted. -#0 0x00007fd59718600b in ?? () -(gdb) bt -#0 0x00007fd59718600b in ?? () -#1 0x0000000000001c80 in ?? () -#2 0x0000000000000000 in ?? () -``` - -由于gdb和asan同时启用会冲突,导致无法识别coredump文件。解决办法如下: - -修改://build/sdk_config.cmake - -``` -# Gdb debug -if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) - message("---------------------------Debug mode.-----------------------") - SET(CMAKE_BUILD_TYPE "Debug") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Wall -g -ggdb") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -Wall -g -ggdb") - SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") - SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") - # asan - # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined") - # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined") -else() - message("---------------------------Release mode.-----------------------") - SET(CMAKE_BUILD_TYPE "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os") -endif() -``` - -解决后: - -``` -$ sudo gdb ../output_files/test/bin/McuManagerTest core.McuManagerTest.3406751 -GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2 -Copyright (C) 2020 Free Software Foundation, Inc. -License GPLv3+: GNU GPL version 3 or later -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. -Type "show copying" and "show warranty" for details. -This GDB was configured as "x86_64-linux-gnu". -Type "show configuration" for configuration details. -For bug reporting instructions, please see: -. -Find the GDB manual and other documentation resources online at: - . - -For help, type "help". -Type "apropos word" to search for commands related to "word"... -Reading symbols from ../output_files/test/bin/McuManagerTest... -[New LWP 3406751] -[New LWP 3406753] -[New LWP 3406752] -[Thread debugging using libthread_db enabled] -Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". -Core was generated by `../output_files/test/bin/McuManagerTest --gtest_filter=McuManagerTest.RH_INTEGR'. -Program terminated with signal SIGABRT, Aborted. -#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 -50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. -[Current thread is 1 (Thread 0x7fd355968740 (LWP 3406751))] -(gdb) bt -#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 -#1 0x00007fd35598f859 in __GI_abort () at abort.c:79 -#2 0x00007fd355d678d1 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 -#3 0x00007fd355d7337c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6 -#4 0x00007fd355d733e7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6 -#5 0x000055c247b3ae41 in std::thread::operator= (__t=..., this=0x55c248d19748) at /usr/include/c++/9/thread:152 -#6 McuProtocol::Init (this=this@entry=0x55c248d196f8) at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/src/McuProtocol.cpp:58 -#7 0x000055c247b03e57 in McuManagerImpl::Init (this=0x55c248d19680) - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/middleware/McuManager/src/McuManagerImpl.cpp:46 -#8 0x000055c247acd3d4 in McuManagerTest::McuManagerTest_RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission_Test::TestBody (this=) - at /usr/include/c++/9/bits/shared_ptr_base.h:1020 -#9 0x000055c247b303fd in void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) () at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#10 0x000055c247b23343 in testing::Test::Run() () at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#11 0x000055c247b2342b in testing::TestInfo::Run() () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#12 0x000055c247b2376e in testing::TestSuite::Run() () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#13 0x000055c247b2a0fa in testing::internal::UnitTestImpl::RunAllTests() () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#14 0x000055c247b3085e in bool testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#15 0x000055c247b23529 in testing::UnitTest::Run() () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121 -#16 0x000055c247ac9287 in RUN_ALL_TESTS () - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/external/gtest/googletest-release-1.11.0/googletest/include/gtest/gtest.h:2490 -#17 main (argc=, argv=) - at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/test/middleware/McuManager/mainTest.cpp:22 -(gdb) -``` \ No newline at end of file diff --git a/doc/git/git-commit-standardize.md b/doc/git/git-commit-standardize.md deleted file mode 100644 index 80151ac..0000000 --- a/doc/git/git-commit-standardize.md +++ /dev/null @@ -1,67 +0,0 @@ -### 背景 - -Git每次提交代码都需要写commit message,否则就不允许提交。一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作……但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。 - -### 规范建设 - -#### 规范梳理 - -初期我们在互联网上搜索了大量有关git commit规范的资料,但只有Angular规范是目前使用最广的写法,比较合理和系统化,并且有配套的工具(IDEA就有插件支持这种写法)。最后综合阿里巴巴高德地图相关部门已有的规范总结出了一套git commit规范。 - -## **commit message格式** - -```plain -(scope): -``` -## type (必须) - -用于说明git commit的类别,只允许使用下面的标识。 - -feat:新功能(feature)。 - -fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。 - -* fix:产生diff并自动修复此问题。适合于一次提交直接修复问题 -* to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix -docs:文档(documentation)。 - -style:格式(不影响代码运行的变动)。 - -refactor:重构(即不是新增功能,也不是修改bug的代码变动)。 - -perf:优化相关,比如提升性能、体验。 - -test:增加测试。 - -chore:构建过程或辅助工具的变动。 - -revert:回滚到上一个版本。 - -merge:代码合并。 - -sync:同步主线或分支的Bug。 - -## scope (可选) - -scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。 - -例如在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的修改影响了不止一个scope,你可以使用*代替。 - -## subject (必须) - -ubject是commit目的的简短描述,不超过50个字符。 - -建议使用中文(感觉中国人用中文描述问题能更清楚一些)。 - -* 结尾不加句号或其他标点符号。 -* 根据以上规范git commit message将是如下的格式: -```plain -fix(DAO):用户查询缺少username属性 -feat(Controller):用户查询接口开发 -``` -以上就是我们梳理的git commit规范,那么我们这样规范git commit到底有哪些好处呢? -* 便于程序员对提交历史进行追溯,了解发生了什么情况。 -* 一旦约束了commit message,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个git commit里面,这样一来整个代码改动的历史也将更加清晰。 -* 格式化的commit message才可以用于自动化输出Change log。 - - diff --git a/doc/git/git-rebase.md b/doc/git/git-rebase.md deleted file mode 100644 index 976b561..0000000 --- a/doc/git/git-rebase.md +++ /dev/null @@ -1,41 +0,0 @@ - -## git rebase 合并多条 commit 记录 - -### PS:gedit 不太好用,可以执行如下命令将编辑器修改为熟悉的 vim -```shell -git config --global core.editor "vim" -``` - -如图,我们有一些 commit 是比较凌乱的,现在希望将其整理为一条合适的 commit 提交到 远程仓库。 - -![git log](pic/p1.jpg) -我们需要将 day1 day2 add file 这三条记录合并为一条,执行 - -```shell -git rebase -i [commit] -``` - **commit** 为你要合并的最后一条提交的下一个 commit, - - 这里为 640f9a20c7bb7e9e3dfc76b089745d5c95818fed - -指令如下 -```shell -git rebase -i 640f9a20c7bb7e9e3dfc76b089745d5c95818fed -``` -![git rebase](pic/p2.jpg) - -这里将弹出 vim 编辑窗口,可以看到有此次 rebase 涉及到三个 commit id,我们选取需要 pick 的 commit id,其余的参考下面注释,添加 s 前缀,表示 commit 用于提交但是归并到 pick 的 commit 中。 - -:wq 保存,将进入下一个 vim 编辑界面 -![:wq 保存](pic/p3.jpg) - -将所有的 commit msg 编辑一个合适的归并 commit msg。 -再次执行 :wq 保存即可。 -![再次执行 :wq保存](pic/p4.jpg) -可以看到,我们将两条不希望留存的 commit 记录归并到了 -![rebase后效果](pic/p5.jpg) - - -640f9a20c7bb7e9e3dfc76b089745d5c95818fed 提交之中,并且,这样的操作并不会改变原本这个 commit id 的值。 - -PS: 具体 rebase 指令细节参考 ```git rebase --help``` \ No newline at end of file diff --git a/doc/git/git.md b/doc/git/git.md deleted file mode 100644 index 4d28abd..0000000 --- a/doc/git/git.md +++ /dev/null @@ -1,299 +0,0 @@ -# git初步使用 - -``` -git init - -//设置仓库的公共信息,这个user信息会体现在commit信息中 -git config --global user.name "yourname" -git config --global user.email "your email" - -//在远程仓库方面,有两种模式,一种ssh一种https -//https 简单方便,但每次push都要输入密码 - -git remote add origin https://github.com/yourgit/your warehouse.git - -git add --all -git commit -m "you commit info" -git push -u origin master //第一次,以后可以用git push简化 - -//ssh模式 需要先在github中添加自己的sshkey - -//首先看自己的本地目录下是否有 .ssh目录 -//没有的话 -ssh-keygen -t rsa -C "youremail@example.com" -//并将 .ssh/id_rsa.pub中的key添加到github.com中 - -git remote add origin git@github.com:yourgit/your warehouse.git - -``` - -## git alias - ~/.gitconfig配置文件可以配置当前用户全局git属性,当然每个字母了git仓库下也可以有一个.gitconfig配置当前仓库属性,属性中有一个alias属性来给git一些命令提供别名,方便使用 - -配置方法参考 ```git config --help``` - -下面给出我的配置仅供参考 - - ```shell -[user] - email = liaojia138797@163.com - name = ljx -[alias] - st = status - co = checkout - br = branch - hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short - type = cat-file -t - dump = cat-file -p - cm = commit -m - df = diff - -[core] - editor = vim - ``` - -## gitignore - -``` - 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配。 - 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。 - - 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 -``` -## git命令 - -* git rm / git rm --cached -``` -//当我们要删除文件filename, 并且工作区也不需要这个文件了 -git rm filename - -//当我们需要删除暂存区或者分支的文件,但是本地需要保留这个文件,只是不希望此文件被版本控制时 -git rm --cached filename -``` -* git branch -``` -查看本地分支:$ git branch -查看远程分支:$ git branch -r -创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 -切换分支:$ git checkout [name] -创建新分支并立即切换到新分支:$ git checkout -b [name] -删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项 -合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并 -创建远程分支(本地分支push到远程):$ git push origin [name] -删除远程分支:$ git push origin :heads/[name]  -或 $ git push origin :[name]  -``` -* git remote -```c++ -查看远程仓库:$ git remote -v -添加远程仓库:$ git remote add [name] [url] -删除远程仓库:$ git remote rm [name] -修改远程仓库:$ git remote set-url --push [name] [newUrl] -拉取远程仓库:$ git pull [remoteName] [localBranchName] -推送远程仓库:$ git push [remoteName] [localBranchName] -  -*如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下: -$git push origin test:master   // 提交本地test分支作为远程的master分支 -$git push origin test:test     // 提交本地test分支作为远程的test分支 -``` -* git merge -``` -//合并a分支到master -git checkout master -git merge a - -``` -* git tag -``` -//标签 -git tag v1.0 -``` -* git reset -``` -当将不想staging的文件add进了index,可以 -git reset HEAD -git reset --hard xxx -xxx可以是connid,可以退回到此id的版本 -hard (修改版本库,修改暂存区,修改工作区) ---hard HEAD~1 (或是commid)意为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本 -这个操作非常危险,需要谨慎执行,如果不小心丢失掉了一些commit的话,执行 -git reflog找到丢失掉的commit再次git reset --hard 回去 - -git reset --soft xxx -soft (修改版本库,保留暂存区,保留工作区) ---soft HEAD~1 意为将版本库软回退1个版本,所谓软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。 -意思是当你commit后,又执行 git reset --soft HEAD^1,你本次commit直接从repository退回到index,未commit状态,如果是退回多个版本,则多次commit回退 - -不加参数(--mixed)  -意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作 -这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。 - - - -git revert xxx -revert --- git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动。 - -https://www.jianshu.com/p/c2ec5f06cf1a - -git reset --hard : -1.替换引用的指向.引用指向新的提交ID; -2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致; -3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同. - -git reset --soft : -1.替换引用的指向.引用指向新的提交ID. -即只更改引用的指向,不该编暂存区和工作区. - -git reset --mixed 或git reset : -1.替换引用的指向.引用指向新的提交ID; -2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致; -即更改引用的指向及重置暂存区,但是工作区不变. - -实例: -git reset -仅用HEAD指向的目录树重置暂存区,工作区不受影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区.引用也未改变,因为引用重置到HEAD相当于没有重置. - -git reset HEAD -同上 - -git reset -- filename -仅将文件filename的改动撤出暂存区,暂存区中其他文件不该变.相当于git add filename的反向操作. - -git reset HEAD filename -同上 - -git reset --soft  HEAD^ -工作区和暂存区不改变,但是引用向前回退一次.当对最新提交的提交说明或提交不满意更改时,撤销最新的提交一遍重新提交. - -git reset HEAD^ -工作区不变,但是暂存区会回退到上一次提交之前,引用也会回退一次. - -git reset --mixed HEAD^ -同上 - -git reset --hard HEAD^ -彻底撤销最近的提交.引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态.自上一次以来的提交全部丢失. -``` -* git checkout -``` -git  checkout  -git checkout [--] -1.是可选项,如果省略则相当于从暂存区进行检出.和reset命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区. -2.因此重置一般用于重置暂存区(除非使用--hard,否则不重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件). -3.该命令不会改变HEAD的头指针,主要用于指定版本文件覆盖工作区中对应的文件.如果省略,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件. - -git checkout   - -1.会改变HEAD头指针.之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入"分离头指针"的状态.在"分离头指针"的状态下的提交并不能被引用关联到,从而可能丢失.所以该命令主要作用是切换分支. -2.如果省略则相当于对工作区进行状态检查. - -实例: -git checkout branch -检出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区. - -git checkout -汇总显示工作区,暂存区与HEAD的差异 - -git checkout HEAD -同上 - -git checkout -- filename -用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次执行git add filename以来(如果执行过)的本地修改 -//放弃修改回到以前的状态 -//这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改 - -git checkout branch -- filename -维持HEAD的指向不变.用branch所指向的提交中的filename替换暂存区和工作区中相应的文件.会将暂存区和工作区中的filename直接覆盖 - -git checkout -- .或者git checkout . -会取消本地所有修改,相当于用暂存区的所有文件直接覆盖本地文件. -``` -* git stash -``` -当你做某个工作时遇到紧急情况需要切换branch,又不想commit当前未完成工作来造成不必要的繁琐log时,执行 -git stash -或者执行 -git stash save "something" -当你完成紧急工作后想要继续当时停下来的开发 -在原分支 git stash save -a "messeag",网上很多很多资料都没有加 -a 这个option选项,我想他们的代码开发可能都是在原代码上进行修改吧。而对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区。 - -git stash pop可以弹回到最后一次的stash -也可以 -git stash list查看有几个stash -git stash apply stash@{}来回到你想要的stash -git stash clear清除所有缓存的stash -git stash show stash@{}来查看diff - -stash信息不回被删除,除非你弹回去了,但如果你不想要那时候的stash了。比如认为当时的改动是错误的,你可以 -git stash drop  如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。git  stash clear 是清除所有stash,整个世界一下子清净了! -git stash pop  与 git stash apply  的区别。 -当我使用git stash pop 和 git stash apply 几次以后,我发现stash  list 好像比我预计的多了几个stash。于是我便上网去了解了一下这两个命令的区别。原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id。对于有点强迫症的我来说,是容不下越来越多的陈旧stash id 仍然存在的,所以我更习惯于用git stash pop 命令。 -``` -* git log -``` -$ git log -p -2 -//我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新 -$ git log -U1 --word-diff -//上下文行数1行,以单词来看差异,单词前后以+wold+ - - 表示出来 -``` -* git commit -``` -$ git commit amend -//有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交 -``` -* git clone -``` -git clone git@github.com:ljx791863565/xxx.git -git clone https://github.com/ljx791863565/xxx.git -``` -* git diff -``` -//比较暂存区与版本库的改动 -git diff --staged - -git diff commid1 commid2 -git diff branch1 branch2 - -git diff : 对比工作区(未 git add)和暂存区(git add 之后) -git diff --cached: 对比暂存区(git add 之后)和版本库(git commit 之后) -git diff HEAD: 对比工作区(未 git add)和版本库(git commit 之后) - -``` -* git config -Git 提供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方: - - * /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system选项,读写的就是这个文件。 - * ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global选项,读写的就是这个文件。 -当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。 - -供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方: - - * /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system选项,读写的就是这个文件。 - * ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global选项,读写的就是这个文件。 -当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。 - -``` -第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录: -$ git config --global user.name "John Doe" -$ git config --global user.email johndoe@example.com -如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。 - -还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话: -$ git config --global merge.tool vimdiff -Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。当然,你也可以指定使用自己开发的工具 - -``` -## git问题解决 - -* fatal: object 906d1543778b940af481c0ca7f5ce9d3d9771140 is corrupted -``` -rm -rf .git -git init -git remote add origin git@github.com:yourgit/yourwarehouse.git -git fetch -git reset --hard origin/master -``` -[https://blog.csdn.net/dengjianqiang2011/article/details/9260435](https://blog.csdn.net/dengjianqiang2011/article/details/9260435) diff --git a/doc/git/pic/p1.jpg b/doc/git/pic/p1.jpg deleted file mode 100644 index 4fc952a..0000000 Binary files a/doc/git/pic/p1.jpg and /dev/null differ diff --git a/doc/git/pic/p2.jpg b/doc/git/pic/p2.jpg deleted file mode 100644 index c16753c..0000000 Binary files a/doc/git/pic/p2.jpg and /dev/null differ diff --git a/doc/git/pic/p3.jpg b/doc/git/pic/p3.jpg deleted file mode 100644 index 2d8080d..0000000 Binary files a/doc/git/pic/p3.jpg and /dev/null differ diff --git a/doc/git/pic/p4.jpg b/doc/git/pic/p4.jpg deleted file mode 100644 index 1eba0e6..0000000 Binary files a/doc/git/pic/p4.jpg and /dev/null differ diff --git a/doc/git/pic/p5.jpg b/doc/git/pic/p5.jpg deleted file mode 100644 index 3923ed0..0000000 Binary files a/doc/git/pic/p5.jpg and /dev/null differ diff --git a/doc/git_guide.md b/doc/git_guide.md deleted file mode 100644 index 35e26f5..0000000 --- a/doc/git_guide.md +++ /dev/null @@ -1,179 +0,0 @@ -# 1. git使用手册 - -## 1.1. 概述 - -  git是分布式版本控制系统,在多人开发中,git可以很好的管理代码的版本。 - -## 1.2. 源码托管服务器 - -  github和gitlab还有gitee(国产)都是开源的代码托管服务器,可以用来管理源码。 - -## 1.3. git安装 - -## 1.4. git分支管理 - -### 1.4.1. git创建本地分支 - -* 基于远端分支创建一个本地分支,同时新建一个对应的远端分支: - -  当主干发生较大变化,例如:原厂更新sdk时,需要新建分支,划分界限。 - -```code -$ git branch -a ----------------- -* master - remotes/origin/HEAD -> origin/master - remotes/origin/app_test - remotes/origin/master -$ git checkout -b master-sdk-202405 origin/master -------------------------------------------------- -M ipc-sdk -Branch 'master-sdk-202405' set up to track remote branch 'master' from 'origin'. -Switched to a new branch 'master-sdk-202405' -$ git branch -a ----------------- - master -* master-sdk-202405 - remotes/origin/HEAD -> origin/master - remotes/origin/app_test - remotes/origin/master -$ git push origin master-sdk-202405:sdk-202405 ----------------------------------------------- -Enumerating objects: 3, done. -Counting objects: 100% (3/3), done. -Delta compression using up to 8 threads -Compressing objects: 100% (2/2), done. -Writing objects: 100% (2/2), 250 bytes | 250.00 KiB/s, done. -Total 2 (delta 1), reused 0 (delta 0) -remote: Powered by GITEE.COM [GNK-6.4] -remote: Create a pull request for 'sdk-202405' on Gitee by visiting: -remote: https://gitee.com/shenzhen-jiuyilian/ipc-rk1106/pull/new/shenzhen-jiuyilian:sdk-202405...shenzhen-jiuyilian:master -To gitee.com:shenzhen-jiuyilian/ipc-rk1106.git - * [new branch] master-sdk-202405 -> sdk-202405 -$ git branch -a ---------------- - master -* master-sdk-202405 - remotes/origin/HEAD -> origin/master - remotes/origin/app_test - remotes/origin/master - remotes/origin/sdk-202405 -``` - -### 1.4.2. git获取远端分支 - -  当想知道远端是否新建了分支,可使用git fetch命令获取远端分支。 - -**git fetch示例:** - -```code -$ git fetch ------------- -remote: Enumerating objects: 21, done. -remote: Counting objects: 100% (21/21), done. -remote: Compressing objects: 100% (11/11), done. -remote: Total 14 (delta 8), reused 0 (delta 0), pack-reused 0 -Unpacking objects: 100% (14/14), 2.14 KiB | 156.00 KiB/s, done. -From gitee.com:shenzhen-jiuyilian/ipc-rk1106 - bf71a01..2b9b803 master -> origin/master - * [new branch] sdk-202402 -> origin/sdk-202402 // 此处发现远端新建了分支 -Fetching submodule ipc-sdk -From gitee.com:shenzhen-jiuyilian/ipc - 7c261bd..eec9fb4 master-develop -> origin/master-develop -``` - -**多个远端仓库git fetch示例:** - -```code -$ git remote -v ----------------- -dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch) -dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push) -rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch) -rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push) -$ git fetch dgiot // git fetch + 远端仓库名称 ---------------------------------------------- -remote: Enumerating objects: 9, done. -remote: Counting objects: 100% (9/9), done. -remote: Compressing objects: 100% (7/7), done. -remote: Total 9 (delta 3), reused 5 (delta 2), pack-reused 0 -Unpacking objects: 100% (9/9), 8.74 KiB | 746.00 KiB/s, done. -From gitee.com:shenzhen-jiuyilian/fastbootserver - * [new branch] sdk-202405 -> dgiot/sdk-202405 -``` - -### 1.4.3. git新增远端地址 - -  在一个git仓库中,可以同时管理多个远端地址,例如:在原厂的git仓库中,可以在仓库添加一个私人的git仓库,这样后续把修改提交到自己的仓库进行代码管理。 - -**git remote add示例:** - -命令格式: - -```code -git remote add -``` - -示例: - -```code -$ git remote add dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git ---------------------------------------------------------------------------- -$ git remote -v ----------------- -dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch) -dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push) -rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch) -rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push) -$ git fetch dgiot ------------------- -remote: Enumerating objects: 107, done. -remote: Counting objects: 100% (104/104), done. -remote: Compressing objects: 100% (45/45), done. -remote: Total 99 (delta 47), reused 89 (delta 42), pack-reused 0 -Unpacking objects: 100% (99/99), 29.55 KiB | 315.00 KiB/s, done. -From gitee.com:shenzhen-jiuyilian/fastbootserver - * [new branch] master -> dgiot/master - * [new branch] sdk-202405 -> dgiot/sdk-202405 -$ git branch -a ----------------- -* (HEAD detached at bf91101) - remotes/dgiot/master - remotes/dgiot/sdk-202405 - remotes/m/master - remotes/rk/master -$ git checkout -b sdk-202405 m/master --------------------------------------- -Switched to a new branch 'sdk-202405' -$ git branch -a ----------------- -* sdk-202405 - remotes/dgiot/master - remotes/dgiot/sdk-202405 - remotes/m/master - remotes/rk/master -$ git pull dgiot sdk-202405 ---------------------------- -From gitee.com:shenzhen-jiuyilian/fastbootserver - * branch sdk-202405 -> FETCH_HEAD -Updating bf91101..dc76264 -Fast-forward - .clang-format | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - .gitmodules | 3 +++ - README.md | 30 ++++++++++++++++++++++++++++++ - rv1106_ipc_sdk | 1 + - 4 files changed, 170 insertions(+) - create mode 100644 .clang-format - create mode 100644 .gitmodules - create mode 100755 README.md - create mode 160000 rv1106_ipc_sdk -$ git submodule update --init ------------------------------ -Submodule 'rv1106_ipc_sdk' (git@gitee.com:shenzhen-jiuyilian/ipc-rk1106.git) registered for path 'rv1106_ipc_sdk' -Cloning into '/home/xiaojiazhu/project/rkipc/ipc_20240517/project/app/component/fastboot_server/rv1106_ipc_sdk'... -Submodule path 'rv1106_ipc_sdk': checked out 'ff8da760b201d365300aed78190de8564f0d2171' -``` - -## 1.5. 存疑 - -* 不同的分支之间如何同步某个文件? diff --git a/doc/huntting_project_report.md b/doc/huntting_project_report.md deleted file mode 100644 index e8d0360..0000000 --- a/doc/huntting_project_report.md +++ /dev/null @@ -1,20 +0,0 @@ -# 1. 项目进度汇总 - -## 1.1. 软件开发进度 - -```mermaid -gantt -dateFormat YYYY-MM-DD -title 软件进度-3月 -section 3月 -6帧探RTSP推流 : done, rtsp_media, 2024-03-18,3d -SC230AI快启验证(快启报错) : crit, active, 2024-03-21,3d -6帧探视频回放 : active, 2024-03-25,3d -``` - -### 1.1.1. 总结 - -* 截至2024-3-25: -1. 6侦探协议框架含http和tcp,http协议框架开发完成,rtsp推流到手机APP完成; -2. 存在问题:rtsp推流存在卡顿问题,待优化; -3. 更换SC230AI调试快启,快启报错,需要提问题单找原厂协助; \ No newline at end of file diff --git a/doc/markdown_user_guide.md b/doc/markdown_user_guide.md deleted file mode 100644 index 4cb0f9b..0000000 --- a/doc/markdown_user_guide.md +++ /dev/null @@ -1,101 +0,0 @@ -# 1. Markdown使用手册 - -## 1.1. 概述 - -使用markdown编辑开发文档有以下好处: - -* markdown语法是一种语言,类似代码一样可以方便git管理,查看修改记录; -* 对代码显示支持良好; -* 可以进行UML类图和时序图的编辑/迭代/维护(强烈推荐); - -## 1.2. 如何使用Markdown - -此处介绍基于vscode编辑环境下使用Markdown的方法: - -* 首先安装vscode插件: - 1. Markdown All in One - 2. Markdown Preview Enhanced -* 使用Markdown语法编辑开发文档,并使用vscode预览; -* 右键使用浏览器打开并打印可生成PDF文档; - -## 1.3. 基本语法介绍 - -提供常用语法参考,直接copy模块代码进行编辑。 - -### 1.3.1. 常用命令 - -``` -Markdown All in One: Create Table of Contents 创建目录 -Markdown All in One: Update Table of Contents 更新目录 -Markdown All in One: Add/Update section numbers 添加 / 更新章节编号 -Markdown All in One: Remove section numbers 删除章节编号 -Markdown All in One: Toggle code span 触发设置代码范围(`code`) -Markdown All in One: Toggle code block 触发设置代码块(```codes```) -Markdown All in One: Print current document to HTML -Markdown All in One: Toggle math environment 触发设置数学环境 -Markdown All in One: Toggle list 触发设置列表环境 -``` - -### 1.3.2. 代码段 - -``` -/*This is your code.*/ -#include -int main() -{ - return 0; -} -``` - -### 1.3.3. UML类图语法 - -```mermaid -classDiagram - Animal <|-- Fish:继承 - Animal <|.. Zebra:实现 - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Animal{ - <> - +call() int - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - <> - -func(int, int) int - +bool is_wild - +run(void) - } -``` - -实现:一般指对抽象类的实例类 \ -继承:一般指对普通功能基类的派生/重载 - -### 1.3.4. UML时序图 - -```mermaid -sequenceDiagram -Alice->>+Jhon:Call function -Jhon->>Jhon:handle -Jhon-->>-Alice:Call return -note left of Alice:function - -Alice->>+Jhon:Call function -Jhon->>+Fancy:Call -Fancy-->>-Jhon:Call return -Jhon-->>-Alice:Call return - -Alice->>+Jhon:Call function -Jhon->>+Fancy:Call -Fancy->>-Fancy:End -Jhon-->>-Alice:Call return -``` - -### 1.3.5. 踩坑记录 - -1. 状态图不能使用default关键字作为一个状态名称,无法画图; \ No newline at end of file diff --git a/doc/sdk_build_guide.md b/doc/sdk_build_guide.md deleted file mode 100644 index cecfbd8..0000000 --- a/doc/sdk_build_guide.md +++ /dev/null @@ -1,9 +0,0 @@ -# 1. SDK构建设计文档 - -## 1.1. 概述 - -  SDK使用cmake构建,把分层解耦合的独立模块编译成静态库,应用程序根据依赖关系进行自动关联链接。 - -## 1.2. 启用/禁用功能模块 - -  根据不同的产品需求来启用/禁用功能模块,避免编译不需要的模块。 diff --git a/doc/vscode_ssh_guide.md b/doc/vscode_ssh_guide.md deleted file mode 100644 index 60b5f6b..0000000 --- a/doc/vscode_ssh_guide.md +++ /dev/null @@ -1,89 +0,0 @@ -# 1. vscode使用ssh链接虚拟机服务器 - -# 2. 前言 - -   在vscode使用ssh工具远程登录虚拟机服务器进行代码编辑。 - -| 内容 | 时间 | 作者 | 备注 | -|----|----|----|----| -| 首版 | 2024-2-26 | xjz | - | - -## 2.1. Windows系统 - -* 安装ssh - -   直接安装git工具即可支持ssh - -安装完后确认: -``` -xiaojiazhu@ubuntu:~/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell$ ssh -usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] - [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] - [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] - [-i identity_file] [-J [user@]host[:port]] [-L address] - [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] - [-Q query_option] [-R address] [-S ctl_path] [-W host:port] - [-w local_tun[:remote_tun]] destination [command] -``` - -* vscode安装ssh插件 - -   使用 Remote - SSH 插件 - -* ssh密钥配置 - -1. Windows生成密钥; -2. 把xxx.pub文件内容拷贝到虚拟机的ssh目录下的authorized_keys文件; -此处是: - -``` -xiaojiazhu@ubuntu:~/project/.ssh$ pwd -/home/xiaojiazhu/project/.ssh -xiaojiazhu@ubuntu:~/project/.ssh$ ls -authorized_keys id_rsa id_rsa.pub -``` - -这样设置后,每次登录ssh无需手动输入密码; - -3. 在Windows远程登录虚拟机: - -参考命令:ssh xiaojiazhu@192.168.1.29 - -``` -PS C:\Users\xjz\.ssh> ssh xiaojiazhu@192.168.1.29 -Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-94-generic x86_64) - - * Documentation: https://help.ubuntu.com - * Management: https://landscape.canonical.com - * Support: https://ubuntu.com/advantage - -Expanded Security Maintenance for Applications is not enabled. - -75 updates can be applied immediately. -To see these additional updates run: apt list --upgradable - -9 additional security updates can be applied with ESM Apps. -Learn more about enabling ESM Apps service at https://ubuntu.com/esm - -New release '22.04.3 LTS' available. -Run 'do-release-upgrade' to upgrade to it. - -Your Hardware Enablement Stack (HWE) is supported until April 2025. -*** System restart required *** -Last login: Sun Feb 25 17:20:04 2024 from 192.168.1.29 -xiaojiazhu@ubuntu:~$ -``` -## 2.2. vscode设置 - -配置文件参考 - -``` -Host dgiot // 自定义的主机名 - HostName 192.168.1.29 // 远端的IP地址 - User xiaojiazhu 用户名 - Port 22 - IdentityFile "C:\Users\xjz\.ssh\id_ed25519" // 本端的私钥文件路径 - ForwardAgent yes // 忽略 -``` - -多个远端IP复制即可。 diff --git a/test/application/MissionManager/tool/CMakeLists.txt b/test/application/MissionManager/tool/CMakeLists.txt deleted file mode 100644 index 8cf7113..0000000 --- a/test/application/MissionManager/tool/CMakeLists.txt +++ /dev/null @@ -1,71 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -include(${MIDDLEWARE_SOURCE_PATH}/HuntingUpgrade/build/hunting_upgrade.cmake) -include(${HAL_SOURCE_PATH}/build/hal.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${APPLICATION_SOURCE_PATH}/MissionManager/include - ${APPLICATION_SOURCE_PATH}/MissionManager/src - ${MIDDLEWARE_SOURCE_PATH}/AppManager/include - ${MIDDLEWARE_SOURCE_PATH}/MediaManager/include - ${MIDDLEWARE_SOURCE_PATH}/StateMachine/include - ${MIDDLEWARE_SOURCE_PATH}/McuManager/include - ${MIDDLEWARE_SOURCE_PATH}/StorageManager/include - ${MIDDLEWARE_SOURCE_PATH}/StorageManager/src - ${MIDDLEWARE_SOURCE_PATH}/FilesManager/include - ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/LinuxApi/include - ${UTILS_SOURCE_PATH}/UpgradeTool/include - ${UTILS_SOURCE_PATH}/KeyControl/include - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/middleware/AppManager/tool/include - ${TEST_SOURCE_PATH}/middleware/AppManager/tool/src - ${TEST_SOURCE_PATH}/middleware/MediaManager/tool/include - ${TEST_SOURCE_PATH}/middleware/MediaManager/tool/src - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET MissionManagerTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} MissionManager AppManagerTestTool MediaManagerTestTool KeyControl UpgradeTool StatusCode Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - MissionManagerTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/MissionManager/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - MissionManagerTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/MissionManager/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make MissionManagerTestTool_code_check - COMMAND make MissionManagerTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp deleted file mode 100644 index 5a17d83..0000000 --- a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MissionManagerMakePtrTest.h" -#include "ILog.h" -#include "OnMissionStateMock.h" -#include "PirTriggeredMissionStateMock.h" -#include "TestMissionStateMock.h" -#include "TopStateMock.h" -void OverrideMissionManagerMakePtrObject(std::shared_ptr &appManagerMock) -{ - std::shared_ptr impl = std::make_shared(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - test->mMissionManagerMock = appManagerMock; - } - MissionManagerMakePtr::GetInstance(&impl); -} -void CancelOverrideMissionManagerMakePtrObject(void) -{ - std::shared_ptr tmp = MissionManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mMissionManagerMock.reset(); - } - tmp.reset(); - test.reset(); - std::shared_ptr impl = std::make_shared(); - MissionManagerMakePtr::GetInstance(&impl); -} -MissionManagerMakePtrTest::MissionManagerMakePtrTest() -{ -} -MissionManagerMakePtrTest::~MissionManagerMakePtrTest() -{ - mMissionManagerMock.reset(); -} -std::shared_ptr MissionManagerMakePtrTest::CreateTopState(void) -{ - std::shared_ptr state = std::make_shared(); - return state; -} -std::shared_ptr MissionManagerMakePtrTest::CreateMissionState(const IpcMission &mission) -{ - LogInfo("MissionManagerMakePtrTest::CreateMissionState\n"); - std::shared_ptr state; - switch (mission) { - case IpcMission::PIR_TRIGGERED: - LogInfo("Create PirTriggeredMissionStateMock.\n"); - state = std::make_shared(); - break; - case IpcMission::TEST: - LogInfo("Create TestMissionStateMock.\n"); - state = std::make_shared(); - break; - case IpcMission::ON: - LogInfo("Create OnMissionStateMock.\n"); - state = std::make_shared(); - break; - - default: - LogWarning("Unknown mission.\n"); - state = std::make_shared(); - break; - } - return state; -} \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h deleted file mode 100644 index 2587029..0000000 --- a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MISSION_MANAGER_MAKE_PTR_TEST_H -#define MISSION_MANAGER_MAKE_PTR_TEST_H -#include "MissionManagerMakePtr.h" -#include "MissionManagerMock.h" -#include "MissionManagerTestTool.h" -void OverrideMissionManagerMakePtrObject(std::shared_ptr &appManagerMock); -void CancelOverrideMissionManagerMakePtrObject(void); -class MissionManagerMakePtrTest : public MissionManagerMakePtr -{ -public: - MissionManagerMakePtrTest(); - virtual ~MissionManagerMakePtrTest(); - std::shared_ptr CreateTopState(void) override; - std::shared_ptr CreateMissionState(const IpcMission &mission) override; - -public: - std::shared_ptr mMissionManagerMock; -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerMock.cpp b/test/application/MissionManager/tool/src/MissionManagerMock.cpp deleted file mode 100644 index 278c86a..0000000 --- a/test/application/MissionManager/tool/src/MissionManagerMock.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MissionManagerMock.h" -#include "ILog.h" -// const StatusCode MissionManagerTest::SetAppMonitor(std::shared_ptr &monitor) -// { -// LogInfo("MissionManagerTest::SetAppMonitor\n"); -// StatusCode code = SetAppMonitorTrace(monitor); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return MissionManager::SetAppMonitor(monitor); -// } -// return code; -// } -// const StatusCode MissionManagerTest::SetAppMonitorTrace(std::shared_ptr &monitor) -// { -// LogInfo("MissionManagerTest::SetAppMonitorTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MissionManagerTest::GetAllLedsTrace(std::map> &allLeds) -// { -// LogInfo("MissionManagerTest::GetAllLedsTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MissionManagerTest::GetAllKeysTrace(std::map> &allKeys) -// { -// LogInfo("MissionManagerTest::GetAllKeysTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerMock.h b/test/application/MissionManager/tool/src/MissionManagerMock.h deleted file mode 100644 index e9a4ee4..0000000 --- a/test/application/MissionManager/tool/src/MissionManagerMock.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MISSION_MANAGER_MOCK_H -#define MISSION_MANAGER_MOCK_H -#include "MissionManager.h" -#include "MissionManagerTestTool.h" -class MissionManagerTest : public MissionManager -{ -public: - MissionManagerTest() = default; - virtual ~MissionManagerTest() = default; - // const StatusCode SetAppMonitor(std::shared_ptr &monitor) override; - -protected: - // virtual const StatusCode SetAppMonitorTrace(std::shared_ptr &monitor); -}; -class MissionManagerMock : public MissionManagerTest -{ -public: - MissionManagerMock() = default; - virtual ~MissionManagerMock() = default; - // MOCK_METHOD1(SetAppMonitorTrace, const StatusCode(std::shared_ptr &)); -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp b/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp deleted file mode 100644 index 5c1e174..0000000 --- a/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MissionManagerTestTool.h" -#include "ILog.h" -#include "LinuxApi.h" -#include "MissionManagerMakePtrTest.h" -#include "MissionManagerMock.h" -#include "UpgradeTool.h" -void MissionManagerTestTool::Init(void) -{ - mMissionManagerMock = std::make_shared(); - std::shared_ptr mock = std::dynamic_pointer_cast(mMissionManagerMock); - OverrideMissionManagerMakePtrObject(mock); -} -void MissionManagerTestTool::UnInit(void) -{ - mMissionManagerMock.reset(); - CancelOverrideMissionManagerMakePtrObject(); -} -void MissionManagerTestTool::CreateUpgradeFile(void) -{ - fx_system("touch " SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test"); - UpgradeTool::GetInstance()->PackFile(SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test", - SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH, - "1.0.0.0", - "hunting", - "dgiot", - "app"); -} -void MissionManagerTestTool::RemoveUpgradeFile(void) -{ - fx_system("rm " SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH); -} \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/OnMissionStateMock.cpp b/test/application/MissionManager/tool/src/OnMissionStateMock.cpp deleted file mode 100644 index 8b64a89..0000000 --- a/test/application/MissionManager/tool/src/OnMissionStateMock.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "OnMissionStateMock.h" -#include "ILog.h" \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/OnMissionStateMock.h b/test/application/MissionManager/tool/src/OnMissionStateMock.h deleted file mode 100644 index 77ecbb7..0000000 --- a/test/application/MissionManager/tool/src/OnMissionStateMock.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef ON_MISSION_STATE_MOCK_H -#define ON_MISSION_STATE_MOCK_H -#include "MissionManagerTestTool.h" -#include "OnMissionState.h" -class OnMissionStateTest : public OnMissionState -{ -public: - OnMissionStateTest() = default; - virtual ~OnMissionStateTest() = default; - -protected: -}; -class OnMissionStateMock : public OnMissionStateTest -{ -public: - OnMissionStateMock() = default; - virtual ~OnMissionStateMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp deleted file mode 100644 index cc245e0..0000000 --- a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "PirTriggeredMissionStateMock.h" -#include "ILog.h" \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h deleted file mode 100644 index 29acdaf..0000000 --- a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef PIR_TRIGGERED_MISSION_STATE_MOCK_H -#define PIR_TRIGGERED_MISSION_STATE_MOCK_H -#include "MissionManagerTestTool.h" -#include "PirTriggeredMissionState.h" -class PirTriggeredMissionStateTest : public PirTriggeredMissionState -{ -public: - PirTriggeredMissionStateTest() = default; - virtual ~PirTriggeredMissionStateTest() = default; - -protected: -}; -class PirTriggeredMissionStateMock : public PirTriggeredMissionStateTest -{ -public: - PirTriggeredMissionStateMock() = default; - virtual ~PirTriggeredMissionStateMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp b/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp deleted file mode 100644 index 1ef9deb..0000000 --- a/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "SdCardHandleStateMock.h" -#include "ILog.h" -#include "StatusCode.h" -SdCardHandleStateTest::SdCardHandleStateTest() -{ -} -bool SdCardHandleStateTest::SdCardEventHandle(VStateMachineData *msg) -{ - std::shared_ptr message = std::dynamic_pointer_cast(msg->GetMessageObj()); - std::shared_ptr> data = - std::dynamic_pointer_cast>(message->mMissionData); - if (StorageEvent::SD_CARD_INSERT == data->mData) { - const std::string realSavePah = SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH; - bool directoryExist = StorageBase::CheckDirectory(realSavePah.c_str()); - if (false == directoryExist) { - LogWarning("Directory not exist.\n"); - } - } - return SdCardHandleState::SdCardEventHandle(msg); -} \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/SdCardHandleStateMock.h b/test/application/MissionManager/tool/src/SdCardHandleStateMock.h deleted file mode 100644 index 5f06a26..0000000 --- a/test/application/MissionManager/tool/src/SdCardHandleStateMock.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef SD_CARD_HANDLE_STATE_MOCK_H -#define SD_CARD_HANDLE_STATE_MOCK_H -#include "MediaMonitorMock.h" -#include "MissionManagerTestTool.h" -#include "SdCardHandleState.h" -#include "StorageBase.h" -class SdCardHandleStateTest : public SdCardHandleState, virtual public MediaMonitorTrace, public StorageBase -{ -public: - SdCardHandleStateTest(); - virtual ~SdCardHandleStateTest() = default; - -private: - bool SdCardEventHandle(VStateMachineData *msg); -}; -class SdCardHandleStateMock : public MediaMonitorMock, public SdCardHandleStateTest -{ -public: - SdCardHandleStateMock() = default; - virtual ~SdCardHandleStateMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/TestMissionStateMock.cpp b/test/application/MissionManager/tool/src/TestMissionStateMock.cpp deleted file mode 100644 index 13a58cc..0000000 --- a/test/application/MissionManager/tool/src/TestMissionStateMock.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "TestMissionStateMock.h" -#include "AppMonitorMock.h" -#include "ILog.h" -StatusCode TestMissionStateTest::GetProductInfo(AppGetProductInfo ¶m) -{ - LogInfo("TestMissionStateTest::GetProductInfo\n"); - StatusCode code = GetProductInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetProductInfo(param); - } - return code; -} -StatusCode TestMissionStateTest::GetDeviceAttr(AppGetDeviceAttr ¶m) -{ - LogInfo("TestMissionStateTest::GetDeviceAttr\n"); - StatusCode code = GetDeviceAttrTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetDeviceAttr(param); - } - return code; -} -StatusCode TestMissionStateTest::GetMediaInfo(AppGetMediaInfo ¶m) -{ - LogInfo("TestMissionStateTest::GetMediaInfo\n"); - StatusCode code = GetMediaInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetMediaInfo(param); - } - return code; -} -StatusCode TestMissionStateTest::GetSdCardInfo(AppGetSdCardInfo ¶m) -{ - LogInfo("TestMissionStateTest::GetSdCardInfo\n"); - StatusCode code = GetSdCardInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetSdCardInfo(param); - } - return code; -} -StatusCode TestMissionStateTest::GetBatteryInfo(AppGetBatteryInfo ¶m) -{ - LogInfo("TestMissionStateTest::GetBatteryInfo\n"); - StatusCode code = GetBatteryInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetBatteryInfo(param); - } - return code; -} -StatusCode TestMissionStateTest::GetParamValue(AppParamValue ¶m) -{ - LogInfo("TestMissionStateTest::GetParamValue\n"); - StatusCode code = GetParamValueTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetParamValue(param); - } - return code; -} -StatusCode TestMissionStateTest::GetCapability(AppGetCapability ¶m) -{ - LogInfo("TestMissionStateTest::GetCapability\n"); - StatusCode code = GetCapabilityTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetCapability(param); - } - return code; -} -StatusCode TestMissionStateTest::GetLockVideoStatus(LockVideoStatus ¶m) -{ - LogInfo("TestMissionStateTest::GetLockVideoStatus\n"); - StatusCode code = GetLockVideoStatusTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetLockVideoStatus(param); - } - return code; -} -StatusCode TestMissionStateTest::GetStorageInfo(std::vector ¶m) -{ - LogInfo("TestMissionStateTest::GetStorageInfo\n"); - StatusCode code = GetStorageInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetStorageInfo(param); - } - return code; -} -StatusCode TestMissionStateTest::GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) -{ - LogInfo("TestMissionStateTest::GetStorageFileList\n"); - StatusCode code = GetStorageFileListTrace(fileInfo, param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::GetStorageFileList(fileInfo, param); - } - return code; -} -StatusCode TestMissionStateTest::SetDateTime(const AppSetDateTime ¶m) -{ - LogInfo("TestMissionStateTest::SetDateTime\n"); - LogInfo("mYear = %u\n", param.mYear); - LogInfo("mMonth = %02u\n", param.mMonth); - LogInfo("mDay = %02u\n", param.mDay); - LogInfo("mHour = %02u\n", param.mHour); - LogInfo("mMinute = %02u\n", param.mMinute); - LogInfo("mSecond = %02u\n", param.mSecond); - StatusCode code = SetDateTimeTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::SetDateTime(param); - } - return code; -} -StatusCode TestMissionStateTest::SetTimeZone(const unsigned int &zone) -{ - LogInfo("TestMissionStateTest::SetTimeZone = %u\n", zone); - StatusCode code = SetTimeZoneTrace(zone); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::SetTimeZone(zone); - } - return code; -} -StatusCode TestMissionStateTest::SetParamValue(const AppSetParamValue ¶m) -{ - LogInfo("TestMissionStateTest::SetParamValue.\n"); - StatusCode code = SetParamValueTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::SetParamValue(param); - } - return code; -} -StatusCode TestMissionStateTest::EnterRecorder(void) -{ - LogInfo("TestMissionStateTest::EnterRecorder.\n"); - StatusCode code = EnterRecorderTrace(); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::EnterRecorder(); - } - return code; -} -StatusCode TestMissionStateTest::AppPlayback(const PlayBackEvent &event) -{ - LogInfo("TestMissionStateTest::AppPlayback.\n"); - StatusCode code = AppPlaybackTrace(event); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::AppPlayback(event); - } - return code; -} -StatusCode TestMissionStateTest::UploadFile(AppUploadFile ¶m) -{ - LogInfo("TestMissionStateTest::UploadFile\n"); - StatusCode code = UploadFileTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::UploadFile(param); - } - return code; -} -StatusCode TestMissionStateTest::AppClientConnected(std::shared_ptr &client) -{ - LogInfo("TestMissionStateTest::AppClientConnected\n"); - StatusCode code = AppClientConnectedTrace(client); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppMonitor::AppClientConnected(client); - } - return code; -} \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/TestMissionStateMock.h b/test/application/MissionManager/tool/src/TestMissionStateMock.h deleted file mode 100644 index 3590c2b..0000000 --- a/test/application/MissionManager/tool/src/TestMissionStateMock.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef TEST_MISSION_STATE_MOCK_H -#define TEST_MISSION_STATE_MOCK_H -#include "AppMonitorMock.h" -#include "MissionManagerTestTool.h" -#include "TestMissionState.h" -class TestMissionStateTest : public TestMissionState, virtual public AppMonitorTrace -{ -public: - TestMissionStateTest() = default; - virtual ~TestMissionStateTest() = default; - StatusCode GetProductInfo(AppGetProductInfo ¶m) override; - StatusCode GetDeviceAttr(AppGetDeviceAttr ¶m) override; - StatusCode GetMediaInfo(AppGetMediaInfo ¶m) override; - StatusCode GetSdCardInfo(AppGetSdCardInfo ¶m) override; - StatusCode GetBatteryInfo(AppGetBatteryInfo ¶m) override; - StatusCode GetParamValue(AppParamValue ¶m) override; - StatusCode GetCapability(AppGetCapability ¶m) override; - StatusCode GetLockVideoStatus(LockVideoStatus ¶m) override; - StatusCode GetStorageInfo(std::vector ¶m) override; - StatusCode GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) override; - StatusCode SetDateTime(const AppSetDateTime ¶m) override; - StatusCode SetTimeZone(const unsigned int &zone) override; - StatusCode SetParamValue(const AppSetParamValue ¶m) override; - StatusCode EnterRecorder(void) override; - StatusCode AppPlayback(const PlayBackEvent &event) override; - StatusCode UploadFile(AppUploadFile ¶m) override; - StatusCode AppClientConnected(std::shared_ptr &client) override; - -protected: -}; -class TestMissionStateMock : public AppMonitorMock, public TestMissionStateTest -{ -public: - TestMissionStateMock() = default; - virtual ~TestMissionStateMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/TopStateMock.cpp b/test/application/MissionManager/tool/src/TopStateMock.cpp deleted file mode 100644 index 183ca74..0000000 --- a/test/application/MissionManager/tool/src/TopStateMock.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "TopStateMock.h" \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/TopStateMock.h b/test/application/MissionManager/tool/src/TopStateMock.h deleted file mode 100644 index a54480f..0000000 --- a/test/application/MissionManager/tool/src/TopStateMock.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef TOP_STATE_MOCK_H -#define TOP_STATE_MOCK_H -#include "MediaMonitorMock.h" -#include "MissionManagerTestTool.h" -#include "TopState.h" -class TopStateTest : public TopState, virtual public MediaMonitorTrace -{ -public: - TopStateTest() = default; - virtual ~TopStateTest() = default; - -protected: -}; -class TopStateMock : public MediaMonitorMock, public TopStateTest -{ -public: - TopStateMock() = default; - virtual ~TopStateMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/CMakeLists.txt b/test/hal/tool/CMakeLists.txt deleted file mode 100644 index 88566d5..0000000 --- a/test/hal/tool/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -include(${HAL_SOURCE_PATH}/build/hal.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/KeyControl/include - ${UTILS_SOURCE_PATH}/LedControl/include - ${HAL_SOURCE_PATH}/src - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET HalTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} Hal KeyControl LedControl LinuxApiMock Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - HalTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/hal/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - HalTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/hal/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make HalTestTool_code_check - COMMAND make HalTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/hal/tool/src/CameraHalMock.cpp b/test/hal/tool/src/CameraHalMock.cpp deleted file mode 100644 index 2531b05..0000000 --- a/test/hal/tool/src/CameraHalMock.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "CameraHalMock.h" -#include "HalCppMock.h" -#include "ILog.h" -CameraHalTest::CameraHalTest(const CameraType &cameraType) : mCameraType(cameraType) -{ -} -void CameraHalTest::SetCameraMonitor(std::shared_ptr &monitor) -{ - LogInfo("CameraHalTest::SetCameraMonitor.\n"); - mMonitor = monitor; - SetCameraMonitorTrace(monitor); - if (nullptr != mFastBootEvent) { - monitor->ReportEvent(*(mFastBootEvent.get())); - } -} -void CameraHalTest::SetCameraMonitorTrace(std::shared_ptr &monitor) -{ - LogWarning("SetCameraMonitorTrace.\n"); -} -StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam ¶m) -{ - LogInfo("CameraHalTest::StartSingleTask\n"); - StatusCode code = StartSingleTaskTrace(param); - // if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - // return HalCpp::GetAllKeys(allKeys); - // } - return code; -} -StatusCode CameraHalTest::StartSingleTaskTrace(const CameraTaskParam ¶m) -{ - LogInfo("CameraHalTest::StartSingleTaskTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -CameraHalMock::CameraHalMock(const CameraType &cameraType) : CameraHalTest(cameraType) -{ -} -void CameraHalMock::MockReportCameraEvent(const CameraReportEvent &event) -{ - auto monitor = mMonitor.lock(); - if (mMonitor.expired()) { - LogWarning("monitor is nullptr.\n"); - mFastBootEvent = std::make_shared(event.mFileName, event.mCameraType); - return; - } - monitor->ReportEvent(event); -} \ No newline at end of file diff --git a/test/hal/tool/src/CameraHalMock.h b/test/hal/tool/src/CameraHalMock.h deleted file mode 100644 index c8144ba..0000000 --- a/test/hal/tool/src/CameraHalMock.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef CAMERA_HAL_MOCK_H -#define CAMERA_HAL_MOCK_H -#include "HalCpp.h" -#include "HalTestTool.h" -class CameraHalTest : public VCameraHal -{ -public: - CameraHalTest(const CameraType &cameraType); - virtual ~CameraHalTest() = default; - void SetCameraMonitor(std::shared_ptr &monitor) override; - StatusCode StartSingleTask(const CameraTaskParam ¶m) override; - -private: - virtual void SetCameraMonitorTrace(std::shared_ptr &monitor); - virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m); - -protected: - const CameraType mCameraType; - std::weak_ptr mMonitor; - std::shared_ptr mFastBootEvent; -}; -class CameraHalMock : public CameraHalTest -{ -public: - CameraHalMock(const CameraType &cameraType); - virtual ~CameraHalMock() = default; - void MockReportCameraEvent(const CameraReportEvent &event); - MOCK_METHOD1(SetCameraMonitorTrace, void(std::shared_ptr &)); - MOCK_METHOD1(StartSingleTaskTrace, StatusCode(const CameraTaskParam &)); -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/HalCppMock.cpp b/test/hal/tool/src/HalCppMock.cpp deleted file mode 100644 index 0c17208..0000000 --- a/test/hal/tool/src/HalCppMock.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "HalCppMock.h" -#include "ILog.h" -StatusCode HalCppTest::GetAllLeds(std::map> &allLeds) -{ - LogInfo("HalCppTest::GetAllLeds\n"); - StatusCode code = GetAllLedsTrace(allLeds); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return HalCpp::GetAllLeds(allLeds); - } - return code; -} -StatusCode HalCppTest::GetAllLedsTrace(std::map> &allLeds) -{ - LogInfo("HalCppTest::GetAllLedsTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode HalCppTest::GetAllKeys(std::map> &allKeys) -{ - LogInfo("HalCppTest::GetAllKeys\n"); - StatusCode code = GetAllKeysTrace(allKeys); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return HalCpp::GetAllKeys(allKeys); - } - return code; -} -StatusCode HalCppTest::GetAllKeysTrace(std::map> &allKeys) -{ - LogInfo("HalCppTest::GetAllKeysTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode HalCppTest::GetWifiHal(std::shared_ptr &wifi) -{ - LogInfo("HalCppTest::GetAllKeys\n"); - StatusCode code = GetWifiHalTrace(wifi); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return HalCpp::GetWifiHal(wifi); - } - return code; -} -StatusCode HalCppTest::GetCameraHal(std::map> &allCameras) -{ - LogInfo("HalCppTest::GetCameraHal\n"); - StatusCode code = GetCameraHalTrace(allCameras); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return HalCpp::GetCameraHal(allCameras); - } - return code; -} -StatusCode HalCppTest::GetWifiHalTrace(std::shared_ptr &wifi) -{ - LogInfo("HalCppTest::GetWifiHalTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode HalCppTest::GetCameraHalTrace(std::map> &allCameras) -{ - LogInfo("HalCppTest::GetCameraHalTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} \ No newline at end of file diff --git a/test/hal/tool/src/HalCppMock.h b/test/hal/tool/src/HalCppMock.h deleted file mode 100644 index 46926eb..0000000 --- a/test/hal/tool/src/HalCppMock.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef HAL_CPP_MOCK_H -#define HAL_CPP_MOCK_H -#include "HalCpp.h" -#include "HalTestTool.h" -class HalCppTest : public HalCpp -{ -public: - HalCppTest() = default; - virtual ~HalCppTest() = default; - StatusCode GetAllLeds(std::map> &allLeds) override; - StatusCode GetAllKeys(std::map> &allKeys) override; - StatusCode GetWifiHal(std::shared_ptr &wifi) override; - StatusCode GetCameraHal(std::map> &allCameras) override; - -protected: - virtual StatusCode GetAllLedsTrace(std::map> &allLeds); - virtual StatusCode GetAllKeysTrace(std::map> &allKeys); - virtual StatusCode GetWifiHalTrace(std::shared_ptr &wifi); - virtual StatusCode GetCameraHalTrace(std::map> &allCameras); -}; -class HalCppMock : public HalCppTest -{ -public: - HalCppMock() = default; - virtual ~HalCppMock() = default; - MOCK_METHOD1(GetAllLedsTrace, StatusCode(std::map> &)); - MOCK_METHOD1(GetAllKeysTrace, StatusCode(std::map> &)); - MOCK_METHOD1(GetWifiHalTrace, StatusCode(std::shared_ptr &)); - MOCK_METHOD1(GetCameraHalTrace, StatusCode(std::map> &)); -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/HalMakePtrTest.cpp b/test/hal/tool/src/HalMakePtrTest.cpp deleted file mode 100644 index 49ecd77..0000000 --- a/test/hal/tool/src/HalMakePtrTest.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "HalMakePtrTest.h" -#include "ILog.h" -void OverrideHalMakePtrObject(std::shared_ptr &halMock, std::shared_ptr &sdCardHalMock) -{ - std::shared_ptr impl = std::make_shared(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - test->mHalCppMock = halMock; - test->mSdCardHalMock = sdCardHalMock; - } - HalMakePtr::GetInstance(&impl); -} -void CancelOverrideHalMakePtrObject(void) -{ - std::shared_ptr tmp = HalMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mHalCppMock.reset(); - test->mSdCardHalMock.reset(); - } - std::shared_ptr impl = std::make_shared(); - HalMakePtr::GetInstance(&impl); -} -HalMakePtrTest::HalMakePtrTest() -{ -} -HalMakePtrTest::~HalMakePtrTest() -{ - mHalCppMock.reset(); - mSdCardHalMock.reset(); -} -StatusCode HalMakePtrTest::CreateHalSharePtr(std::shared_ptr &impl) -{ - if (mHalCppMock) { - LogInfo("CreateHalSharePtr mHalCppMock\n"); - impl = mHalCppMock; - } - else { - LogWarning("CreateMcuManager failed:mHalCppMock is nullptr.\n"); - } - return CreateStatusCode(STATUS_CODE_OK); -} -StatusCode HalMakePtrTest::CreateSdCardHal(std::shared_ptr &impl) -{ - impl = mSdCardHalMock; - return CreateStatusCode(STATUS_CODE_OK); -} -StatusCode HalMakePtrTest::CreateAllKeyHal(std::vector> &keys) -{ - if (mKeysMock.size() > 0) { - LogInfo("Create mock keys.size = %d\n", mKeysMock.size()); - keys = mKeysMock; - } - else { - HalMakePtr::CreateAllKeyHal(keys); - } - return CreateStatusCode(STATUS_CODE_OK); -} \ No newline at end of file diff --git a/test/hal/tool/src/HalMakePtrTest.h b/test/hal/tool/src/HalMakePtrTest.h deleted file mode 100644 index d2ca99d..0000000 --- a/test/hal/tool/src/HalMakePtrTest.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef HAL_MAKE_PTR_TEST_H -#define HAL_MAKE_PTR_TEST_H -#include "HalCppMock.h" -#include "HalMakePtr.h" -#include "HalTestTool.h" -#include "KeyControlMock.h" -#include "SdCardHalMock.h" -void OverrideHalMakePtrObject(std::shared_ptr &halMock, std::shared_ptr &sdCardHalMock); -void CancelOverrideHalMakePtrObject(void); -class HalMakePtrTest : public HalMakePtr -{ -public: - HalMakePtrTest(); - virtual ~HalMakePtrTest(); - StatusCode CreateHalSharePtr(std::shared_ptr &impl) override; - StatusCode CreateSdCardHal(std::shared_ptr &impl) override; - StatusCode CreateAllKeyHal(std::vector> &keys) override; - -public: - std::shared_ptr mHalCppMock; - std::shared_ptr mSdCardHalMock; - std::vector> mKeysMock; -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp deleted file mode 100644 index c1d9b6d..0000000 --- a/test/hal/tool/src/HalTestTool.cpp +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "HalTestTool.h" -#include "CameraHalMock.h" -#include "HalCppMock.h" -#include "HalMakePtrTest.h" -#include "ILog.h" -#include "KeyControl.h" -#include "KeyControlMock.h" -#include "LedControlMock.h" -#include "SdCardHalMock.h" -#include "WifiHalMock.h" -#include -void HalTestTool::Init(void) -{ - mHalMock = std::make_shared(); - mSdCardHal = std::make_shared(); - HalMockInit(mHalMock); - // TODO: 初始化mSdCardHal - std::shared_ptr halMock = std::dynamic_pointer_cast(mHalMock); - std::shared_ptr sdCardHalMock = std::dynamic_pointer_cast(mSdCardHal); - OverrideHalMakePtrObject(halMock, sdCardHalMock); -} -void HalTestTool::InitSdCardHal(std::shared_ptr &mock) -{ - std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal); - if (nullptr == sdCardHal) { - LogError("SdCardHalMock is null.\n"); - return; - } - sdCardHal->SetLinuxTest(mock); -} -void HalTestTool::UnInit(void) -{ - mHalMock.reset(); - CancelOverrideHalMakePtrObject(); - mAllKeys.clear(); - mAllLeds.clear(); -} -void HalTestTool::SetAllKeysResult(std::map> &allKeys) -{ - std::shared_ptr halMock = mHalMock; - SetAllKeysResult(halMock, allKeys); - mAllKeys = allKeys; -} -void HalTestTool::SetAllLedsResult(std::map> &allLeds) -{ - std::shared_ptr halMock = mHalMock; - SetAllLedsResult(halMock, allLeds); - mAllLeds = allLeds; -} -void HalTestTool::SetAllCamerasResult(std::map> &allCameras) -{ - std::shared_ptr halMock = mHalMock; - SetAllCamerasResult(halMock, allCameras); - mAllCameras = allCameras; -} -void HalTestTool::MockKeyClick(const std::string &keyName, const unsigned int &pressingTimeMs) -{ - std::shared_ptr key = SearchKey(keyName); - if (!key) { - LogError("Can't mock key event, key not found.\n"); - return; - } - std::shared_ptr keyMock = std::dynamic_pointer_cast(key); - if (keyMock) { - if (keyMock->MockKeyClick(pressingTimeMs)) { - DeviceManagerNotice(keyName, pressingTimeMs); - } - } - else { - LogWarning("Key mock error.\n"); - } -} -void HalTestTool::SetLedStateExpectations(const std::string &ledName, const LedState &state, - const unsigned int &aliveTimeMs, const unsigned int &blinkTimeMs) -{ - std::shared_ptr &led = SearchLed(ledName); - // if (!led) { - // LogError("Can't set led state, led not found.\n"); - // return; - // } - // std::shared_ptr ledMock = std::dynamic_pointer_cast(led); - // if (ledMock) { - // LedControlMock::SetLedStateMock(ledMock, state, aliveTimeMs, blinkTimeMs); - // } - // else { - // LogWarning("led mock error.\n"); - // } - LedControlMock::SetLedStateMock(led, state, aliveTimeMs, blinkTimeMs); -} -void HalTestTool::MockReportCameraEvent(const std::string &fileName, const CameraType &cameraType) -{ - std::shared_ptr camera = SearchCamera(cameraType); - if (!camera) { - LogError("Can't mock camera event, camera not found.\n"); - return; - } - std::shared_ptr cameraMock = std::dynamic_pointer_cast(camera); - if (cameraMock) { - CameraReportEvent report(fileName, cameraType); - cameraMock->MockReportCameraEvent(report); - } - else { - LogWarning("camera mock error.\n"); - } -} -void HalTestTool::DeviceManagerNotice(const std::string &keyName, const unsigned int &pressingTimeMs) -{ -} -void HalTestTool::KeyEventHappendOnce(std::shared_ptr &vMock, const unsigned int &pressingTimeMs) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1; - if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) { - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _)) - .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) { - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_DOWN, _)) - .Times(AtLeast(1)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } -} -std::shared_ptr HalTestTool::SearchKey(const std::string &keyName) -{ - std::shared_ptr mock; - std::map>::iterator iter; - iter = mAllKeys.find(keyName); - if (iter != mAllKeys.end()) { - mock = std::dynamic_pointer_cast(mAllKeys[keyName]); - } - else { - LogWarning("Can't found the key control.\n"); - } - return mock; -} -void HalTestTool::InitAllKeysMock(std::map> &allKeys) -{ - std::map>::iterator iter; - for (iter = allKeys.begin(); iter != allKeys.end(); ++iter) { - std::shared_ptr keyHal = iter->second; - InitKeysMock(keyHal); - } -} -void HalTestTool::InitKeysMock(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - constexpr int KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT = 0; - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)).Times(KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT); -} -void HalTestTool::HalMockInit(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - EXPECT_CALL(*mock.get(), GetAllLedsTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetAllKeysTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - std::shared_ptr wifiHal = std::make_shared(); - std::shared_ptr wifiHalMock = std::dynamic_pointer_cast(wifiHal); - EXPECT_CALL(*wifiHalMock.get(), OpenApMode()).WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_OK)))); - EXPECT_CALL(*mock.get(), GetWifiHalTrace(_)) - .WillRepeatedly(DoAll(SetArgReferee<0>(wifiHal), Return(CreateStatusCode(STATUS_CODE_OK)))); - EXPECT_CALL(*mock.get(), GetCameraHalTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); -} -void HalTestTool::SetAllKeysResult(std::shared_ptr &vMock, - std::map> &allKeys) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - // EXPECT_CALL(*mock.get(), GetAllKeysTrace(_)) - // .WillRepeatedly(DoAll(SetArgReferee<0>(allKeys), Return(CreateStatusCode(STATUS_CODE_OK)))); - // InitAllKeysMock(allKeys); - std::vector> keysMock; - std::shared_ptr impl = HalMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - for (auto &key : allKeys) { - std::shared_ptr keyMock = std::dynamic_pointer_cast(key.second); - if (keyMock) { - keysMock.push_back(keyMock); - LogInfo("Create key mock. name = %s\n", keyMock->GetKeyName().c_str()); - } - else { - LogWarning("Can't create key mock.\n"); - } - } - test->mKeysMock = keysMock; - LogInfo("Create all keys mock. size = %d\n", keysMock.size()); - } -} -void HalTestTool::SetAllLedsResult(std::shared_ptr &vMock, - std::map> &allLeds) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - /** - * @brief - * Note: The SetArgReference function cannot be used here, as it will prevent the smart pointer from being released - * within the TEST range, resulting in an error only being reported after all test cases have finished running. - * Can't use: - * EXPECT_CALL(*mock.get(), GetAllLedsTrace(_)) - * .WillRepeatedly(DoAll(SetArgReferee<0>(allLeds), Return(CreateStatusCode(STATUS_CODE_OK)))); - */ - auto getAllLeds = [=, &allLeds](std::map> &setAllLeds) { - setAllLeds = allLeds; - }; - EXPECT_CALL(*mock.get(), GetAllLedsTrace(_)) - .WillRepeatedly(DoAll(WithArgs<0>(Invoke(getAllLeds)), Return(CreateStatusCode(STATUS_CODE_OK)))); - InitAllLedsMock(allLeds); -} -std::shared_ptr &HalTestTool::SearchLed(const std::string &ledName) -{ - static std::shared_ptr noLed = std::make_shared(); - std::shared_ptr mock; - std::map>::iterator iter; - iter = mAllLeds.find(ledName); - if (iter != mAllLeds.end()) { - // mock = std::dynamic_pointer_cast(mAllLeds[ledName]); - std::shared_ptr &existLed = mAllLeds[ledName]; - return existLed; - } - LogWarning("Can't found the led control.\n"); - return noLed; -} -void HalTestTool::InitAllLedsMock(std::map> &allLeds) -{ - std::map>::iterator iter; - for (iter = allLeds.begin(); iter != allLeds.end(); ++iter) { - std::shared_ptr ledHal = iter->second; - InitLedsMock(ledHal); - } -} -void HalTestTool::InitLedsMock(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - constexpr int LED_SHOULD_NOT_BE_CONTROLED_WHEN_NOBODY_CONTROL_IT = 0; - EXPECT_CALL(*mock.get(), SetLedStateTrace(_)).Times(LED_SHOULD_NOT_BE_CONTROLED_WHEN_NOBODY_CONTROL_IT); -} -void HalTestTool::SetAllCamerasResult(std::shared_ptr &vMock, - std::map> &allCameras) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - /** - * @brief - * Note: The SetArgReference function cannot be used here, as it will prevent the smart pointer from being released - * within the TEST range, resulting in an error only being reported after all test cases have finished running. - * Can't use: - * EXPECT_CALL(*mock.get(), GetCameraHalTrace(_)) - * .WillRepeatedly(DoAll(SetArgReferee<0>(allCameras), Return(CreateStatusCode(STATUS_CODE_OK)))); - */ - auto getAllCameras = [=, &allCameras](std::map> &setAllCameras) { - setAllCameras = allCameras; - }; - EXPECT_CALL(*mock.get(), GetCameraHalTrace(_)) - .WillRepeatedly(DoAll(WithArgs<0>(Invoke(getAllCameras)), Return(CreateStatusCode(STATUS_CODE_OK)))); - InitAllCamerasMock(allCameras); -} -std::shared_ptr HalTestTool::SearchCamera(const CameraType &cameraType) -{ - std::shared_ptr mock; - std::map>::iterator iter; - iter = mAllCameras.find(cameraType); - if (iter != mAllCameras.end()) { - mock = std::dynamic_pointer_cast(mAllCameras[cameraType]); - } - else { - LogWarning("Can't found the camera control.\n"); - } - return mock; -} -void HalTestTool::InitAllCamerasMock(std::map> &allCameras) -{ - std::map>::iterator iter; - for (iter = allCameras.begin(); iter != allCameras.end(); ++iter) { - std::shared_ptr cameraHal = iter->second; - InitCamerasMock(cameraHal); - } -} -void HalTestTool::InitCamerasMock(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - constexpr int USER_SHOULD_SET_CAMERA_MONITER = 1; - // constexpr int SINGLE_TASK_DEFAULT_TIMES = 0; - EXPECT_CALL(*mock.get(), SetCameraMonitorTrace(_)).Times(USER_SHOULD_SET_CAMERA_MONITER); - EXPECT_CALL(*mock.get(), StartSingleTaskTrace(_)) - .Times(AnyNumber()) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_OK)))); -} -void HalTestTool::MockSdCardRemove(std::shared_ptr &mock) -{ - std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal); - if (nullptr == sdCardHal) { - LogError("SdCardHalMock is null.\n"); - return; - } - sdCardHal->MockSdCardRemove(mock); -} -void HalTestTool::MockSdCardInsert(std::shared_ptr &mock) -{ - std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal); - if (nullptr == sdCardHal) { - LogError("SdCardHalMock is null.\n"); - return; - } - sdCardHal->MockSdCardInsert(mock); -} -std::shared_ptr HalTestTool::MakeKeyHalTest(const std::string &keyName) -{ - std::shared_ptr key = std::make_shared(keyName); - std::dynamic_pointer_cast(key)->InitKeyControlMock(); - return key; -} -std::shared_ptr HalTestTool::MakeLedHalTest(const std::string &ledName) -{ - std::shared_ptr led = std::make_shared(ledName); - return led; -} -std::shared_ptr HalTestTool::MakeCameraHalTest(const CameraType &type) -{ - std::shared_ptr camera = std::make_shared(type); - return camera; -} \ No newline at end of file diff --git a/test/hal/tool/src/KeyControlMock.cpp b/test/hal/tool/src/KeyControlMock.cpp deleted file mode 100644 index 6bb42aa..0000000 --- a/test/hal/tool/src/KeyControlMock.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "KeyControlMock.h" -#include "ILog.h" -unsigned int KeyControlTest::GetStatusCheckPeriodMs(void) -{ - return PERIPHERAL_CHECK_PERIOD_MS; -} -KeyControlTest::KeyControlTest(const std::string &keyName) : mKeyName(keyName) -{ -} -void KeyControlTest::SetKeyMonitor(std::shared_ptr &monitor) -{ - mMonitor = monitor; -} -void KeyControlMock::CheckKeyStatus(void) -{ - KeyHalEvent pinValue = mKeyStatus; - // LogInfo("KeyContrl::CheckKeyValue pin = %d, pinValue = %d\n", mGpioPin, pinValue); - if (pinValue == KeyHalEvent::NOT_PRESSING && KeyHalEvent::NOT_PRESSING != mLastKeyStatus) { - KeyControl::KeyHalEventTrigger(KeyHalEvent::NOT_PRESSING); - } - else if (pinValue != KeyHalEvent::NOT_PRESSING && KeyHalEvent::NOT_PRESSING == mLastKeyStatus) { - KeyControl::KeyHalEventTrigger(KeyHalEvent::PRESSING); - } - else { - KeyControl::TimerKeyEventTrigger(KeyHalEvent::PRESSING); - } - mLastKeyStatus = pinValue; -} -void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) -{ - // LogInfo("KeyEventTrigger keyName = %s, event = %s, time = %u\n", keyName.c_str(), PrintKeyEvent(event), timeMs); - KeyEventTriggerTrace(keyName, event, timeMs); - auto monitor = mMonitor.lock(); - if (mMonitor.expired()) { - LogError("monitor is nullptr.\n"); - return; - } - monitor->KeyEventHappened(keyName, static_cast(event), timeMs); -} -const std::string KeyControlTest::GetKeyName(void) -{ - return mKeyName; -} -StatusCode KeyControlTest::KeyEventTriggerTrace(const std::string &keyName, const KeyEvent &event, - const unsigned int &timeMs) -{ - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -KeyControlMock::KeyControlMock(const std::string &keyName) - : KeyControlTest(keyName), mKeyStatus(KeyHalEvent::NOT_PRESSING), mLastKeyStatus(KeyHalEvent::NOT_PRESSING) -{ -} -void KeyControlMock::InitKeyControlMock(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(KeyControl::shared_from_this()); - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), _, _)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); -} -void KeyControlMock::SetKeyEvent(const KeyHalEvent &event) -{ - KeyHalEventTrigger(event); -} -bool KeyControlMock::MockKeyClick(const unsigned int &pressingTimeMs) -{ - if (mMutex.try_lock()) { - auto keyClickThread = [=](std::shared_ptr key) { - KeyEventHappendOnce(key, pressingTimeMs); - // key->KeyHalEventTrigger(KeyHalEvent::PRESSING); - mKeyStatus = KeyHalEvent::PRESSING; - std::this_thread::sleep_for(std::chrono::milliseconds(pressingTimeMs)); - // key->KeyHalEventTrigger(KeyHalEvent::NOT_PRESSING); - mKeyStatus = KeyHalEvent::NOT_PRESSING; - mMutex.unlock(); - }; - std::shared_ptr tmp = KeyControl::shared_from_this(); - std::shared_ptr key = std::dynamic_pointer_cast(tmp); - std::thread clickThread = std::thread(keyClickThread, key); - clickThread.detach(); - return true; - } - LogWarning("MockKeyClick failed, becase key was lock.\n"); - return false; -} -void KeyControlMock::KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs) -{ - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1; - constexpr int HOLD_UP_EVENT_HAPPENED_ONLY_ONCE = 1; - if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) { - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _)) - .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - return; - } - if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) { - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_DOWN, _)) - .Times(AtLeast(1)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_UP, _)) - .Times(HOLD_UP_EVENT_HAPPENED_ONLY_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - return; - } - constexpr int KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT = 0; - EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), _, _)) - .Times(KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT); -} \ No newline at end of file diff --git a/test/hal/tool/src/KeyControlMock.h b/test/hal/tool/src/KeyControlMock.h deleted file mode 100644 index 6d53c24..0000000 --- a/test/hal/tool/src/KeyControlMock.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef KEY_CONTROL_MOCK_H -#define KEY_CONTROL_MOCK_H -#include "HalTestTool.h" -#include "IHalCpp.h" -#include "KeyControl.h" -#include -class KeyControlTest : public KeyControl, public VKeyHal -{ -public: - KeyControlTest(const std::string &keyName); - virtual ~KeyControlTest() = default; - unsigned int GetStatusCheckPeriodMs(void) override; - void SetKeyMonitor(std::shared_ptr &monitor) override; - // void CheckKeyStatus(void) override; - void KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) override; - const std::string GetKeyName(void) override; - -private: - virtual StatusCode KeyEventTriggerTrace(const std::string &keyName, const KeyEvent &event, - const unsigned int &timeMs); - -private: - const std::string mKeyName; - std::weak_ptr mMonitor; -}; -class KeyControlMock : public KeyControlTest -{ -public: - KeyControlMock(const std::string &keyName); - virtual ~KeyControlMock() = default; - void CheckKeyStatus(void) override; - void InitKeyControlMock(void); - void SetKeyEvent(const KeyHalEvent &event); - bool MockKeyClick(const unsigned int &pressingTimeMs = 200); - MOCK_METHOD3(KeyEventTriggerTrace, StatusCode(const std::string &, const KeyEvent &, const unsigned int &)); - -private: - void KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs); - -private: - std::mutex mMutex; - KeyHalEvent mKeyStatus; - KeyHalEvent mLastKeyStatus; -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/LedControlMock.cpp b/test/hal/tool/src/LedControlMock.cpp deleted file mode 100644 index 13417e0..0000000 --- a/test/hal/tool/src/LedControlMock.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "LedControlMock.h" -#include "ILog.h" -LedControlTest::LedControlTest(const std::string &ledName) : mLedName(ledName) -{ - // -} -LedControlMock::LedControlMock(const std::string &ledName) : LedControlTest(ledName) -{ - // -} -StatusCode LedControlTest::SetLedState(const LedState &state) -{ - LogInfo("SetLedState mLedName = %s, state = %s\n", mLedName.c_str(), PrintLedState(state)); - StatusCode code = SetLedStateTrace(state); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - // return SetLedState(state); - } - return code; -} -StatusCode LedControlTest::SetLedStateTrace(const LedState &state) -{ - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -void LedControlMock::SetLedStateMock(std::shared_ptr &vMock, const LedState &state, - const unsigned int &aliveTimeMs, const unsigned int &blinkTimeMs) -{ - LogInfo("LedControlMock::SetLedState\n"); - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("Can't set led state, led not found.\n"); - return; - } - constexpr int SOMEBODY_CONTROL_LED = 1; - EXPECT_CALL(*mock.get(), SetLedStateTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - auto defaultExpectations = [=, &vMock]() { - // std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - // if (!mock) { - // LogError("Can't set led state, led not found.\n"); - // return; - // } - // EXPECT_CALL(*mock.get(), SetLedStateTrace(state)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - }; - if (blinkTimeMs == LED_NOT_BLINK) { - EXPECT_CALL(*mock.get(), SetLedStateTrace(state)) - .Times(SOMEBODY_CONTROL_LED) - .WillRepeatedly(DoAll(Invoke(defaultExpectations), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - else { - EXPECT_CALL(*mock.get(), SetLedStateTrace(state)) - .Times(AtLeast(SOMEBODY_CONTROL_LED)) - .WillRepeatedly(DoAll(Invoke(defaultExpectations), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } -} \ No newline at end of file diff --git a/test/hal/tool/src/LedControlMock.h b/test/hal/tool/src/LedControlMock.h deleted file mode 100644 index 2f566ac..0000000 --- a/test/hal/tool/src/LedControlMock.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef LED_CONTROL_MOCK_H -#define LED_CONTROL_MOCK_H -#include "HalTestTool.h" -#include "IHalCpp.h" -#include "LedControl.h" -class LedControlTest : public LedControl, public VLedHal -{ -public: - LedControlTest(const std::string &ledName); - virtual ~LedControlTest() = default; - StatusCode SetLedState(const LedState &state) override; - -protected: - virtual StatusCode SetLedStateTrace(const LedState &state); - -private: - const std::string mLedName; -}; -class LedControlMock : public LedControlTest -{ -public: - LedControlMock(const std::string &ledName); - virtual ~LedControlMock() = default; - MOCK_METHOD1(SetLedStateTrace, StatusCode(const LedState &)); - -public: - static void SetLedStateMock(std::shared_ptr &vMock, const LedState &state, const unsigned int &aliveTimeMs, - const unsigned int &blinkTimeMs); -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/SdCardHalMock.cpp b/test/hal/tool/src/SdCardHalMock.cpp deleted file mode 100644 index d332901..0000000 --- a/test/hal/tool/src/SdCardHalMock.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "SdCardHalMock.h" -#include "ILog.h" -extern const char *SD_CARD_DEVICE; -constexpr int FSTAT_SUCCESS = 0; -constexpr int FILE_EXIST = 0; -constexpr int FILE_NOT_EXIST = -1; -SdCardHalMock::SdCardHalMock() -{ - mDevFd = -1; -} -void SdCardHalMock::SetLinuxTest(std::shared_ptr &mock) -{ - mLinuxTest = mock; - mDevFd = mLinuxTest->GetHandleForMock(); - EXPECT_CALL(*mock.get(), fx_access(SD_CARD_DEVICE, F_OK)).WillRepeatedly(DoAll(Return(FILE_EXIST))); - EXPECT_CALL(*mock.get(), fx_open(SD_CARD_DEVICE, _)).WillRepeatedly(DoAll((Return(mDevFd)))); - auto fstatFunc = [=, &mock](int fd, struct stat *statbuf) { - statbuf->st_mode = S_IFBLK | 0600; - }; - EXPECT_CALL(*mock.get(), fx_fstat(mDevFd, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1>(Invoke(fstatFunc)), Return(FSTAT_SUCCESS))); -} -void SdCardHalMock::MockSdCardRemove(std::shared_ptr &mock) -{ - EXPECT_CALL(*mock.get(), fx_access(SD_CARD_DEVICE, F_OK)).WillRepeatedly(DoAll(Return(FILE_NOT_EXIST))); -} -void SdCardHalMock::MockSdCardInsert(std::shared_ptr &mock) -{ - EXPECT_CALL(*mock.get(), fx_access(SD_CARD_DEVICE, F_OK)).WillRepeatedly(DoAll(Return(FILE_EXIST))); -} \ No newline at end of file diff --git a/test/hal/tool/src/SdCardHalMock.h b/test/hal/tool/src/SdCardHalMock.h deleted file mode 100644 index bf7f5e2..0000000 --- a/test/hal/tool/src/SdCardHalMock.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef SD_CARD_HAL_MOCK_H -#define SD_CARD_HAL_MOCK_H -#include "IHalCpp.h" -#include "LinuxApiMock.h" -#include "SdCardHal.h" -class SdCardHalMock : public SdCardHal -{ -public: - SdCardHalMock(); - virtual ~SdCardHalMock() = default; - void SetLinuxTest(std::shared_ptr &mock); - void MockSdCardRemove(std::shared_ptr &mock); - void MockSdCardInsert(std::shared_ptr &mock); - -private: - std::shared_ptr mLinuxTest; - int mDevFd; -}; -#endif \ No newline at end of file diff --git a/test/hal/tool/src/WifiHalMock.cpp b/test/hal/tool/src/WifiHalMock.cpp deleted file mode 100644 index ff1a404..0000000 --- a/test/hal/tool/src/WifiHalMock.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "HalCppMock.h" -#include "ILog.h" \ No newline at end of file diff --git a/test/hal/tool/src/WifiHalMock.h b/test/hal/tool/src/WifiHalMock.h deleted file mode 100644 index 4781491..0000000 --- a/test/hal/tool/src/WifiHalMock.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef WIFI_HAL_MOCK_H -#define WIFI_HAL_MOCK_H -#include "HalCpp.h" -#include "HalTestTool.h" -class WifiHalTest : public VWifiHal -{ -public: - WifiHalTest() = default; - virtual ~WifiHalTest() = default; -}; -class WifiHalMock : public WifiHalTest -{ -public: - WifiHalMock() = default; - virtual ~WifiHalMock() = default; - MOCK_METHOD0(OpenApMode, StatusCode(void)); -}; -#endif \ No newline at end of file diff --git a/test/middleware/AppManager/tool/CMakeLists.txt b/test/middleware/AppManager/tool/CMakeLists.txt deleted file mode 100644 index c335eb0..0000000 --- a/test/middleware/AppManager/tool/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/Servers/include - ${UTILS_SOURCE_PATH}/TcpModule/include - ${MIDDLEWARE_SOURCE_PATH}/AppManager/src - ${MIDDLEWARE_SOURCE_PATH}/AppManager/src/Protocol/SixFrame - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET AppManagerTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} AppManager Servers Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - AppManagerTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - AppManagerTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make AppManagerTestTool_code_check - COMMAND make AppManagerTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.cpp b/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.cpp deleted file mode 100644 index ad9a7b0..0000000 --- a/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "AppManagerMakePtrTest.h" -#include "ILog.h" -void OverrideAppManagerMakePtrObject(std::shared_ptr &appManagerMock) -{ - std::shared_ptr impl = std::make_shared(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - test->mAppManagerMock = appManagerMock; - } - AppManagerMakePtr::GetInstance(&impl); -} -void CancelOverrideAppManagerMakePtrObject(void) -{ - std::shared_ptr tmp = AppManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mAppManagerMock.reset(); - } - tmp.reset(); - test.reset(); - std::shared_ptr impl = std::make_shared(); - AppManagerMakePtr::GetInstance(&impl); -} -AppManagerMakePtrTest::AppManagerMakePtrTest() -{ - // -} -AppManagerMakePtrTest::~AppManagerMakePtrTest() -{ - // - mAppManagerMock.reset(); -} -const StatusCode AppManagerMakePtrTest::CreateAppManager(std::shared_ptr &impl) -{ - if (mAppManagerMock) { - LogInfo("CreateAppManager mAppManagerMock\n"); - impl = mAppManagerMock; - } - else { - LogWarning("CreateMcuManager failed:mAppManagerMock is nullptr.\n"); - } - return CreateStatusCode(STATUS_CODE_OK); -} \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.h b/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.h deleted file mode 100644 index cf6c97a..0000000 --- a/test/middleware/AppManager/tool/src/AppManagerMakePtrTest.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef APP_MANAGER_MAKE_PTR_TEST_H -#define APP_MANAGER_MAKE_PTR_TEST_H -#include "AppManagerMock.h" -#include "AppManagerTestTool.h" -#include "SixFrameMakePtr.h" -void OverrideAppManagerMakePtrObject(std::shared_ptr &appManagerMock); -void CancelOverrideAppManagerMakePtrObject(void); -class AppManagerMakePtrTest : public SixFrameMakePtr -{ -public: - AppManagerMakePtrTest(); - virtual ~AppManagerMakePtrTest(); - const StatusCode CreateAppManager(std::shared_ptr &impl) override; - -public: - std::shared_ptr mAppManagerMock; -}; -#endif \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerMock.cpp b/test/middleware/AppManager/tool/src/AppManagerMock.cpp deleted file mode 100644 index 925214d..0000000 --- a/test/middleware/AppManager/tool/src/AppManagerMock.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "AppManagerMock.h" -#include "ILog.h" -const StatusCode AppManagerTest::SetAppMonitor(std::shared_ptr &monitor) -{ - LogInfo("AppManagerTest::SetAppMonitor\n"); - StatusCode code = SetAppMonitorTrace(monitor); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return AppManager::SetAppMonitor(monitor); - } - return code; -} -const StatusCode AppManagerTest::SetAppMonitorTrace(std::shared_ptr &monitor) -{ - LogInfo("AppManagerTest::SetAppMonitorTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerMock.h b/test/middleware/AppManager/tool/src/AppManagerMock.h deleted file mode 100644 index 0331319..0000000 --- a/test/middleware/AppManager/tool/src/AppManagerMock.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef APP_MANAGER_MOCK_H -#define APP_MANAGER_MOCK_H -#include "AppManager.h" -#include "AppManagerTestTool.h" -class AppManagerTest : public AppManager -{ -public: - AppManagerTest() = default; - virtual ~AppManagerTest() = default; - const StatusCode SetAppMonitor(std::shared_ptr &monitor) override; - -protected: - virtual const StatusCode SetAppMonitorTrace(std::shared_ptr &monitor); -}; -class AppManagerMock : public AppManagerTest -{ -public: - AppManagerMock() = default; - virtual ~AppManagerMock() = default; - MOCK_METHOD1(SetAppMonitorTrace, const StatusCode(std::shared_ptr &)); -}; -#endif \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp b/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp deleted file mode 100644 index fda61f5..0000000 --- a/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp +++ /dev/null @@ -1,372 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "AppManagerTestTool.h" -#include "AppManagerMakePtrTest.h" -#include "AppManagerMock.h" -#include "AppMonitorMock.h" -#include "ILog.h" -#include "ServersMock.h" -#include "TcpModule.h" -constexpr int ONLY_BE_CALLED_ONCE = 1; -AppManagerTestTool::AppManagerTestTool() -{ - mAppClientTool = nullptr; -} -void AppManagerTestTool::Init(void) -{ - ServersMock::GetInstance()->Init(); - mAppManagerMock = std::make_shared(); - AppManagerMockInit(mAppManagerMock); - std::shared_ptr mock = std::dynamic_pointer_cast(mAppManagerMock); - OverrideAppManagerMakePtrObject(mock); -} -void AppManagerTestTool::UnInit(void) -{ - ServersMock::GetInstance()->UnInit(); - mAppManagerMock.reset(); - mAppMonitorMock.reset(); - CancelOverrideAppManagerMakePtrObject(); - if (nullptr != mAppClientTool) { - FreeTcpClient(mAppClientTool); - } -} -void AppManagerTestTool::MockGetProductInfo(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetProductInfoTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetProductInfo(); -} -void AppManagerTestTool::MockGetDeviceAttr(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetDeviceAttrTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetDeviceAttr(); -} -void AppManagerTestTool::MockGetMediaInfo(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetMediaInfoTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetMediaInfo(); -} -void AppManagerTestTool::MockGetSdCardInfo(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetSdCardInfoTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetSdCardInfo(); -} -void AppManagerTestTool::MockGetBatteryInfo(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetBatteryInfoTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetBatteryInfo(); -} -void AppManagerTestTool::MockSetDateTime(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockSetDateTime(); -} -void AppManagerTestTool::MockSetTimeZone(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), SetTimeZoneTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockSetTimeZone(); -} -void AppManagerTestTool::MockUploadFiles(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), UploadFileTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockUploadFiles(); -} -void AppManagerTestTool::MockGetParamValue(const std::string ¶mName) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetParamValueTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetParamValue(paramName); -} -void AppManagerTestTool::MockGetParamItems(const std::string ¶mName) -{ - // std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - // if (mock) { - // EXPECT_CALL(*mock.get(), GetParamValueTrace(_)) // TODO: - // .Times(ONLY_BE_CALLED_ONCE) - // .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // } - ServersMock::GetInstance()->MockGetParamItems(paramName); -} -void AppManagerTestTool::MockGetCapability(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetCapabilityTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetCapability(); -} -void AppManagerTestTool::MockGetLockVideoStatus(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetLockVideoStatusTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetLockVideoStatus(); -} -void AppManagerTestTool::MockGetStorageInfo(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetStorageInfoTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetStorageInfo(); -} -void AppManagerTestTool::MockGetStorageFileList(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetStorageFileListTrace(_, _)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockGetStorageFileList(); -} -void AppManagerTestTool::MockSetParamValue(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), SetParamValueTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockSetParamValue(); -} -void AppManagerTestTool::MockEnterRecorder(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), EnterRecorderTrace()) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockEnterRecorder(); -} -void AppManagerTestTool::MockAppPlayback(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), AppPlaybackTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - ServersMock::GetInstance()->MockAppPlayback(); -} -void AppManagerTestTool::MockMonitorSetFileList(std::vector &files) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetStorageFileListTrace(_, _)) - .WillRepeatedly(DoAll(SetArgReferee<1>(files), Return(CreateStatusCode(STATUS_CODE_OK)))); - } - else { - LogError("MockMonitorSetFileList failed, mAppMonitorMock isn't mock object.\n"); - } -} -void AppManagerTestTool::MockAppClientConnect(void) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(mAppMonitorMock); - if (mock) { - auto appClientConnected = [=](std::shared_ptr &cliient) { - LogInfo("appClientConnected.\n"); - mAppClient = cliient; - }; - EXPECT_CALL(*mock.get(), AppClientConnectedTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce( - DoAll(WithArgs<0>(Invoke(appClientConnected)), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } - auto readFunc = [](const void *data, const ssize_t len, const void *context) -> void { - LogInfo("read data: %s", (char *)data); - }; - auto closedFunc = [](const void *object) -> void { - LogInfo("tcp client closed.\n"); - }; - TcpClientParam param = { - .mIp = APP_MANAGER_DEVICE_IP, - .mPort = APP_MANAGER_TCP_SERVER_PORT, - .mReadFunc = readFunc, - .mClosedFunc = closedFunc, - }; - mAppClientTool = CreateTcpClient(param); - if (nullptr == mAppClientTool) { - LogError("CreateTcpClient failed.\n"); - } -} -void AppManagerTestTool::MockSetRecordingStatus(const RecordingStatus &status) -{ - if (mAppClient) { - mAppClient->SetRecordingStatus(status); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::MockSetMicrophoneStatus(const MicrophoneStatus &status) -{ - if (mAppClient) { - mAppClient->SetMicrophoneStatus(status); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::MockSetBatteryStatus(const BatteryStatus &status, const int &batteryCapacity) -{ - if (mAppClient) { - mAppClient->SetBatteryStatus(status, batteryCapacity); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::MockSetSdCardStatus(const SdCardStatus &status) -{ - if (mAppClient) { - mAppClient->SetSdCardStatus(status); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::MockDeletedFileMessage(const std::string &file, const StorageFileType &type) -{ - if (mAppClient) { - mAppClient->DeletedFileMessage(file, type); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::MockCreatedFileMessage(const std::string &file, const StorageFileType &type) -{ - if (mAppClient) { - mAppClient->CreatedFileMessage(file, type); - return; - } - LogWarning("mAppClient is nullptr.\n"); -} -void AppManagerTestTool::AppManagerMockInit(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - auto getAppMonitor = [=](std::shared_ptr &monitor) { - LogInfo("mAppMonitorMock get.\n"); - mAppMonitorMock = monitor; - AppManagerTestTool::AppMonitorInit(mAppMonitorMock); - }; - EXPECT_CALL(*mock.get(), SetAppMonitorTrace(_)) - .Times(testing::Between(0, 1)) - .WillOnce(DoAll(WithArgs<0>(Invoke(getAppMonitor)), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); -} -std::shared_ptr AppManagerTestTool::MakeMonitorMock(void) -{ - class Monitor : public AppMonitorMock, public AppMonitorTest - { - public: - Monitor() = default; - virtual ~Monitor() = default; - }; - std::shared_ptr monitor = std::make_shared(); - return monitor; -} -void AppManagerTestTool::AppMonitorInit(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (mock) { - EXPECT_CALL(*mock.get(), GetProductInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetDeviceAttrTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetMediaInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetSdCardInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetParamValueTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetCapabilityTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetLockVideoStatusTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetStorageInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetStorageFileListTrace(_, _)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetBatteryInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), SetTimeZoneTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), SetParamValueTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), EnterRecorderTrace()) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), AppPlaybackTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), UploadFileTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), GetThumbnailTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*mock.get(), AppClientConnectedTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } -} \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppMonitorMock.cpp b/test/middleware/AppManager/tool/src/AppMonitorMock.cpp deleted file mode 100644 index 7dacab5..0000000 --- a/test/middleware/AppManager/tool/src/AppMonitorMock.cpp +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "AppMonitorMock.h" -#include "ILog.h" -StatusCode AppMonitorTest::GetProductInfo(AppGetProductInfo ¶m) -{ - LogInfo("AppMonitorTest::GetProductInfo\n"); - StatusCode code = GetProductInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetProductInfo(param); - } - return code; -} -StatusCode AppMonitorTrace::GetProductInfoTrace(AppGetProductInfo ¶m) -{ - LogInfo("AppMonitorTrace::GetProductInfoTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetDeviceAttr(AppGetDeviceAttr ¶m) -{ - LogInfo("AppMonitorTest::GetDeviceAttr\n"); - StatusCode code = GetDeviceAttrTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetDeviceAttr(param); - } - return code; -} -StatusCode AppMonitorTrace::GetDeviceAttrTrace(AppGetDeviceAttr ¶m) -{ - LogInfo("AppMonitorTrace::GetDeviceAttrTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetMediaInfo(AppGetMediaInfo ¶m) -{ - LogInfo("AppMonitorTest::GetMediaInfo\n"); - StatusCode code = GetMediaInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetMediaInfo(param); - } - return code; -} -StatusCode AppMonitorTrace::GetMediaInfoTrace(AppGetMediaInfo ¶m) -{ - LogInfo("AppMonitorTrace::GetMediaInfoTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetSdCardInfo(AppGetSdCardInfo ¶m) -{ - LogInfo("AppMonitorTest::GetSdCardInfo\n"); - StatusCode code = GetSdCardInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetSdCardInfo(param); - } - return code; -} -StatusCode AppMonitorTrace::GetSdCardInfoTrace(AppGetSdCardInfo ¶m) -{ - LogInfo("AppMonitorTrace::GetSdCardInfoTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetBatteryInfo(AppGetBatteryInfo ¶m) -{ - LogInfo("AppMonitorTest::GetBatteryInfo\n"); - StatusCode code = GetBatteryInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetBatteryInfo(param); - } - return code; -} -StatusCode AppMonitorTrace::GetBatteryInfoTrace(AppGetBatteryInfo ¶m) -{ - LogInfo("AppMonitorTrace::GetBatteryInfoTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetParamValue(AppParamValue ¶m) -{ - LogInfo("AppMonitorTest::GetParamValue\n"); - StatusCode code = GetParamValueTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetParamValue(param); - } - return code; -} -StatusCode AppMonitorTrace::GetParamValueTrace(AppParamValue ¶m) -{ - LogInfo("AppMonitorTrace::GetParamValueTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetCapability(AppGetCapability ¶m) -{ - LogInfo("AppMonitorTest::GetCapability\n"); - StatusCode code = GetCapabilityTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetCapability(param); - } - return code; -} -StatusCode AppMonitorTrace::GetCapabilityTrace(AppGetCapability ¶m) -{ - LogInfo("AppMonitorTrace::GetCapabilityTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetLockVideoStatus(LockVideoStatus ¶m) -{ - LogInfo("AppMonitorTest::GetLockVideoStatus\n"); - StatusCode code = GetLockVideoStatusTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetLockVideoStatus(param); - } - return code; -} -StatusCode AppMonitorTrace::GetLockVideoStatusTrace(LockVideoStatus ¶m) -{ - LogInfo("AppMonitorTrace::GetLockVideoStatusTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetStorageInfo(std::vector ¶m) -{ - LogInfo("AppMonitorTest::GetStorageInfo\n"); - StatusCode code = GetStorageInfoTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetStorageInfo(param); - } - return code; -} -StatusCode AppMonitorTrace::GetStorageInfoTrace(std::vector ¶m) -{ - LogInfo("AppMonitorTrace::GetStorageInfoTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) -{ - LogInfo("AppMonitorTest::GetStorageFileList\n"); - StatusCode code = GetStorageFileListTrace(fileInfo, param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetStorageFileList(fileInfo, param); - } - return code; -} -StatusCode AppMonitorTrace::GetStorageFileListTrace(const AppGetFileInfo &fileInfo, std::vector ¶m) -{ - LogInfo("AppMonitorTrace::GetStorageFileListTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::SetDateTime(const AppSetDateTime ¶m) -{ - LogInfo("AppMonitorTest::SetDateTime\n"); - LogInfo("mYear = %u\n", param.mYear); - LogInfo("mMonth = %02u\n", param.mMonth); - LogInfo("mDay = %02u\n", param.mDay); - LogInfo("mHour = %02u\n", param.mHour); - LogInfo("mMinute = %02u\n", param.mMinute); - LogInfo("mSecond = %02u\n", param.mSecond); - StatusCode code = SetDateTimeTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::SetDateTime(param); - } - return code; -} -StatusCode AppMonitorTrace::SetDateTimeTrace(const AppSetDateTime ¶m) -{ - LogInfo("AppMonitorTrace::SetDateTimeTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::SetTimeZone(const unsigned int &zone) -{ - LogInfo("AppMonitorTest::SetTimeZone = %u\n", zone); - StatusCode code = SetTimeZoneTrace(zone); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::SetTimeZone(zone); - } - return code; -} -StatusCode AppMonitorTrace::SetTimeZoneTrace(const unsigned int &zone) -{ - LogInfo("AppMonitorTrace::SetTimeZoneTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::SetParamValue(const AppSetParamValue ¶m) -{ - LogInfo("AppMonitorTest::SetParamValue\n"); - StatusCode code = SetParamValueTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::SetParamValue(param); - } - return code; -} -StatusCode AppMonitorTrace::SetParamValueTrace(const AppSetParamValue ¶m) -{ - LogInfo("AppMonitorTrace::SetParamValueTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::EnterRecorder(void) -{ - LogInfo("AppMonitorTest::EnterRecorder\n"); - StatusCode code = EnterRecorderTrace(); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::EnterRecorder(); - } - return code; -} -StatusCode AppMonitorTrace::EnterRecorderTrace(void) -{ - LogInfo("AppMonitorTrace::EnterRecorderTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::AppPlayback(const PlayBackEvent &event) -{ - LogInfo("AppMonitorTest::AppPlayback\n"); - StatusCode code = AppPlaybackTrace(event); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::AppPlayback(event); - } - return code; -} -StatusCode AppMonitorTrace::AppPlaybackTrace(const PlayBackEvent &event) -{ - LogInfo("AppMonitorTrace::AppPlaybackTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::UploadFile(AppUploadFile ¶m) -{ - LogInfo("AppMonitorTest::UploadFile\n"); - StatusCode code = UploadFileTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::UploadFile(param); - } - return code; -} -StatusCode AppMonitorTrace::UploadFileTrace(AppUploadFile ¶m) -{ - LogInfo("AppMonitorTrace::UploadFileTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::GetThumbnail(AppGetThumbnail ¶m) -{ - LogInfo("AppMonitorTest::GetThumbnail\n"); - StatusCode code = GetThumbnailTrace(param); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::GetThumbnail(param); - } - return code; -} -StatusCode AppMonitorTrace::GetThumbnailTrace(AppGetThumbnail ¶m) -{ - LogInfo("AppMonitorTrace::UploadFileTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -StatusCode AppMonitorTest::AppClientConnected(std::shared_ptr &client) -{ - LogInfo("AppMonitorTest::AppClientConnected\n"); - StatusCode code = AppClientConnectedTrace(client); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return VAppMonitor::AppClientConnected(client); - } - return code; -} -StatusCode AppMonitorTrace::AppClientConnectedTrace(std::shared_ptr &client) -{ - LogInfo("AppMonitorTrace::AppClientConnected\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppMonitorMock.h b/test/middleware/AppManager/tool/src/AppMonitorMock.h deleted file mode 100644 index 0e39285..0000000 --- a/test/middleware/AppManager/tool/src/AppMonitorMock.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef APP_MONITOR_MOCK_H -#define APP_MONITOR_MOCK_H -#include "GtestUsing.h" -#include "IAppManager.h" -class AppMonitorTrace -{ -public: - AppMonitorTrace() = default; - virtual ~AppMonitorTrace() = default; - -protected: - virtual StatusCode GetProductInfoTrace(AppGetProductInfo ¶m); - virtual StatusCode GetDeviceAttrTrace(AppGetDeviceAttr ¶m); - virtual StatusCode GetMediaInfoTrace(AppGetMediaInfo ¶m); - virtual StatusCode GetSdCardInfoTrace(AppGetSdCardInfo ¶m); - virtual StatusCode GetBatteryInfoTrace(AppGetBatteryInfo ¶m); - virtual StatusCode GetParamValueTrace(AppParamValue ¶m); - virtual StatusCode GetCapabilityTrace(AppGetCapability ¶m); - virtual StatusCode GetLockVideoStatusTrace(LockVideoStatus ¶m); - virtual StatusCode GetStorageInfoTrace(std::vector ¶m); - virtual StatusCode GetStorageFileListTrace(const AppGetFileInfo &fileInfo, std::vector ¶m); - virtual StatusCode SetDateTimeTrace(const AppSetDateTime ¶m); - virtual StatusCode SetTimeZoneTrace(const unsigned int &zone); - virtual StatusCode SetParamValueTrace(const AppSetParamValue ¶m); - virtual StatusCode EnterRecorderTrace(void); - virtual StatusCode AppPlaybackTrace(const PlayBackEvent &event); - virtual StatusCode UploadFileTrace(AppUploadFile ¶m); - virtual StatusCode GetThumbnailTrace(AppGetThumbnail ¶m); - virtual StatusCode AppClientConnectedTrace(std::shared_ptr &client); -}; -class AppMonitorTest : public VAppMonitor, virtual public AppMonitorTrace -{ -public: - AppMonitorTest() = default; - virtual ~AppMonitorTest() = default; - StatusCode GetProductInfo(AppGetProductInfo ¶m) override; - StatusCode GetDeviceAttr(AppGetDeviceAttr ¶m) override; - StatusCode GetMediaInfo(AppGetMediaInfo ¶m) override; - StatusCode GetSdCardInfo(AppGetSdCardInfo ¶m) override; - StatusCode GetBatteryInfo(AppGetBatteryInfo ¶m) override; - StatusCode GetParamValue(AppParamValue ¶m) override; - StatusCode GetCapability(AppGetCapability ¶m) override; - StatusCode GetLockVideoStatus(LockVideoStatus ¶m) override; - StatusCode GetStorageInfo(std::vector ¶m) override; - StatusCode GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) override; - StatusCode SetDateTime(const AppSetDateTime ¶m) override; - StatusCode SetTimeZone(const unsigned int &zone) override; - StatusCode SetParamValue(const AppSetParamValue ¶m) override; - StatusCode EnterRecorder(void) override; - StatusCode AppPlayback(const PlayBackEvent &event) override; - StatusCode UploadFile(AppUploadFile ¶m) override; - StatusCode GetThumbnail(AppGetThumbnail ¶m) override; - StatusCode AppClientConnected(std::shared_ptr &client) override; -}; -class AppMonitorMock : virtual public AppMonitorTrace -{ -public: - AppMonitorMock() = default; - virtual ~AppMonitorMock() = default; - MOCK_METHOD1(GetProductInfoTrace, StatusCode(AppGetProductInfo &)); - MOCK_METHOD1(GetDeviceAttrTrace, StatusCode(AppGetDeviceAttr &)); - MOCK_METHOD1(GetMediaInfoTrace, StatusCode(AppGetMediaInfo &)); - MOCK_METHOD1(GetSdCardInfoTrace, StatusCode(AppGetSdCardInfo &)); - MOCK_METHOD1(GetBatteryInfoTrace, StatusCode(AppGetBatteryInfo &)); - MOCK_METHOD1(GetParamValueTrace, StatusCode(AppParamValue &)); - MOCK_METHOD1(GetCapabilityTrace, StatusCode(AppGetCapability &)); - MOCK_METHOD1(GetLockVideoStatusTrace, StatusCode(LockVideoStatus &)); - MOCK_METHOD1(GetStorageInfoTrace, StatusCode(std::vector &)); - MOCK_METHOD2(GetStorageFileListTrace, StatusCode(const AppGetFileInfo &, std::vector &)); - MOCK_METHOD1(SetDateTimeTrace, StatusCode(const AppSetDateTime &)); - MOCK_METHOD1(SetTimeZoneTrace, StatusCode(const unsigned int &)); - MOCK_METHOD1(SetParamValueTrace, StatusCode(const AppSetParamValue &)); - MOCK_METHOD0(EnterRecorderTrace, StatusCode(void)); - MOCK_METHOD1(AppPlaybackTrace, StatusCode(const PlayBackEvent &)); - MOCK_METHOD1(UploadFileTrace, StatusCode(AppUploadFile &)); - MOCK_METHOD1(GetThumbnailTrace, StatusCode(AppGetThumbnail &)); - MOCK_METHOD1(AppClientConnectedTrace, StatusCode(std::shared_ptr &)); -}; -#endif \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/ServersMock.cpp b/test/middleware/AppManager/tool/src/ServersMock.cpp deleted file mode 100644 index d703e15..0000000 --- a/test/middleware/AppManager/tool/src/ServersMock.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "ServersMock.h" -#include "ILog.h" -#include "servers.h" -#include -extern const char *APP_GET_PRODUCT_INFO; -extern const char *APP_GET_DEVICE_ATTR; -extern const char *APP_GET_MEDIA_INFO; -extern const char *APP_GET_SD_CARD_INFO; -extern const char *APP_GET_BATTERY_INFO; -extern const char *APP_GET_PARAM_VALUE; -extern const char *APP_GET_PARAM_ITEMS; -extern const char *APP_GET_CAPABILITY; -extern const char *APP_GET_LOCK_VIDEO_STATUS; -extern const char *APP_GET_STORAGE_INFO; -extern const char *APP_GET_FILE_LIST; -extern const char *APP_SET_DATE_TIME; -extern const char *APP_SET_TIME_ZONE; -extern const char *APP_SET_PARAM_VALUE; -extern const char *APP_ENTER_RECORDER; -extern const char *APP_PLAYBACK; -extern const char *APP_UPLOAD_FILE; -std::shared_ptr &ServersMock::GetInstance(std::shared_ptr *impl) -{ - static auto instance = std::make_shared(); - if (impl) { - if (instance.use_count() == 1) { - LogInfo("Instance changed succeed.\n"); - instance = *impl; - } - else { - LogError("Can't changing the instance becase of using by some one.\n"); - } - } - return instance; -} -ServersMock::ServersMock() -{ - mServerUrl = APP_MANAGER_DEVICE_IP ":" + std::to_string(APP_MANAGER_HTTP_SERVER_PORT); -} -void ServersMock::Init(void) -{ - ServerParam init = { - .logFlag = LOG_FLAG_ENABLE, - .sslVerifyFlag = SSL_VERIFY_DISABLE, - }; - ServersInit(init); -} -void ServersMock::UnInit(void) -{ -} -void ServersMock::MockGetProductInfo(void) -{ - LogInfo("APP_GET_PRODUCT_INFO test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_PRODUCT_INFO; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetDeviceAttr(void) -{ - LogInfo("APP_GET_DEVICE_ATTR test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_DEVICE_ATTR; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetMediaInfo(void) -{ - LogInfo("APP_GET_MEDIA_INFO test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_MEDIA_INFO; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetSdCardInfo(void) -{ - LogInfo("APP_GET_SD_CARD_INFO test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_SD_CARD_INFO; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetBatteryInfo(void) -{ - LogInfo("APP_GET_BATTERY_INFO test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_BATTERY_INFO; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetParamValue(const std::string ¶mName) -{ - LogInfo("APP_GET_PARAM_VALUE test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_PARAM_VALUE + "?param=" + paramName; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetParamItems(const std::string ¶mName) -{ - LogInfo("APP_GET_PARAM_ITEMS test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_PARAM_ITEMS + "?param=" + paramName; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetCapability(void) -{ - LogInfo("APP_GET_CAPABILITY test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_CAPABILITY; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetLockVideoStatus(void) -{ - LogInfo("APP_GET_LOCK_VIDEO_STATUS test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_LOCK_VIDEO_STATUS; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetStorageInfo(void) -{ - LogInfo("APP_GET_STORAGE_INFO test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_STORAGE_INFO; - MockHttpGet(mockRequest); -} -void ServersMock::MockGetStorageFileList(void) -{ - LogInfo("APP_GET_FILE_LIST test start.\n"); - std::string mockRequest = mServerUrl + APP_GET_FILE_LIST + "?folder=loop&start=0&end=99"; - MockHttpGet(mockRequest); -} -void ServersMock::MockSetDateTime(void) -{ - LogInfo("APP_SET_DATE_TIME test start.\n"); - std::string mockRequest = mServerUrl + APP_SET_DATE_TIME + "?date=20240101010101"; - MockHttpGet(mockRequest); -} -void ServersMock::MockSetTimeZone(void) -{ - LogInfo("APP_SET_TIME_ZONE test start.\n"); - std::string mockRequest = mServerUrl + APP_SET_TIME_ZONE + "?timezone=8"; - MockHttpGet(mockRequest); -} -void ServersMock::MockSetParamValue(void) -{ - LogInfo("APP_SET_PARAM_VALUE test start.\n"); - std::string mockRequest = mServerUrl + APP_SET_PARAM_VALUE + "?param=switchcam&value=1"; - MockHttpGet(mockRequest); -} -void ServersMock::MockEnterRecorder(void) -{ - LogInfo("APP_ENTER_RECORDER test start.\n"); - std::string mockRequest = mServerUrl + APP_ENTER_RECORDER + "?timezone=8"; // TODO: - MockHttpGet(mockRequest); -} -void ServersMock::MockAppPlayback(void) -{ - LogInfo("APP_PLAYBACK test start.\n"); - std::string mockRequest = mServerUrl + APP_PLAYBACK + "?param=enter"; - MockHttpGet(mockRequest); -} -#ifndef PLATFORM_PATH - #error Add the code in your linux.toolchain.cmake : add_definitions(-DPLATFORM_PATH="${PLATFORM_PATH}") -#endif -void ServersMock::MockUploadFiles(void) -{ - LogInfo("servers test start.\n"); - std::string mockRequest = mServerUrl + APP_UPLOAD_FILE; - ServerHttp *http = NewServersHttp(mockRequest.c_str()); - if (http) { - http->filePath = (char *)PLATFORM_PATH "/output_files/test/bin/AppManagerTest"; - LogInfo("http post file:%s\n", http->filePath); - HttpPostFile(http); - if (http->reply) { - char *replyStr = (char *)malloc(http->replyLength + 1); - memset(replyStr, 0, http->replyLength + 1); - memcpy(replyStr, http->reply, http->replyLength); - LogInfo("HttpPost response :\n%s\n", replyStr); - free(replyStr); - } - DeleteServersHttp(http); - } -} -void ServersMock::MockHttpGet(const std::string &mockRequest) -{ - ServerHttp *http = NewServersHttp(mockRequest.c_str()); - if (http) { - HttpGet(http); - if (http->reply) { - char *replyStr = (char *)malloc(http->replyLength + 1); - memset(replyStr, 0, http->replyLength + 1); - memcpy(replyStr, http->reply, http->replyLength); - LogInfo("HttpGet response :\n%s\n", replyStr); - free(replyStr); - } - DeleteServersHttp(http); - } - else { - LogWarning("http is null.\n"); - } -} \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/ServersMock.h b/test/middleware/AppManager/tool/src/ServersMock.h deleted file mode 100644 index 112a3fa..0000000 --- a/test/middleware/AppManager/tool/src/ServersMock.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef SERVERS_MOCK_H -#define SERVERS_MOCK_H -#include "servers.h" -#include -class ServersMock -{ -public: - ServersMock(); - virtual ~ServersMock() = default; - static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); - virtual void Init(void); - virtual void UnInit(void); - virtual void MockGetProductInfo(void); - virtual void MockGetDeviceAttr(void); - virtual void MockGetMediaInfo(void); - virtual void MockGetSdCardInfo(void); - virtual void MockGetBatteryInfo(void); - virtual void MockGetParamValue(const std::string ¶mName); - virtual void MockGetParamItems(const std::string ¶mName); - virtual void MockGetCapability(void); - virtual void MockGetLockVideoStatus(void); - virtual void MockGetStorageInfo(void); - virtual void MockGetStorageFileList(void); - virtual void MockSetDateTime(void); - virtual void MockSetTimeZone(void); - virtual void MockSetParamValue(void); - virtual void MockEnterRecorder(void); - virtual void MockAppPlayback(void); - virtual void MockUploadFiles(void); - -private: - void MockHttpGet(const std::string &mockRequest); - -private: - std::string mServerUrl; -}; -#endif \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/CMakeLists.txt b/test/middleware/DeviceManager/tool/CMakeLists.txt deleted file mode 100644 index 73bd6c6..0000000 --- a/test/middleware/DeviceManager/tool/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/LedControl/include - # ${UTILS_SOURCE_PATH}/McuProtocol/include - ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/src - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET DeviceManagerTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} LedControl Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - DeviceManagerTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - DeviceManagerTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make DeviceManagerTestTool_code_check - COMMAND make DeviceManagerTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.cpp b/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.cpp deleted file mode 100644 index 0391b04..0000000 --- a/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "DeviceManagerMakePtrTest.h" -#include "ILog.h" -void OverrideDeviceMakePtrObject(std::shared_ptr &halMock) -{ - std::shared_ptr impl = std::make_shared(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - test->mDeviceManagerMock = halMock; - } - DeviceManagerMakePtr::GetInstance(&impl); -} -void CancelOverrideDeviceMakePtrObject(void) -{ - std::shared_ptr tmp = DeviceManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mDeviceManagerMock.reset(); - } - test.reset(); - tmp.reset(); - std::shared_ptr impl = std::make_shared(); - DeviceManagerMakePtr::GetInstance(&impl); -} -DeviceManagerMakePtrTest::DeviceManagerMakePtrTest() -{ - // -} -DeviceManagerMakePtrTest::~DeviceManagerMakePtrTest() -{ - // - mDeviceManagerMock.reset(); -} -const StatusCode DeviceManagerMakePtrTest::CreateDeviceManager(std::shared_ptr &impl) -{ - if (mDeviceManagerMock) { - LogInfo("CreateDeviceManager mDeviceManagerMock\n"); - impl = mDeviceManagerMock; - } - else { - LogWarning("CreateMcuManager failed:mDeviceManagerMock is nullptr.\n"); - } - return CreateStatusCode(STATUS_CODE_OK); -} \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.h b/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.h deleted file mode 100644 index c35ccc6..0000000 --- a/test/middleware/DeviceManager/tool/src/DeviceManagerMakePtrTest.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef DEVICE_MANAGER_MAKE_PTR_TEST_H -#define DEVICE_MANAGER_MAKE_PTR_TEST_H -#include "DeviceManagerMakePtr.h" -#include "DeviceManagerTestTool.h" -void OverrideDeviceMakePtrObject(std::shared_ptr &halMock); -void CancelOverrideDeviceMakePtrObject(void); -class DeviceManagerMakePtrTest : public DeviceManagerMakePtr -{ -public: - DeviceManagerMakePtrTest(); - virtual ~DeviceManagerMakePtrTest(); - const StatusCode CreateDeviceManager(std::shared_ptr &impl) override; - -public: - std::shared_ptr mDeviceManagerMock; -}; -#endif \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/src/DeviceManagerTestTool.cpp b/test/middleware/DeviceManager/tool/src/DeviceManagerTestTool.cpp deleted file mode 100644 index 2895e1f..0000000 --- a/test/middleware/DeviceManager/tool/src/DeviceManagerTestTool.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "DeviceManagerTestTool.h" -#include "DeviceManagerMakePtrTest.h" -#include "ILog.h" -#include "KeyControl.h" -#include "SingleControlMock.h" -const StatusCode DeviceManagerTool::SetAllKeysMonitor(std::shared_ptr &monitor) -{ - LogInfo("DeviceManagerTool::SetAllKeysMonitor\n"); - StatusCode code = SetAllKeysMonitorTrace(monitor); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return DeviceManager::SetAllKeysMonitor(monitor); - } - return code; -} -void DeviceManagerTestTool::Init(void) -{ - mDeviceManagerMock = std::make_shared(); - DeviceManagerMockInit(mDeviceManagerMock); - OverrideDeviceMakePtrObject(mDeviceManagerMock); -} -void DeviceManagerTestTool::UnInit(void) -{ - mDeviceManagerMock.reset(); - mKeyMonitorMock.reset(); - CancelOverrideDeviceMakePtrObject(); -} -std::shared_ptr DeviceManagerTestTool::ControlLed(const std::string &ledName, const LedState &state, - const unsigned int &aliveTimeMs, - const unsigned int &blinkTimeMs) -{ - HalTestTool::SetLedStateExpectations(ledName, state, aliveTimeMs, blinkTimeMs); - std::shared_ptr ledControl = - std::make_shared(state, aliveTimeMs, blinkTimeMs); - IDeviceManager::GetInstance()->ControlLed(ledName, ledControl); - return ledControl; -} -void DeviceManagerTestTool::DeviceManagerNotice(const std::string &keyName, const unsigned int &pressingTimeMs) -{ - LogInfo("DeviceManagerTestTool::DeviceManagerNotice\n"); - if (mKeyMonitorMock) { - KeyMonitorInit(mKeyMonitorMock, keyName, pressingTimeMs); - } - else { - LogWarning("mKeyMonitorMock is nullptr.\n"); - } -} -void DeviceManagerTestTool::DeviceManagerMockInit(std::shared_ptr &mock) -{ - auto getKeyMonitor = [=](std::shared_ptr &monitor) { - LogInfo("mKeyMonitorMock get.\n"); - mKeyMonitorMock = std::dynamic_pointer_cast(monitor); - }; - constexpr int ONLY_BE_CALLED_ONCE = 1; - EXPECT_CALL(*mock.get(), SetAllKeysMonitorTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(WithArgs<0>(Invoke(getKeyMonitor)), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); -} -void DeviceManagerTestTool::KeyMonitorInit(std::shared_ptr &mock, const std::string &keyName, - const unsigned int &pressingTimeMs) -{ - // EXPECT_CALL(*mock.get(), KeyEventReport(_, _, _)).Times(100).WillRepeatedly(DoAll(Return())); - EXPECT_CALL(*mock.get(), KeyEventReport(_, _, _)).WillRepeatedly(DoAll(Return())); - constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1; - constexpr int HOLD_UP_EVENT_HAPPENED_ONLY_ONCE = 1; - if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) { - EXPECT_CALL(*mock.get(), KeyEventReport(keyName, static_cast(KeyEvent::SHORT_CLICK), _)) - .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE) - .WillRepeatedly(DoAll(Return())); - } - if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) { - EXPECT_CALL(*mock.get(), KeyEventReport(keyName, static_cast(KeyEvent::HOLD_DOWN), _)) - .Times(AtLeast(1)) - .WillRepeatedly(DoAll(Return())); - EXPECT_CALL(*mock.get(), KeyEventReport(keyName, static_cast(KeyEvent::HOLD_UP), _)) - .Times(HOLD_UP_EVENT_HAPPENED_ONLY_ONCE) - .WillOnce(DoAll(Return())); - } -} \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/src/SingleControlMock.cpp b/test/middleware/DeviceManager/tool/src/SingleControlMock.cpp deleted file mode 100644 index 0ca4cb6..0000000 --- a/test/middleware/DeviceManager/tool/src/SingleControlMock.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "SingleControlMock.h" -SingleControlTool::SingleControlTool(const LedState &state, const unsigned int aliveTimeMs, - const unsigned int &blinkTimeMs) - : mState(state), mAliveTimeMs(aliveTimeMs), mBlinkTimeMs(blinkTimeMs) -{ - // -} -StatusCode SingleControlTool::GetLedState(LedState &state) -{ - state = mState; - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} -SingleControlMock::SingleControlMock(const LedState &state, const unsigned int aliveTimeMs, - const unsigned int &blinkTimeMs) - : SingleControlTool(state, aliveTimeMs, blinkTimeMs) -{ - // -} \ No newline at end of file diff --git a/test/middleware/DeviceManager/tool/src/SingleControlMock.h b/test/middleware/DeviceManager/tool/src/SingleControlMock.h deleted file mode 100644 index 91fd65e..0000000 --- a/test/middleware/DeviceManager/tool/src/SingleControlMock.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef LED_CONTROL_MOCK_H -#define LED_CONTROL_MOCK_H -#include "IDeviceManager.h" -#include "LedControl.h" -class SingleControlTool : public VSingleControl, public VirtualLedControl -{ -public: - SingleControlTool(const LedState &state, const unsigned int aliveTimeMs, const unsigned int &blinkTimeMs); - virtual ~SingleControlTool() = default; - virtual StatusCode GetLedState(LedState &state); - virtual unsigned int GetKeepAliveTimeMs(void) - { - return mAliveTimeMs; - } - virtual unsigned int GetBlinkTimeMs(void) - { - return mBlinkTimeMs; - } - -private: - const LedState mState; - const unsigned int mAliveTimeMs; - const unsigned int mBlinkTimeMs; -}; -class SingleControlMock : public SingleControlTool -{ -public: - SingleControlMock(const LedState &state, const unsigned int aliveTimeMs, const unsigned int &blinkTimeMs); - virtual ~SingleControlMock() = default; -}; -#endif \ No newline at end of file diff --git a/test/middleware/HuntingUpgrade/tool/CMakeLists.txt b/test/middleware/HuntingUpgrade/tool/CMakeLists.txt deleted file mode 100644 index cd7aafc..0000000 --- a/test/middleware/HuntingUpgrade/tool/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -include(${HAL_SOURCE_PATH}/build/hal.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/LinuxApi/include - ${UTILS_SOURCE_PATH}/UpgradeTool/include - ${MIDDLEWARE_SOURCE_PATH}/HuntingUpgrade/src - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET HuntingUpgradeTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} UpgradeTool LinuxApi HuntingUpgrade Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - HuntingUpgradeTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/HuntingUpgrade/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - HuntingUpgradeTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/HuntingUpgrade/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make HuntingUpgradeTestTool_code_check - COMMAND make HuntingUpgradeTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/HuntingUpgrade/tool/src/HuntingUpgradeTestTool.cpp b/test/middleware/HuntingUpgrade/tool/src/HuntingUpgradeTestTool.cpp deleted file mode 100644 index d547406..0000000 --- a/test/middleware/HuntingUpgrade/tool/src/HuntingUpgradeTestTool.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "HuntingUpgradeTestTool.h" -#include "ILog.h" -#include "LinuxApi.h" -#include "UpgradeTool.h" -#include -#include -#include -#include -#include -void HuntingUpgradeTestTool::Init(void) -{ -} -void HuntingUpgradeTestTool::UnInit(void) -{ - if (access(SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test", F_OK) == 0) { - fx_system("rm -rf " SD_CARD_MOUNT_PATH); - } -} -void HuntingUpgradeTestTool::CreateUpgradeFile(void) -{ - CheckDirectory(SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test"); - fx_system("touch " SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test"); - UpgradeTool::GetInstance()->PackFile(SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test", - SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH, - "6.4.5.6", - "hunting", - "dgiot", - "app"); -} -bool HuntingUpgradeTestTool::CheckDirectory(const char *filepath) -{ - LogInfo("CheckDirectory:%s\n", filepath); - char *path = nullptr; - char *sep = nullptr; - struct stat st = {0}; - - path = strdup(filepath); - if (!path) { - LogError("strdup\n"); - return false; - } - - for (sep = strchr(path, '/'); sep != NULL; sep = strchr(sep + 1, '/')) { - *sep = '\0'; - if (strlen(path) == 0) { - *sep = '/'; - continue; - } - if (stat(path, &st) == -1) { - if (errno == ENOENT) { - if (mkdir(path, 0755) == -1) { - LogError("mkdir path failed:%s\n", path); - free(path); - return false; - } - } - else { - LogError("stat\n"); - free(path); - return false; - } - } - - *sep = '/'; - } - free(path); - return true; -} \ No newline at end of file diff --git a/test/middleware/IpcConfig/tool/CMakeLists.txt b/test/middleware/IpcConfig/tool/CMakeLists.txt deleted file mode 100644 index eb3d4b1..0000000 --- a/test/middleware/IpcConfig/tool/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -include(${MIDDLEWARE_SOURCE_PATH}/IpcConfig/build/ipc_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${MIDDLEWARE_SOURCE_PATH}/IpcConfig/src - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET IpcConfigTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} IpcConfig LinuxApiMock Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - IpcConfigTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/IpcConfig/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - IpcConfigTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/IpcConfig/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make IpcConfigTestTool_code_check - COMMAND make IpcConfigTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/IpcConfig/tool/src/IpcConfigTestTool.cpp b/test/middleware/IpcConfig/tool/src/IpcConfigTestTool.cpp deleted file mode 100644 index d12906e..0000000 --- a/test/middleware/IpcConfig/tool/src/IpcConfigTestTool.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "IpcConfigTestTool.h" -#include "ILog.h" -#include "LinuxApi.h" -#include -#include -const char *MOUNTED_FILE = "./mount_info.txt"; -extern const char *SYSTEM_MOUNTED_FILE; -void IpcConfigTestTool::Init(std::shared_ptr &mock) -{ - MockMountedFile(); - auto api_fopen = [=](const char *pathname, const char *mode) { - LogInfo("Open mock mounted file.\n"); - mFile = OpenMockMountedFile(mode); - }; - EXPECT_CALL(*mock.get(), fx_fopen(SYSTEM_MOUNTED_FILE, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1>(Invoke(api_fopen)), (ReturnPointee(&mFile)))); -} -void IpcConfigTestTool::UnInit(void) -{ - constexpr int BUF_LENGTH = 256; - char cmd[BUF_LENGTH] = {0}; - sprintf(cmd, "rm -rf %s", MOUNTED_FILE); - fx_system(cmd); -} -void IpcConfigTestTool::MockMountedFile(void) -{ - FILE *file; - file = fopen(MOUNTED_FILE, "w"); - if (file == NULL) { - perror("Error opening file"); - return; - } - - fprintf(file, "devtmpfs /dev devtmpfs rw,relatime,size=10176k,nr_inodes=2544,mode=755 0 0\n"); - fprintf(file, "proc /proc proc rw,relatime 0 0\n"); - fprintf(file, "tmpfs /tmp tmpfs rw,relatime,size=14464k,nr_inodes=3616 0 0\n"); - fprintf(file, "tmpfs /run tmpfs rw,nosuid,nodev,relatime,size=14464k,nr_inodes=3616,mode=755 0 0\n"); - fprintf(file, "sysfs /sys sysfs rw,relatime 0 0\n"); - fprintf(file, "/dev/block/by-name" USERDATA_MOUNT_PATH " " USERDATA_MOUNT_PATH " jffs2 rw,relatime 0 0\n"); - fprintf( - file, - "/dev/mmcblk1p1 /mnt/sdcard vfat " - "rw,relatime,fmask=0022,dmask=0022,codepage=936,iocharset=cp936,shortname=mixed,utf8,errors=remount-ro 0 0\n"); - - fclose(file); - fx_system("sync"); - LogInfo("File written successfully.\n"); -} -FILE *IpcConfigTestTool::OpenMockMountedFile(const char *mode) -{ - FILE *fp = nullptr; - fp = fopen(MOUNTED_FILE, mode); - return fp; -} \ No newline at end of file diff --git a/test/middleware/McuAskBase/tool/CMakeLists.txt b/test/middleware/McuAskBase/tool/CMakeLists.txt deleted file mode 100644 index 51471c7..0000000 --- a/test/middleware/McuAskBase/tool/CMakeLists.txt +++ /dev/null @@ -1,60 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${MIDDLEWARE_SOURCE_PATH}/McuAskBase/include - ${MIDDLEWARE_SOURCE_PATH}/McuManager/include - # ${UTILS_SOURCE_PATH}/UartDevice/include - # ${UTILS_SOURCE_PATH}/ModBusCRC16/include - # ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - # ${TEST_SOURCE_PATH}/utils/UartDevice/tool/include - ${TEST_SOURCE_PATH} - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - - - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET McuAskBaseTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} UartDeviceTestTool Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - McuAskBaseTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuAskBase/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - McuAskBaseTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuAskBase/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make McuAskBaseTestTool_code_check - COMMAND make McuAskBaseTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/McuAskBase/tool/src/McuAskBaseTestTool.cpp b/test/middleware/McuAskBase/tool/src/McuAskBaseTestTool.cpp deleted file mode 100644 index d09acff..0000000 --- a/test/middleware/McuAskBase/tool/src/McuAskBaseTestTool.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "McuAskBaseTestTool.h" -#include "ILog.h" -constexpr int CALL_ONLY_ONCE = 1; -constexpr int SHOULD_NOT_CALL = 0; -ASK_RESULT McuAskBaseTest::Blocking(void) -{ - BlockingTrace(); - return McuAskBase::Blocking(); -} -bool McuAskBaseTest::NeedReply(void) -{ - NeedReplyTrace(); - return McuAskBase::NeedReply(); -} -void McuAskBaseTest::ReplyFinished(const bool result) -{ - ReplyFinishedTrace(result); - McuAskBase::ReplyFinished(result); -} -bool McuAskBaseTest::IfTimeout(const unsigned int &integrationTimeMs) -{ - IfTimeoutTrace(integrationTimeMs); - return McuAskBase::IfTimeout(integrationTimeMs); -} -void McuAskBaseTestTool::McuAskDefaultFeatures(std::shared_ptr &mock) -{ - if (McuAskBlock::BLOCK == mIsBlock && McuAskReply::NEED_REPLY == mNeedReply) { - EXPECT_CALL(*mock.get(), BlockingTrace()).Times(CALL_ONLY_ONCE); - EXPECT_CALL(*mock.get(), NeedReplyTrace()).Times(AtLeast(1)); - EXPECT_CALL(*mock.get(), ReplyFinishedTrace(_)).Times(CALL_ONLY_ONCE); - EXPECT_CALL(*mock.get(), IfTimeoutTrace(_)).Times(AnyNumber()); - } - if (McuAskBlock::NOT_BLOCK == mIsBlock && McuAskReply::NEED_REPLY == mNeedReply) { - EXPECT_CALL(*mock.get(), BlockingTrace()).Times(CALL_ONLY_ONCE); - EXPECT_CALL(*mock.get(), NeedReplyTrace()).Times(AtLeast(1)); - EXPECT_CALL(*mock.get(), ReplyFinishedTrace(_)).Times(CALL_ONLY_ONCE); - EXPECT_CALL(*mock.get(), IfTimeoutTrace(_)).Times(AnyNumber()); - } - if (McuAskBlock::UNRELATED == mIsBlock && McuAskReply::NEED_NOT_REPLY == mNeedReply) { - EXPECT_CALL(*mock.get(), BlockingTrace()).Times(SHOULD_NOT_CALL); - EXPECT_CALL(*mock.get(), NeedReplyTrace()).Times(AtLeast(1)); - EXPECT_CALL(*mock.get(), ReplyFinishedTrace(_)).Times(SHOULD_NOT_CALL); - EXPECT_CALL(*mock.get(), IfTimeoutTrace(_)).Times(SHOULD_NOT_CALL); - } -} -void McuAskBaseTestTool::McuAskDoNothing(std::shared_ptr &mock) -{ - EXPECT_CALL(*mock.get(), BlockingTrace()).Times(AnyNumber()); - EXPECT_CALL(*mock.get(), NeedReplyTrace()).Times(AnyNumber()); - EXPECT_CALL(*mock.get(), ReplyFinishedTrace(_)).Times(AnyNumber()); - EXPECT_CALL(*mock.get(), IfTimeoutTrace(_)).Times(AnyNumber()); -} -void McuAskBaseTestTool::NoNeedToBlocking(std::shared_ptr &mock) -{ - // Mock::AllowLeak(mock.get()); - EXPECT_CALL(*mock.get(), BlockingTrace()).Times(SHOULD_NOT_CALL); -} \ No newline at end of file diff --git a/test/middleware/McuManager/tool/CMakeLists.txt b/test/middleware/McuManager/tool/CMakeLists.txt deleted file mode 100644 index cfc6d46..0000000 --- a/test/middleware/McuManager/tool/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/McuProtocol/include - ${MIDDLEWARE_SOURCE_PATH}/McuManager/src - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET McuManagerTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} McuManager McuProtocolTestTool UartDeviceTestTool LinuxApiMock Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - McuManagerTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuManager/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - McuManagerTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuManager/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make McuManagerTestTool_code_check - COMMAND make McuManagerTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/McuManager/tool/src/McuManagerImplTest.cpp b/test/middleware/McuManager/tool/src/McuManagerImplTest.cpp deleted file mode 100644 index 1145815..0000000 --- a/test/middleware/McuManager/tool/src/McuManagerImplTest.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "McuManagerTestTool.h" -bool McuManagerImplTest::CheckAskExist(const std::shared_ptr &ask) -{ - std::shared_ptr result; - return SearchMcuAsk(ask->mSerialNumber, result); -} \ No newline at end of file diff --git a/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.cpp b/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.cpp deleted file mode 100644 index a14ac39..0000000 --- a/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "McuManagerMakePtrTest.h" -#include "ILog.h" -#include "McuManagerTestTool.h" -void OverrideMcuManagerMakePtrObject(std::shared_ptr &mcuManagerMock) -{ - std::shared_ptr impl = std::make_shared(); - McuManagerMakePtr::GetInstance(&impl); - std::shared_ptr tmp = McuManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mMcuManagerMock = mcuManagerMock; - } -} -void CancelOverrideMcuManagerMakePtrObject(void) -{ - std::shared_ptr tmp = McuManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mMcuManagerMock.reset(); - } - tmp.reset(); - test.reset(); - std::shared_ptr impl = std::make_shared(); - McuManagerMakePtr::GetInstance(&impl); -} -McuManagerMakePtrTest::McuManagerMakePtrTest() -{ - // -} -McuManagerMakePtrTest::~McuManagerMakePtrTest() -{ - // - mMcuManagerMock.reset(); -} -const StatusCode McuManagerMakePtrTest::CreateMcuManager(std::shared_ptr &impl) -{ - if (mMcuManagerMock) { - impl = mMcuManagerMock; - } - else { - LogWarning("CreateMcuManager failed:mMcuManagerMock is nullptr.\n"); - } - return CreateStatusCode(STATUS_CODE_OK); -} \ No newline at end of file diff --git a/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.h b/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.h deleted file mode 100644 index 611f8c2..0000000 --- a/test/middleware/McuManager/tool/src/McuManagerMakePtrTest.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MCU_MANAGER_MAKE_PTR_TEST_H -#define MCU_MANAGER_MAKE_PTR_TEST_H -#include "McuManagerMakePtr.h" -#include "McuManagerTestTool.h" -void OverrideMcuManagerMakePtrObject(std::shared_ptr &mcuManagerMock); -void CancelOverrideMcuManagerMakePtrObject(void); -class McuManagerMakePtrTest : public McuManagerMakePtr -{ -public: - McuManagerMakePtrTest(); - virtual ~McuManagerMakePtrTest(); - const StatusCode CreateMcuManager(std::shared_ptr &impl) override; - -public: -public: - std::shared_ptr mMcuManagerMock; -}; -#endif \ No newline at end of file diff --git a/test/middleware/McuManager/tool/src/McuManagerTestTool.cpp b/test/middleware/McuManager/tool/src/McuManagerTestTool.cpp deleted file mode 100644 index fd44113..0000000 --- a/test/middleware/McuManager/tool/src/McuManagerTestTool.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "McuManagerTestTool.h" -#include "ILog.h" -#include "McuManagerMakePtrTest.h" -extern const char *MCU_UART_DEVICE_PTR; -static UartInfo gUartDevice = { - MCU_UART_DEVICE_PTR, - 1152000, - 'N', - 8, - 1, - 'N', -}; -void McuManagerTestTool::Init(std::shared_ptr &mock) -{ - LogInfo("McuManagerTestTool::Init\n"); - mMcuManagerMock = std::make_shared(); - OverrideMcuManagerMakePtrObject(mMcuManagerMock); - UartDeviceTestTool::RegisterUartDevice(mock, gUartDevice); - McuProtocolTestTool::Init(mock, gUartDevice); -} -void McuManagerTestTool::UnInit(void) -{ - LogInfo("McuManagerTestTool::UnInit\n"); - mMcuManagerMock.reset(); - CancelOverrideMcuManagerMakePtrObject(); - UartDeviceTestTool::UnregisterUartDevice(gUartDevice); - McuProtocolTestTool::UnInit(); -} -bool McuManagerTestTool::CheckAskExist(const std::shared_ptr &ask) -{ - return mMcuManagerMock->CheckAskExist(ask); -} -void McuManagerTestTool::MockOtherSideAskIpcMission(std::shared_ptr &mock, const unsigned int &serialNumber) -{ - McuProtocolTestTool::MockOtherSideAskIpcMission(mock, serialNumber); -} -void McuManagerTestTool::MockOtherSideAskHeartBeat(std::shared_ptr &mock, const unsigned int &serialNumber) -{ - McuProtocolTestTool::MockOtherSideAskHeartBeat(mock, serialNumber); -} -void McuManagerTestTool::MockOtherSideGetIntervalStart(std::shared_ptr &mock, - const unsigned int &serialNumber) -{ - McuProtocolTestTool::MockOtherSideAskGetIntervalStart(mock, serialNumber); -} -void McuManagerTestTool::MockOtherSideGetDateTime(std::shared_ptr &mock, const unsigned int &serialNumber) -{ - McuProtocolTestTool::MockOtherSideAskGetDateTime(mock, serialNumber); -} -void McuManagerTestTool::MockOtherSideGetPriSensitivity(std::shared_ptr &mock, - const unsigned int &serialNumber) -{ - McuProtocolTestTool::MockOtherSideAskGetPirSensitivity(mock, serialNumber); -} -void McuManagerTestTool::MockOtherSideSendData(std::shared_ptr &mock, const void *data, const size_t &size) -{ - McuProtocolTestTool::MockOtherSideAskSendAnyData(mock, data, size); -} -void McuManagerTestTool::MockMcuDeviceOpenFailed(std::shared_ptr &mock) -{ - UartDeviceTestTool::SetUartDeviceOpenFailed(mock, gUartDevice); -} -void McuManagerTestTool::MockMcuDeviceOpenSuccessButReadNothing(std::shared_ptr &mock) -{ - McuProtocolTestTool::ReadNothingAnyTime(mock); -} -void McuManagerTestTool::MockOtherSideIpcMissionReply(const IpcMission &replyIpcMission) -{ - unsigned char reply = static_cast(replyIpcMission); - McuProtocolTestTool::MockOtherSideIpcMissionReply(reply); -} \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/CMakeLists.txt b/test/middleware/MediaManager/tool/CMakeLists.txt deleted file mode 100644 index c6b08d6..0000000 --- a/test/middleware/MediaManager/tool/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - # ${UTILS_SOURCE_PATH}/Servers/include - # ${UTILS_SOURCE_PATH}/TcpModule/include - ${MIDDLEWARE_SOURCE_PATH}/MediaManager/src - ${HAL_SOURCE_PATH}/include - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET MediaManagerTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} MediaManager Servers Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - MediaManagerTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/MediaManager/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - MediaManagerTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/MediaManager/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make MediaManagerTestTool_code_check - COMMAND make MediaManagerTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaHandleMock.cpp b/test/middleware/MediaManager/tool/src/MediaHandleMock.cpp deleted file mode 100644 index fb9cbc0..0000000 --- a/test/middleware/MediaManager/tool/src/MediaHandleMock.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MediaHandleMock.h" \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaHandleMock.h b/test/middleware/MediaManager/tool/src/MediaHandleMock.h deleted file mode 100644 index b8c565d..0000000 --- a/test/middleware/MediaManager/tool/src/MediaHandleMock.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MEDIA_HANDLE_MOCK_H -#define MEDIA_HANDLE_MOCK_H -#include "MediaHandle.h" -#endif \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.cpp b/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.cpp deleted file mode 100644 index 06749c2..0000000 --- a/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MediaManagerMakePtrTest.h" -#include "ILog.h" -void OverrideMediaManagerMakePtrObject(std::shared_ptr &appManagerMock) -{ - std::shared_ptr impl = std::make_shared(); - std::shared_ptr test = std::dynamic_pointer_cast(impl); - if (test) { - test->mMediaManagerMock = appManagerMock; - } - MediaManagerMakePtr::GetInstance(&impl); -} -void CancelOverrideMediaManagerMakePtrObject(void) -{ - std::shared_ptr tmp = MediaManagerMakePtr::GetInstance(); - std::shared_ptr test = std::dynamic_pointer_cast(tmp); - if (test) { - test->mMediaManagerMock.reset(); - } - tmp.reset(); - test.reset(); - std::shared_ptr impl = std::make_shared(); - MediaManagerMakePtr::GetInstance(&impl); -} -MediaManagerMakePtrTest::MediaManagerMakePtrTest() -{ -} -MediaManagerMakePtrTest::~MediaManagerMakePtrTest() -{ - mMediaManagerMock.reset(); -} -const StatusCode MediaManagerMakePtrTest::CreateMediaManagerModule(std::shared_ptr &impl) -{ - if (mMediaManagerMock) { - LogInfo("CreateMediaManagerModule mMediaManagerMock\n"); - impl = mMediaManagerMock; - } - else { - LogWarning("CreateMcuManager failed:mMediaManagerMock is nullptr.\n"); - } - return CreateStatusCode(STATUS_CODE_OK); -} \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.h b/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.h deleted file mode 100644 index 296d782..0000000 --- a/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MEDIA_MANAGER_MAKE_PTR_TEST_H -#define MEDIA_MANAGER_MAKE_PTR_TEST_H -#include "MediaManagerMock.h" -#include "MediaManagerTestTool.h" -#include "MediaManagerMakePtr.h" -void OverrideMediaManagerMakePtrObject(std::shared_ptr &appManagerMock); -void CancelOverrideMediaManagerMakePtrObject(void); -class MediaManagerMakePtrTest : public MediaManagerMakePtr -{ -public: - MediaManagerMakePtrTest(); - virtual ~MediaManagerMakePtrTest(); - const StatusCode CreateMediaManagerModule(std::shared_ptr &impl) override; - -public: - std::shared_ptr mMediaManagerMock; -}; -#endif \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp b/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp deleted file mode 100644 index da8e84e..0000000 --- a/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MediaManagerMock.h" -#include "ILog.h" -StatusCode MediaManagerTest::SetMediaMonitor(std::shared_ptr &monitor) -{ - LogInfo("MediaManagerTest::SetMediaMonitor\n"); - StatusCode code = SetMediaMonitorTrace(monitor); - if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return MediaManagerImpl::SetMediaMonitor(monitor); - } - return code; -} -const StatusCode MediaManagerTest::SetMediaMonitorTrace(std::shared_ptr &monitor) -{ - LogInfo("SetMediaMonitorTrace::SetMediaMonitorTrace\n"); - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -} \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaManagerMock.h b/test/middleware/MediaManager/tool/src/MediaManagerMock.h deleted file mode 100644 index 6b6fcd9..0000000 --- a/test/middleware/MediaManager/tool/src/MediaManagerMock.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MEDIA_MANAGER_MOCK_H -#define MEDIA_MANAGER_MOCK_H -#include "MediaManagerImpl.h" -#include "MediaManagerTestTool.h" -class MediaManagerTest : public MediaManagerImpl -{ -public: - MediaManagerTest() = default; - virtual ~MediaManagerTest() = default; - // const StatusCode SetMediaMonitor(std::shared_ptr &monitor) override; - StatusCode SetMediaMonitor(std::shared_ptr &monitor) override; - -protected: - virtual const StatusCode SetMediaMonitorTrace(std::shared_ptr &monitor); -}; -class MediaManagerMock : public MediaManagerTest -{ -public: - MediaManagerMock() = default; - virtual ~MediaManagerMock() = default; - MOCK_METHOD1(SetMediaMonitorTrace, const StatusCode(std::shared_ptr &)); -}; -#endif \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp b/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp deleted file mode 100644 index 2ad40cb..0000000 --- a/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MediaManagerTestTool.h" -#include "ILog.h" -#include "MediaManagerMakePtrTest.h" -#include "MediaManagerMock.h" -#include "MediaMonitorMock.h" -constexpr int ONLY_BE_CALLED_ONCE = 1; -void MediaManagerTestTool::Init(void) -{ - mMediaManagerMock = std::make_shared(); - MediaManagerMockInit(mMediaManagerMock); - std::shared_ptr mock = std::dynamic_pointer_cast(mMediaManagerMock); - OverrideMediaManagerMakePtrObject(mock); -} -void MediaManagerTestTool::UnInit(void) -{ - mMediaManagerMock.reset(); - mMediaMonitorMock.reset(); - CancelOverrideMediaManagerMakePtrObject(); -} -void MediaManagerTestTool::MediaManagerMockInit(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (!mock) { - LogError("vMock error.\n"); - return; - } - auto getMediaMonitor = [=](std::shared_ptr &monitor) { - LogInfo("mMediaMonitorMock get.\n"); - mMediaMonitorMock = monitor; - MediaManagerTestTool::MediaMonitorInit(mMediaMonitorMock); - }; - EXPECT_CALL(*mock.get(), SetMediaMonitorTrace(_)) - .Times(ONLY_BE_CALLED_ONCE) - .WillOnce(DoAll(WithArgs<0>(Invoke(getMediaMonitor)), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); -} -void MediaManagerTestTool::MediaMonitorInit(std::shared_ptr &vMock) -{ - std::shared_ptr mock = std::dynamic_pointer_cast(vMock); - if (mock) { - // EXPECT_CALL(*mock.get(), GetProductInfoTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetDeviceAttrTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetMediaInfoTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetSdCardInfoTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetParamValueTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetCapabilityTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetLockVideoStatusTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetStorageInfoTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetStorageFileListTrace(_, _)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetBatteryInfoTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), SetTimeZoneTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), SetParamValueTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), EnterRecorderTrace()) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), MediaPlaybackTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), UploadFileTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), GetThumbnailTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - // EXPECT_CALL(*mock.get(), MediaClientConnectedTrace(_)) - // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - } -} -std::shared_ptr MediaManagerTestTool::MakeMonitorMock(void) -{ - class Monitor : public MediaMonitorMock, public MediaMonitorTest - { - public: - Monitor() = default; - virtual ~Monitor() = default; - }; - std::shared_ptr monitor = std::make_shared(); - return monitor; -} \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaMonitorMock.cpp b/test/middleware/MediaManager/tool/src/MediaMonitorMock.cpp deleted file mode 100644 index 9432142..0000000 --- a/test/middleware/MediaManager/tool/src/MediaMonitorMock.cpp +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "MediaMonitorMock.h" -#include "ILog.h" -// StatusCode MediaMonitorTest::GetProductInfo(AppGetProductInfo ¶m) -// { -// LogInfo("MediaMonitorTest::GetProductInfo\n"); -// StatusCode code = GetProductInfoTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetProductInfo(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetProductInfoTrace(AppGetProductInfo ¶m) -// { -// LogInfo("MediaMonitorTrace::GetProductInfoTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetDeviceAttr(AppGetDeviceAttr ¶m) -// { -// LogInfo("MediaMonitorTest::GetDeviceAttr\n"); -// StatusCode code = GetDeviceAttrTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetDeviceAttr(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetDeviceAttrTrace(AppGetDeviceAttr ¶m) -// { -// LogInfo("MediaMonitorTrace::GetDeviceAttrTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetMediaInfo(AppGetMediaInfo ¶m) -// { -// LogInfo("MediaMonitorTest::GetMediaInfo\n"); -// StatusCode code = GetMediaInfoTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetMediaInfo(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetMediaInfoTrace(AppGetMediaInfo ¶m) -// { -// LogInfo("MediaMonitorTrace::GetMediaInfoTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetSdCardInfo(AppGetSdCardInfo ¶m) -// { -// LogInfo("MediaMonitorTest::GetSdCardInfo\n"); -// StatusCode code = GetSdCardInfoTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetSdCardInfo(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetSdCardInfoTrace(AppGetSdCardInfo ¶m) -// { -// LogInfo("MediaMonitorTrace::GetSdCardInfoTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetBatteryInfo(AppGetBatteryInfo ¶m) -// { -// LogInfo("MediaMonitorTest::GetBatteryInfo\n"); -// StatusCode code = GetBatteryInfoTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetBatteryInfo(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetBatteryInfoTrace(AppGetBatteryInfo ¶m) -// { -// LogInfo("MediaMonitorTrace::GetBatteryInfoTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetParamValue(AppParamValue ¶m) -// { -// LogInfo("MediaMonitorTest::GetParamValue\n"); -// StatusCode code = GetParamValueTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetParamValue(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetParamValueTrace(AppParamValue ¶m) -// { -// LogInfo("MediaMonitorTrace::GetParamValueTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetCapability(AppGetCapability ¶m) -// { -// LogInfo("MediaMonitorTest::GetCapability\n"); -// StatusCode code = GetCapabilityTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetCapability(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetCapabilityTrace(AppGetCapability ¶m) -// { -// LogInfo("MediaMonitorTrace::GetCapabilityTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetLockVideoStatus(LockVideoStatus ¶m) -// { -// LogInfo("MediaMonitorTest::GetLockVideoStatus\n"); -// StatusCode code = GetLockVideoStatusTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetLockVideoStatus(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetLockVideoStatusTrace(LockVideoStatus ¶m) -// { -// LogInfo("MediaMonitorTrace::GetLockVideoStatusTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetStorageInfo(std::vector ¶m) -// { -// LogInfo("MediaMonitorTest::GetStorageInfo\n"); -// StatusCode code = GetStorageInfoTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetStorageInfo(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetStorageInfoTrace(std::vector ¶m) -// { -// LogInfo("MediaMonitorTrace::GetStorageInfoTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) -// { -// LogInfo("MediaMonitorTest::GetStorageFileList\n"); -// StatusCode code = GetStorageFileListTrace(fileInfo, param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetStorageFileList(fileInfo, param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetStorageFileListTrace(const AppGetFileInfo &fileInfo, std::vector ¶m) -// { -// LogInfo("MediaMonitorTrace::GetStorageFileListTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::SetDateTime(const AppSetDateTime ¶m) -// { -// LogInfo("MediaMonitorTest::SetDateTime\n"); -// LogInfo("mYear = %u\n", param.mYear); -// LogInfo("mMonth = %02u\n", param.mMonth); -// LogInfo("mDay = %02u\n", param.mDay); -// LogInfo("mHour = %02u\n", param.mHour); -// LogInfo("mMinute = %02u\n", param.mMinute); -// LogInfo("mSecond = %02u\n", param.mSecond); -// StatusCode code = SetDateTimeTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::SetDateTime(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::SetDateTimeTrace(const AppSetDateTime ¶m) -// { -// LogInfo("MediaMonitorTrace::SetDateTimeTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::SetTimeZone(const unsigned int &zone) -// { -// LogInfo("MediaMonitorTest::SetTimeZone = %u\n", zone); -// StatusCode code = SetTimeZoneTrace(zone); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::SetTimeZone(zone); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::SetTimeZoneTrace(const unsigned int &zone) -// { -// LogInfo("MediaMonitorTrace::SetTimeZoneTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::SetParamValue(const AppSetParamValue ¶m) -// { -// LogInfo("MediaMonitorTest::SetParamValue\n"); -// StatusCode code = SetParamValueTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::SetParamValue(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::SetParamValueTrace(const AppSetParamValue ¶m) -// { -// LogInfo("MediaMonitorTrace::SetParamValueTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::EnterRecorder(void) -// { -// LogInfo("MediaMonitorTest::EnterRecorder\n"); -// StatusCode code = EnterRecorderTrace(); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::EnterRecorder(); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::EnterRecorderTrace(void) -// { -// LogInfo("MediaMonitorTrace::EnterRecorderTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::AppPlayback(const PlayBackEvent &event) -// { -// LogInfo("MediaMonitorTest::AppPlayback\n"); -// StatusCode code = AppPlaybackTrace(event); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::AppPlayback(event); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::AppPlaybackTrace(const PlayBackEvent &event) -// { -// LogInfo("MediaMonitorTrace::AppPlaybackTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::UploadFile(AppUploadFile ¶m) -// { -// LogInfo("MediaMonitorTest::UploadFile\n"); -// StatusCode code = UploadFileTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::UploadFile(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::UploadFileTrace(AppUploadFile ¶m) -// { -// LogInfo("MediaMonitorTrace::UploadFileTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::GetThumbnail(AppGetThumbnail ¶m) -// { -// LogInfo("MediaMonitorTest::GetThumbnail\n"); -// StatusCode code = GetThumbnailTrace(param); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::GetThumbnail(param); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::GetThumbnailTrace(AppGetThumbnail ¶m) -// { -// LogInfo("MediaMonitorTrace::UploadFileTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode MediaMonitorTest::AppClientConnected(std::shared_ptr &client) -// { -// LogInfo("MediaMonitorTest::AppClientConnected\n"); -// StatusCode code = AppClientConnectedTrace(client); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return VMediaMonitor::AppClientConnected(client); -// } -// return code; -// } -// StatusCode MediaMonitorTrace::AppClientConnectedTrace(std::shared_ptr &client) -// { -// LogInfo("MediaMonitorTrace::AppClientConnected\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/src/MediaMonitorMock.h b/test/middleware/MediaManager/tool/src/MediaMonitorMock.h deleted file mode 100644 index c73c474..0000000 --- a/test/middleware/MediaManager/tool/src/MediaMonitorMock.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MEDIA_MONITOR_MOCK_H -#define MEDIA_MONITOR_MOCK_H -#include "GtestUsing.h" -#include "IMediaManager.h" -class MediaMonitorTrace -{ -public: - MediaMonitorTrace() = default; - virtual ~MediaMonitorTrace() = default; - -protected: - // virtual StatusCode GetProductInfoTrace(AppGetProductInfo ¶m); - // virtual StatusCode GetDeviceAttrTrace(AppGetDeviceAttr ¶m); - // virtual StatusCode GetMediaInfoTrace(AppGetMediaInfo ¶m); - // virtual StatusCode GetSdCardInfoTrace(AppGetSdCardInfo ¶m); - // virtual StatusCode GetBatteryInfoTrace(AppGetBatteryInfo ¶m); - // virtual StatusCode GetParamValueTrace(AppParamValue ¶m); - // virtual StatusCode GetCapabilityTrace(AppGetCapability ¶m); - // virtual StatusCode GetLockVideoStatusTrace(LockVideoStatus ¶m); - // virtual StatusCode GetStorageInfoTrace(std::vector ¶m); - // virtual StatusCode GetStorageFileListTrace(const AppGetFileInfo &fileInfo, std::vector ¶m); - // virtual StatusCode SetDateTimeTrace(const AppSetDateTime ¶m); - // virtual StatusCode SetTimeZoneTrace(const unsigned int &zone); - // virtual StatusCode SetParamValueTrace(const AppSetParamValue ¶m); - // virtual StatusCode EnterRecorderTrace(void); - // virtual StatusCode AppPlaybackTrace(const PlayBackEvent &event); - // virtual StatusCode UploadFileTrace(AppUploadFile ¶m); - // virtual StatusCode GetThumbnailTrace(AppGetThumbnail ¶m); - // virtual StatusCode AppClientConnectedTrace(std::shared_ptr &client); -}; -class MediaMonitorTest : public VMediaMonitor, virtual public MediaMonitorTrace -{ -public: - MediaMonitorTest() = default; - virtual ~MediaMonitorTest() = default; - // StatusCode GetProductInfo(AppGetProductInfo ¶m) override; - // StatusCode GetDeviceAttr(AppGetDeviceAttr ¶m) override; - // StatusCode GetMediaInfo(AppGetMediaInfo ¶m) override; - // StatusCode GetSdCardInfo(AppGetSdCardInfo ¶m) override; - // StatusCode GetBatteryInfo(AppGetBatteryInfo ¶m) override; - // StatusCode GetParamValue(AppParamValue ¶m) override; - // StatusCode GetCapability(AppGetCapability ¶m) override; - // StatusCode GetLockVideoStatus(LockVideoStatus ¶m) override; - // StatusCode GetStorageInfo(std::vector ¶m) override; - // StatusCode GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) override; - // StatusCode SetDateTime(const AppSetDateTime ¶m) override; - // StatusCode SetTimeZone(const unsigned int &zone) override; - // StatusCode SetParamValue(const AppSetParamValue ¶m) override; - // StatusCode EnterRecorder(void) override; - // StatusCode AppPlayback(const PlayBackEvent &event) override; - // StatusCode UploadFile(AppUploadFile ¶m) override; - // StatusCode GetThumbnail(AppGetThumbnail ¶m) override; - // StatusCode AppClientConnected(std::shared_ptr &client) override; -}; -class MediaMonitorMock : virtual public MediaMonitorTrace -{ -public: - MediaMonitorMock() = default; - virtual ~MediaMonitorMock() = default; - // MOCK_METHOD1(GetProductInfoTrace, StatusCode(AppGetProductInfo &)); - // MOCK_METHOD1(GetDeviceAttrTrace, StatusCode(AppGetDeviceAttr &)); - // MOCK_METHOD1(GetMediaInfoTrace, StatusCode(AppGetMediaInfo &)); - // MOCK_METHOD1(GetSdCardInfoTrace, StatusCode(AppGetSdCardInfo &)); - // MOCK_METHOD1(GetBatteryInfoTrace, StatusCode(AppGetBatteryInfo &)); - // MOCK_METHOD1(GetParamValueTrace, StatusCode(AppParamValue &)); - // MOCK_METHOD1(GetCapabilityTrace, StatusCode(AppGetCapability &)); - // MOCK_METHOD1(GetLockVideoStatusTrace, StatusCode(LockVideoStatus &)); - // MOCK_METHOD1(GetStorageInfoTrace, StatusCode(std::vector &)); - // MOCK_METHOD2(GetStorageFileListTrace, StatusCode(const AppGetFileInfo &, std::vector &)); - // MOCK_METHOD1(SetDateTimeTrace, StatusCode(const AppSetDateTime &)); - // MOCK_METHOD1(SetTimeZoneTrace, StatusCode(const unsigned int &)); - // MOCK_METHOD1(SetParamValueTrace, StatusCode(const AppSetParamValue &)); - // MOCK_METHOD0(EnterRecorderTrace, StatusCode(void)); - // MOCK_METHOD1(AppPlaybackTrace, StatusCode(const PlayBackEvent &)); - // MOCK_METHOD1(UploadFileTrace, StatusCode(AppUploadFile &)); - // MOCK_METHOD1(GetThumbnailTrace, StatusCode(AppGetThumbnail &)); - // MOCK_METHOD1(AppClientConnectedTrace, StatusCode(std::shared_ptr &)); -}; -#endif \ No newline at end of file diff --git a/test/utils/McuProtocol/tool/CMakeLists.txt b/test/utils/McuProtocol/tool/CMakeLists.txt deleted file mode 100644 index a72de19..0000000 --- a/test/utils/McuProtocol/tool/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${UTILS_SOURCE_PATH}/UartDevice/include - ${UTILS_SOURCE_PATH}/ModBusCRC16/include - ${UTILS_SOURCE_PATH}/McuProtocol/src - ${TEST_SOURCE_PATH} - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH}/utils/UartDevice/tool/include - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include - ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET McuProtocolTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} UartDeviceTestTool Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - McuProtocolTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/McuProtocol/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - McuProtocolTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/McuProtocol/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make McuProtocolTestTool_code_check - COMMAND make McuProtocolTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp b/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp deleted file mode 100644 index 16cb847..0000000 --- a/test/utils/McuProtocol/tool/src/McuProtocolTestTool.cpp +++ /dev/null @@ -1,1099 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "McuProtocolTestTool.h" -#include "ILog.h" -#include "ModBusCRC16.h" -#include "ProtocolHandle.h" -#include "ProtocolMonitor.h" -#include -#include -#include -#include -using std::placeholders::_1; -using std::placeholders::_2; -using std::placeholders::_3; -using std::placeholders::_4; -constexpr int PIPE_READ_FD_INDEX = 0; -constexpr int PIPE_WRITE_FD_INDEX = 1; -constexpr int INVALID_FD = -1; -const char *gPipeBuf = "nothing"; -constexpr size_t PROTOCOL_HEAD_LENGTH = 2; -constexpr size_t PROTOCOL_SERIAL_NUMBER_LENGTH = sizeof(unsigned int); -constexpr size_t PROTOCOL_SERIAL_NUMBER_OFFSET = PROTOCOL_HEAD_LENGTH; -constexpr size_t PROTOCOL_COMMAND_LENGTH = sizeof(short); -constexpr size_t PROTOCOL_COMMAND_OFFSET = PROTOCOL_SERIAL_NUMBER_OFFSET + PROTOCOL_SERIAL_NUMBER_LENGTH; -constexpr size_t PROTOCOL_DATA_LENGTH_LENGTH = sizeof(short); -constexpr size_t PROTOCOL_DATA_LENGTH_OFFSET = PROTOCOL_COMMAND_OFFSET + PROTOCOL_DATA_LENGTH_LENGTH; -constexpr size_t PROTOCOL_CHECK_CODE_LENGTH = sizeof(short); -constexpr size_t PROTOCOL_DATA_KEY_HEAD_LENGTH = - PROTOCOL_HEAD_LENGTH + PROTOCOL_SERIAL_NUMBER_LENGTH + PROTOCOL_COMMAND_LENGTH + PROTOCOL_DATA_LENGTH_LENGTH; -constexpr size_t PROTOCOL_DATA_OFFSET = PROTOCOL_DATA_KEY_HEAD_LENGTH; -unsigned char ASK_IPC_MISSION_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char REPLY_IPC_MISSION_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char ASK_CUT_OFF_POWER_SUPPLY_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x02, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char ASK_FEED_WATCH_DOG_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x03, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char ASK_SET_FEEDING_CYCLE_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x0F, 0x01, 0x01, 0x01, 0xFF, 0xFF}; -unsigned char REPLY_SET_FEEDING_CYCLE_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char ASK_SET_DATE_TIME_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x07, 0x00, 0x12, 0x20, 0x01, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF}; -unsigned char REPLY_SET_DATE_TIME_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char ASK_SET_PIR_SENSITIVITY_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x08, 0x00, 0x0D, 0x09, 0xFF, 0xFF}; -unsigned char REPLY_SET_PIR_SENSITIVITY_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char ASK_CONTORL_INFRARED_LIGHT_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x0A, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char REPLY_ASK_CONTORL_INFRARED_LIGHT_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char ASK_GET_PHOTOSENSITIVITY_X[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x0B, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char REPLY_ASK_GET_PHOTOSENSITIVITY_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0B, 0x00, 0x0D, 0x0A, 0xFF, 0xFF}; -unsigned char REPLY_OTHER_SIDE_ASK_SEND_IPC_MISSION_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x01, 0x00, 0x0D, 0x0A, 0xFF, 0xFF}; -unsigned char OTHER_SIDE_ASK_SEND_IPC_MISSION_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x0D, 0x01, 0xFF, 0xFF}; -unsigned char REPLY_OTHER_SIDE_ASK_SEND_HEART_BEAT_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x02, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char OTHER_SIDE_ASK_SEND_HEART_BEAT_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char REPLY_OTHER_SIDE_ASK_GET_INTERVAL_START_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x06, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0xFF}; -unsigned char OTHER_SIDE_ASK_GET_INTERVAL_START_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x06, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char REPLY_OTHER_SIDE_ASK_GET_DATE_TIME_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF}; -unsigned char OTHER_SIDE_ASK_GET_DATE_TIME_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x07, 0x00, 0x0C, 0xFF, 0xFF}; -unsigned char REPLY_OTHER_SIDE_ASK_GET_SENSITIVITY_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x08, 0x00, 0x0C, 0x00, 0xFF, 0xFF}; -unsigned char OTHER_SIDE_ASK_GET_SENSITIVITY_X[] = { - 0xFA, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0x00, 0x0C, 0xFF, 0xFF}; -McuProtocolTestTool::McuProtocolTestTool() -{ - mThreadRuning = false; - mPipeFdMockSelectInit = false; - mPipeFdMockSelect[PIPE_READ_FD_INDEX] = -1; - mPipeFdMockSelect[PIPE_WRITE_FD_INDEX] = -1; - mUartFd = INVALID_FD; - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::MonitorProtocolPacket, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::IpcMissionProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::CutOffPowerSupplyProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::FeedWatchDogProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::FeedingCycleProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::SetDataTimeProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::SetPirSensitivityProtocolHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::ContorlInfraredLightHandle, this, _1, _2, _3, _4)); - mProtocolHandle.push_back(std::bind(&McuProtocolTestTool::GetPhotosensitivityValueHandle, this, _1, _2, _3, _4)); -} -void McuProtocolTestTool::Init(std::shared_ptr &mock, const UartInfo &uart) -{ - std::shared_ptr test = std::make_shared(); - std::shared_ptr tmp = std::dynamic_pointer_cast(test); - ProtocolMonitorTest::Init(tmp); - ProtocolMonitor::GetInstance(&test); - if (pipe(mPipeFdMockSelect) == 0) { - mPipeFdMockSelectInit = true; - } - else { - LogWarning("pipe failed, mPipeFdMockSelect willn,t work.\n"); - } - int uartFd = GetDeviceMockFd(uart); - mUart = std::make_shared(uart); - mUartFd = uartFd; - static size_t WRITE_COUNT = -1; - auto api_write = [=, &mock](int fd, const void *buf, size_t count) { - McuProtocolTestTool::PrintHexadecimalData(buf, count, "app write :"); - CheckSerialNumber(buf, count); - ChecCRC16Code(buf, count); - for (auto iter = mProtocolHandle.begin(); iter != mProtocolHandle.end(); ++iter) { - if ((*iter)(mock, uartFd, buf, count) == PROTOCOL_HANDLED) { - return; - } - } - LogWarning("Can't find protocol handle function.\n"); - }; - EXPECT_CALL(*mock.get(), fx_write(uartFd, _, _)) - .WillRepeatedly( - DoAll(SaveArg<2>(&WRITE_COUNT), WithArgs<0, 1, 2>(Invoke(api_write)), ReturnPointee(&WRITE_COUNT))); - SelectInit(mock, mUartFd); - InitProtocolBuff(); -} -void McuProtocolTestTool::UnInit(void) -{ - if (mLockThread.joinable()) { - mLockThread.join(); - } - if (mUnLockThread.joinable()) { - mUnLockThread.join(); - } - mSerialNumberList.clear(); - if (mPipeFdMockSelectInit) { - mPipeFdMockSelectInit = false; - close(mPipeFdMockSelect[PIPE_READ_FD_INDEX]); - close(mPipeFdMockSelect[PIPE_WRITE_FD_INDEX]); - mPipeFdMockSelect[PIPE_READ_FD_INDEX] = -1; - mPipeFdMockSelect[PIPE_WRITE_FD_INDEX] = -1; - } - mUartFd = INVALID_FD; - std::shared_ptr monitor = std::make_shared(); - ProtocolMonitor::GetInstance(&monitor); -} -void McuProtocolTestTool::MockOtherSideAskIpcMission(std::shared_ptr &mock, const unsigned int &serialNumber) -{ - OtherSideAskIpcMissionHandle(mock, mUartFd, serialNumber); -} -void McuProtocolTestTool::MockOtherSideAskHeartBeat(std::shared_ptr &mock, const unsigned int &serialNumber) -{ - OtherSideAskHeartBeatHandle(mock, mUartFd, serialNumber); -} -void McuProtocolTestTool::MockOtherSideAskGetIntervalStart(std::shared_ptr &mock, - const unsigned int &serialNumber) -{ - OtherSideAskGetIntervalStartHandle(mock, mUartFd, serialNumber); -} -void McuProtocolTestTool::MockOtherSideAskGetDateTime(std::shared_ptr &mock, - const unsigned int &serialNumber) -{ - OtherSideAskGetDateTimeHandle(mock, mUartFd, serialNumber); -} -void McuProtocolTestTool::MockOtherSideAskGetPirSensitivity(std::shared_ptr &mock, - const unsigned int &serialNumber) -{ - OtherSideAskGetPirSensitivityHandle(mock, mUartFd, serialNumber); -} -void McuProtocolTestTool::MockOtherSideAskSendAnyData(std::shared_ptr &mock, const void *data, - const size_t &size) -{ - OtherSideAskSendSomeDataHandle(mock, mUartFd, data, size); -} -void McuProtocolTestTool::ReadNothingAnyTime(std::shared_ptr &mock) -{ - static size_t WRITE_COUNT = -1; - EXPECT_CALL(*mock.get(), fx_write(mUartFd, _, _)) - .WillRepeatedly(DoAll(SaveArg<2>(&WRITE_COUNT), ReturnPointee(&WRITE_COUNT))); - if (mUart) { - UartDeviceTestTool::SetUartDeviceReadNothing(mock, *mUart.get()); - } - else { - LogWarning("mUart is null.\n"); - } -} -void McuProtocolTestTool::InitProtocolBuff(void) -{ - REPLY_IPC_MISSION_X[PROTOCOL_DATA_OFFSET] = 0x01; -} -void McuProtocolTestTool::CheckSerialNumber(const void *buf, const size_t &count) -{ - unsigned int serialNumber = 0; - if (count > PROTOCOL_COMMAND_OFFSET + PROTOCOL_CHECK_CODE_LENGTH) { - memcpy(&serialNumber, (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, PROTOCOL_SERIAL_NUMBER_LENGTH); - for (auto iter = mSerialNumberList.begin(); iter != mSerialNumberList.end(); ++iter) { - EXPECT_NE(*iter, serialNumber); - } - mSerialNumberList.push_back(serialNumber); - } -} -void McuProtocolTestTool::ChecCRC16Code(const void *buf, const size_t &count) -{ - short checkCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - checkCode = ntohs(checkCode); - } - EXPECT_EQ(memcmp((unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &checkCode, PROTOCOL_CHECK_CODE_LENGTH), - 0); -} -void McuProtocolTestTool::ResetCheckCode(const void *buf, const size_t &count) -{ - short checkCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - checkCode = ntohs(checkCode); - } - memcpy((unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &checkCode, PROTOCOL_CHECK_CODE_LENGTH); -} -void McuProtocolTestTool::SelectInit(std::shared_ptr &mock, const int &uartFd) -{ - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - if (false == mPipeFdMockSelectInit) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - } - else { - constexpr int READ_BUF_LENGTH = 256; - constexpr int READ_FAILD = -1; - char buf[READ_BUF_LENGTH] = {0}; - int selectResult = -1; - fd_set fdsRead; - FD_ZERO(&fdsRead); - FD_SET(mPipeFdMockSelect[PIPE_READ_FD_INDEX], &fdsRead); - selectResult = select(mPipeFdMockSelect[PIPE_READ_FD_INDEX] + 1, &fdsRead, NULL, NULL, timeout); - if (selectResult) { - if (false == mPipeFdMockSelectInit) { - LogWarning("mPipeFdMockSelectInit = false.\n"); - return; - } - ssize_t length = read(mPipeFdMockSelect[PIPE_READ_FD_INDEX], buf, READ_BUF_LENGTH); - if (READ_FAILD == length) { - LogError("mPipeFdMockSelect failed.\n"); - return; - } - if ((size_t)length != strlen(gPipeBuf)) { - LogWarning("Something wrong happened.\n"); - } - } - } - }; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); -} -void McuProtocolTestTool::ReplySelectSucceed(std::shared_ptr &mock, const int &uartFd) -{ - auto selectReadable = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - FD_ZERO(readfds); - FD_SET(uartFd, readfds); - }; - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - if (false == mPipeFdMockSelectInit) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - } - else { - constexpr int READ_BUF_LENGTH = 256; - constexpr int READ_FAILD = -1; - char buf[READ_BUF_LENGTH] = {0}; - int selectResult = -1; - fd_set fdsRead; - FD_ZERO(&fdsRead); - FD_SET(mPipeFdMockSelect[PIPE_READ_FD_INDEX], &fdsRead); - selectResult = select(mPipeFdMockSelect[PIPE_READ_FD_INDEX] + 1, &fdsRead, NULL, NULL, timeout); - if (selectResult) { - if (false == mPipeFdMockSelectInit) { - LogWarning("mPipeFdMockSelectInit = false.\n"); - return; - } - ssize_t length = read(mPipeFdMockSelect[PIPE_READ_FD_INDEX], buf, READ_BUF_LENGTH); - if (READ_FAILD == length) { - LogError("mPipeFdMockSelect failed.\n"); - return; - } - if ((size_t)length != strlen(gPipeBuf)) { - LogWarning("Something wrong happened.\n"); - } - } - } - }; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectReadable)), Return(1))) - .WillOnce(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectReadable)), Return(1))) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); - PipeSelectTimeoutForProtocolHandleImmediately(); -} -void McuProtocolTestTool::ReadOnceSelectSucceed(std::shared_ptr &mock, const int &uartFd) -{ - auto selectReadable = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - FD_ZERO(readfds); - FD_SET(uartFd, readfds); - }; - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - if (false == mPipeFdMockSelectInit) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - } - else { - constexpr int READ_BUF_LENGTH = 256; - constexpr int READ_FAILD = -1; - char buf[READ_BUF_LENGTH] = {0}; - int selectResult = -1; - fd_set fdsRead; - FD_ZERO(&fdsRead); - FD_SET(mPipeFdMockSelect[PIPE_READ_FD_INDEX], &fdsRead); - selectResult = select(mPipeFdMockSelect[PIPE_READ_FD_INDEX] + 1, &fdsRead, NULL, NULL, timeout); - if (selectResult) { - if (false == mPipeFdMockSelectInit) { - LogWarning("mPipeFdMockSelectInit = false.\n"); - return; - } - ssize_t length = read(mPipeFdMockSelect[PIPE_READ_FD_INDEX], buf, READ_BUF_LENGTH); - if (READ_FAILD == length) { - LogError("mPipeFdMockSelect failed.\n"); - return; - } - if ((size_t)length != strlen(gPipeBuf)) { - LogWarning("Something wrong happened.\n"); - } - } - } - }; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectReadable)), Return(1))) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); - PipeSelectTimeoutForProtocolHandleImmediately(); -} -void McuProtocolTestTool::MockOtherSideIpcMissionReply(const unsigned char &replyIpcMission) -{ - REPLY_IPC_MISSION_X[PROTOCOL_DATA_OFFSET] = replyIpcMission; -} -void McuProtocolTestTool::ReplySelectTimeOut(std::shared_ptr &mock, const int &uartFd) -{ - if (mUart) { - UartDeviceTestTool::SetUartDeviceTimeOut(mock, *mUart.get()); - } - else { - LogWarning("mUart is null.\n"); - } -} -bool McuProtocolTestTool::MonitorProtocolPacket(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - LogInfo("MonitorProtocolPacket\n"); - short head; - unsigned int serialNumber; - short command; - void *data; - short packetLength; - memcpy(&head, buf, PROTOCOL_HEAD_LENGTH); - memcpy(&serialNumber, (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, PROTOCOL_SERIAL_NUMBER_LENGTH); - memcpy(&command, (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, PROTOCOL_COMMAND_LENGTH); - memcpy(&packetLength, (unsigned char *)buf + PROTOCOL_DATA_LENGTH_OFFSET, PROTOCOL_DATA_LENGTH_LENGTH); - data = (unsigned char *)buf + PROTOCOL_DATA_KEY_HEAD_LENGTH; - head = ntohs(head); - serialNumber = ntohl(serialNumber); - command = ntohs(command); - packetLength = ntohs(packetLength); - ProtocolMonitor::GetInstance()->MonitorWriteProtocolData(head, serialNumber, command, data, packetLength); - return PROTOCOL_NOT_HANDLED; -} -bool McuProtocolTestTool::IpcMissionProtocolHandle(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - if (sizeof(ASK_IPC_MISSION_X) == count && memcmp(ASK_IPC_MISSION_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - LogInfo("Set REPLY_IPC_MISSION_X\n"); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->IpcMissionProtocolInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::IpcMissionProtocolInit(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - LockProtocolHandle(); - LogInfo("IpcMissionProtocolInit start.\n"); - memcpy(REPLY_IPC_MISSION_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - free((void *)buf); - ResetCheckCode(REPLY_IPC_MISSION_X, sizeof(REPLY_IPC_MISSION_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_IPC_MISSION_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_IPC_MISSION_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "IpcMissionProtocolInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_IPC_MISSION_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "IpcMissionProtocolInit read:"); - UnlockProtocolHandle(); - LogInfo("IpcMissionProtocolInit finished.\n"); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -bool McuProtocolTestTool::CutOffPowerSupplyProtocolHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_CUT_OFF_POWER_SUPPLY_X) == count && memcmp(ASK_CUT_OFF_POWER_SUPPLY_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - LogInfo("Set ASK_CUT_OFF_POWER_SUPPLY_X\n"); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -bool McuProtocolTestTool::FeedWatchDogProtocolHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_FEED_WATCH_DOG_X) == count && memcmp(ASK_FEED_WATCH_DOG_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - LogInfo("Set ASK_FEED_WATCH_DOG_X\n"); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -bool McuProtocolTestTool::FeedingCycleProtocolHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_SET_FEEDING_CYCLE_X) == count && memcmp(ASK_SET_FEEDING_CYCLE_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - short replyCheckCode = calculate_check_sum(REPLY_SET_FEEDING_CYCLE_X, - sizeof(REPLY_SET_FEEDING_CYCLE_X) - PROTOCOL_CHECK_CODE_LENGTH); - replyCheckCode = htons(replyCheckCode); - LogInfo("Set ASK_SET_FEEDING_CYCLE_X, reply data check code = 0x%x\n", replyCheckCode); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->FeedingCycleProtocolInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::FeedingCycleProtocolInit(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - LockProtocolHandle(); - LogInfo("FeedingCycleProtocolInit start.\n"); - memcpy(REPLY_SET_FEEDING_CYCLE_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - free((void *)buf); - ResetCheckCode(REPLY_SET_FEEDING_CYCLE_X, sizeof(REPLY_SET_FEEDING_CYCLE_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_SET_FEEDING_CYCLE_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_FEEDING_CYCLE_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "FeedingCycleProtocolInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_FEEDING_CYCLE_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "FeedingCycleProtocolInit read:"); - UnlockProtocolHandle(); - LogInfo("FeedingCycleProtocolInit finished.\n"); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -bool McuProtocolTestTool::SetDataTimeProtocolHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_SET_DATE_TIME_X) == count && memcmp(ASK_SET_DATE_TIME_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - short replyCheckCode = - calculate_check_sum(REPLY_SET_DATE_TIME_X, sizeof(REPLY_SET_DATE_TIME_X) - PROTOCOL_CHECK_CODE_LENGTH); - replyCheckCode = htons(replyCheckCode); - LogInfo("Set ASK_SET_DATE_TIME_X, reply data check code = 0x%x\n", replyCheckCode); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->SetDataTimeProtocolInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::SetDataTimeProtocolInit(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - LockProtocolHandle(); - memcpy(REPLY_SET_DATE_TIME_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - free((void *)buf); - ResetCheckCode(REPLY_SET_DATE_TIME_X, sizeof(REPLY_SET_DATE_TIME_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_SET_DATE_TIME_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_DATE_TIME_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "SetDataTimeProtocolInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_DATE_TIME_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "SetDataTimeProtocolInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -bool McuProtocolTestTool::SetPirSensitivityProtocolHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_SET_PIR_SENSITIVITY_X) == count && memcmp(ASK_SET_PIR_SENSITIVITY_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - short replyCheckCode = calculate_check_sum(REPLY_SET_PIR_SENSITIVITY_X, - sizeof(REPLY_SET_PIR_SENSITIVITY_X) - PROTOCOL_CHECK_CODE_LENGTH); - replyCheckCode = htons(replyCheckCode); - LogInfo("Set ASK_SET_PIR_SENSITIVITY_X, reply data check code = 0x%x\n", replyCheckCode); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - if (ORDER_LITTLE_ENDIAN == ProtocolHandle::GetByteOrder()) { - askCheckCode = ntohs(askCheckCode); - } - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->SetDataTimeProtocolInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::SetPirSensitivityProtocolInit(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - LockProtocolHandle(); - memcpy(REPLY_SET_PIR_SENSITIVITY_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(REPLY_SET_PIR_SENSITIVITY_X, sizeof(REPLY_SET_PIR_SENSITIVITY_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_SET_PIR_SENSITIVITY_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_PIR_SENSITIVITY_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "SetPirSensitivityProtocolInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_SET_PIR_SENSITIVITY_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "SetPirSensitivityProtocolInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -bool McuProtocolTestTool::ContorlInfraredLightHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_CONTORL_INFRARED_LIGHT_X) == count && memcmp(ASK_CONTORL_INFRARED_LIGHT_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - short replyCheckCode = - calculate_check_sum(REPLY_ASK_CONTORL_INFRARED_LIGHT_X, - sizeof(REPLY_ASK_CONTORL_INFRARED_LIGHT_X) - PROTOCOL_CHECK_CODE_LENGTH); - replyCheckCode = htons(replyCheckCode); - LogInfo("Set ASK_CONTORL_INFRARED_LIGHT_X, reply data check code = 0x%x\n", replyCheckCode); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - // askCheckCode = htons(askCheckCode); - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->ContorlInfraredLightInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::ContorlInfraredLightInit(std::shared_ptr &mock, const int &uartFd, const void *buf, - size_t count) -{ - LockProtocolHandle(); - memcpy(REPLY_ASK_CONTORL_INFRARED_LIGHT_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - free((void *)buf); - ResetCheckCode(REPLY_ASK_CONTORL_INFRARED_LIGHT_X, sizeof(REPLY_ASK_CONTORL_INFRARED_LIGHT_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_ASK_CONTORL_INFRARED_LIGHT_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_ASK_CONTORL_INFRARED_LIGHT_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "ContorlInfraredLightInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_ASK_CONTORL_INFRARED_LIGHT_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "ContorlInfraredLightInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -bool McuProtocolTestTool::GetPhotosensitivityValueHandle(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - if (sizeof(ASK_GET_PHOTOSENSITIVITY_X) == count && memcmp(ASK_GET_PHOTOSENSITIVITY_X + PROTOCOL_COMMAND_OFFSET, - (unsigned char *)buf + PROTOCOL_COMMAND_OFFSET, - PROTOCOL_COMMAND_LENGTH) == 0) { - short replyCheckCode = calculate_check_sum( - REPLY_ASK_GET_PHOTOSENSITIVITY_X, sizeof(REPLY_ASK_GET_PHOTOSENSITIVITY_X) - PROTOCOL_CHECK_CODE_LENGTH); - replyCheckCode = htons(replyCheckCode); - LogInfo("Set ASK_GET_PHOTOSENSITIVITY_X, reply data check code = 0x%x\n", replyCheckCode); - short askCheckCode = calculate_check_sum((unsigned char *)buf, count - PROTOCOL_CHECK_CODE_LENGTH); - // askCheckCode = htons(askCheckCode); - int result = memcmp( - (unsigned char *)buf + count - PROTOCOL_CHECK_CODE_LENGTH, &askCheckCode, PROTOCOL_CHECK_CODE_LENGTH); - EXPECT_EQ(result, 0) << "ask protocol data errer, check code isn't right."; - unsigned char *bufHandle = (unsigned char *)malloc(count); - if (nullptr == bufHandle) { - LogError("malloc failed.\n"); - return PROTOCOL_HANDLED; - } - memcpy(bufHandle, buf, count); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->GetPhotosensitivityValueInit(mock, uartFd, bufHandle, count); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); - return PROTOCOL_HANDLED; - } - return PROTOCOL_NOT_HANDLED; -} -void McuProtocolTestTool::GetPhotosensitivityValueInit(std::shared_ptr &mock, const int &uartFd, - const void *buf, size_t count) -{ - LockProtocolHandle(); - memcpy(REPLY_ASK_GET_PHOTOSENSITIVITY_X + PROTOCOL_SERIAL_NUMBER_OFFSET, - (unsigned char *)buf + PROTOCOL_SERIAL_NUMBER_OFFSET, - PROTOCOL_SERIAL_NUMBER_LENGTH); - free((void *)buf); - ResetCheckCode(REPLY_ASK_GET_PHOTOSENSITIVITY_X, sizeof(REPLY_ASK_GET_PHOTOSENSITIVITY_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(REPLY_ASK_GET_PHOTOSENSITIVITY_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_ASK_GET_PHOTOSENSITIVITY_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "GetPhotosensitivityValueInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, REPLY_ASK_GET_PHOTOSENSITIVITY_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "GetPhotosensitivityValueInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); -} -void McuProtocolTestTool::UnlockProtocolHandle(void) -{ - auto unlockThread = [=](McuProtocolTestTool *testTool) { - testTool->UnlockThread(); - }; - if (mUnLockThread.joinable()) { - mUnLockThread.join(); - } - mUnLockThread = std::thread(unlockThread, this); -} -void McuProtocolTestTool::LockProtocolHandle(void) -{ - mMutex.lock(); -} -void McuProtocolTestTool::UnlockThread(void) -{ - std::this_thread::sleep_for(std::chrono::milliseconds(5)); - mMutex.unlock(); -} -void McuProtocolTestTool::PipeSelectTimeoutForProtocolHandleImmediately(void) -{ - constexpr int WRITE_FAILD = -1; - if (true == mPipeFdMockSelectInit) { - ssize_t length = write(mPipeFdMockSelect[PIPE_WRITE_FD_INDEX], gPipeBuf, strlen(gPipeBuf)); - if (WRITE_FAILD == length) { - LogError("mPipeFdMockSelect failed.\n"); - return; - } - if ((size_t)length != strlen(gPipeBuf)) { - LogWarning("Something wrong happened.\n"); - } - } -} -void McuProtocolTestTool::OtherSideAskIpcMissionHandle(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LogInfo("OtherSideAskIpcMissionHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskIpcMissionInit(mock, uartFd, serialNumber); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskIpcMissionInit(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LockProtocolHandle(); - LogInfo("OtherSideAskIpcMissionInit start.\n"); - unsigned int serialNum = serialNumber; - serialNum = htonl(serialNum); - memcpy( - OTHER_SIDE_ASK_SEND_IPC_MISSION_X + PROTOCOL_SERIAL_NUMBER_OFFSET, &serialNum, PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(OTHER_SIDE_ASK_SEND_IPC_MISSION_X, sizeof(OTHER_SIDE_ASK_SEND_IPC_MISSION_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(OTHER_SIDE_ASK_SEND_IPC_MISSION_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_SEND_IPC_MISSION_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "OtherSideAskIpcMissionInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_SEND_IPC_MISSION_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "OtherSideAskIpcMissionInit read:"); - UnlockProtocolHandle(); - LogInfo("OtherSideAskIpcMissionInit finished.\n"); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); - std::shared_ptr test = - std::dynamic_pointer_cast(ProtocolMonitorTest::GetInstance()); - if (test) { - ProtocolMonitorTest::WriteDataOnce(test, - PROTOCOL_HEAD, - serialNumber, - REPLY_OTHER_SIDE_ASK_SEND_IPC_MISSION, - nullptr, - sizeof(REPLY_OTHER_SIDE_ASK_SEND_IPC_MISSION_X)); - } -} -void McuProtocolTestTool::OtherSideAskHeartBeatHandle(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LogInfo("OtherSideAskHeartBeatHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskHeartBeatInit(mock, uartFd, serialNumber); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskHeartBeatInit(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LockProtocolHandle(); - unsigned int serialNum = serialNumber; - serialNum = htonl(serialNum); - memcpy(OTHER_SIDE_ASK_SEND_HEART_BEAT_X + PROTOCOL_SERIAL_NUMBER_OFFSET, &serialNum, PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(OTHER_SIDE_ASK_SEND_HEART_BEAT_X, sizeof(OTHER_SIDE_ASK_SEND_HEART_BEAT_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(OTHER_SIDE_ASK_SEND_HEART_BEAT_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_SEND_HEART_BEAT_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "OtherSideAskHeartBeatInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_SEND_HEART_BEAT_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "OtherSideAskHeartBeatInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); - std::shared_ptr test = - std::dynamic_pointer_cast(ProtocolMonitorTest::GetInstance()); - if (test) { - ProtocolMonitorTest::WriteDataOnce(test, - PROTOCOL_HEAD, - serialNumber, - REPLY_OTHER_SIDE_ASK_SEND_HEART_BEAT, - nullptr, - sizeof(REPLY_OTHER_SIDE_ASK_SEND_HEART_BEAT_X)); - } -} -void McuProtocolTestTool::OtherSideAskGetIntervalStartHandle(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LogInfo("OtherSideAskGetIntervalStartHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskGetIntervalStartInit(mock, uartFd, serialNumber); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskGetIntervalStartInit(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LockProtocolHandle(); - unsigned int serialNum = serialNumber; - serialNum = htonl(serialNum); - memcpy( - OTHER_SIDE_ASK_GET_INTERVAL_START_X + PROTOCOL_SERIAL_NUMBER_OFFSET, &serialNum, PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(OTHER_SIDE_ASK_GET_INTERVAL_START_X, sizeof(OTHER_SIDE_ASK_GET_INTERVAL_START_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(OTHER_SIDE_ASK_GET_INTERVAL_START_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_INTERVAL_START_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "OtherSideAskGetIntervalStartInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_INTERVAL_START_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "OtherSideAskGetIntervalStartInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); - std::shared_ptr test = - std::dynamic_pointer_cast(ProtocolMonitorTest::GetInstance()); - if (test) { - ProtocolMonitorTest::WriteDataOnce(test, - PROTOCOL_HEAD, - serialNumber, - REPLY_OTHER_SIDE_ASK_GET_INTERVAL_START, - nullptr, - sizeof(REPLY_OTHER_SIDE_ASK_GET_INTERVAL_START_X)); - } -} -void McuProtocolTestTool::OtherSideAskGetDateTimeHandle(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LogInfo("OtherSideAskGetDateTimeHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskGetDateTimeInit(mock, uartFd, serialNumber); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskGetDateTimeInit(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LockProtocolHandle(); - unsigned int serialNum = serialNumber; - serialNum = htonl(serialNum); - memcpy(OTHER_SIDE_ASK_GET_DATE_TIME_X + PROTOCOL_SERIAL_NUMBER_OFFSET, &serialNum, PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(OTHER_SIDE_ASK_GET_DATE_TIME_X, sizeof(OTHER_SIDE_ASK_GET_DATE_TIME_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(OTHER_SIDE_ASK_GET_DATE_TIME_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_DATE_TIME_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "OtherSideAskGetDateTimeInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_DATE_TIME_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "OtherSideAskGetDateTimeInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); - std::shared_ptr test = - std::dynamic_pointer_cast(ProtocolMonitorTest::GetInstance()); - if (test) { - ProtocolMonitorTest::WriteDataOnce(test, - PROTOCOL_HEAD, - serialNumber, - REPLY_OTHER_SIDE_ASK_GET_DATE_TIME, - nullptr, - sizeof(REPLY_OTHER_SIDE_ASK_GET_DATE_TIME_X)); - } -} -void McuProtocolTestTool::OtherSideAskGetPirSensitivityHandle(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LogInfo("OtherSideAskGetPirSensitivityHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskGetPirSensitivityInit(mock, uartFd, serialNumber); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskGetPirSensitivityInit(std::shared_ptr &mock, const int &uartFd, - const unsigned int &serialNumber) -{ - LockProtocolHandle(); - unsigned int serialNum = serialNumber; - serialNum = htonl(serialNum); - memcpy(OTHER_SIDE_ASK_GET_SENSITIVITY_X + PROTOCOL_SERIAL_NUMBER_OFFSET, &serialNum, PROTOCOL_SERIAL_NUMBER_LENGTH); - ResetCheckCode(OTHER_SIDE_ASK_GET_SENSITIVITY_X, sizeof(OTHER_SIDE_ASK_GET_SENSITIVITY_X)); - constexpr int LEFT_DATA_LENGTH = sizeof(OTHER_SIDE_ASK_GET_SENSITIVITY_X) - PROTOCOL_DATA_KEY_HEAD_LENGTH; - auto apiReadKeyHead = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_SENSITIVITY_X, PROTOCOL_DATA_KEY_HEAD_LENGTH); - McuProtocolTestTool::PrintHexadecimalData( - buf, PROTOCOL_DATA_KEY_HEAD_LENGTH, "OtherSideAskGetPirSensitivityInit read:"); - }; - auto apiReadLeftData = [=](int fd, void *buf, size_t count) { - memcpy(buf, OTHER_SIDE_ASK_GET_SENSITIVITY_X + PROTOCOL_DATA_KEY_HEAD_LENGTH, LEFT_DATA_LENGTH); - McuProtocolTestTool::PrintHexadecimalData(buf, LEFT_DATA_LENGTH, "OtherSideAskGetPirSensitivityInit read:"); - UnlockProtocolHandle(); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadKeyHead)), Return(PROTOCOL_DATA_KEY_HEAD_LENGTH))) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), Return(LEFT_DATA_LENGTH))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - ReplySelectSucceed(mock, uartFd); - std::shared_ptr test = - std::dynamic_pointer_cast(ProtocolMonitorTest::GetInstance()); - if (test) { - ProtocolMonitorTest::WriteDataOnce(test, - PROTOCOL_HEAD, - serialNumber, - REPLY_OTHER_SIDE_ASK_GET_PIR_SENSITIVITY, - nullptr, - sizeof(REPLY_OTHER_SIDE_ASK_GET_SENSITIVITY_X)); - } -} -void McuProtocolTestTool::OtherSideAskSendSomeDataHandle(std::shared_ptr &mock, const int &uartFd, - const void *data, const size_t &size) -{ - LogInfo("OtherSideAskSendSomeDataHandle\n"); - auto handle = [=, &mock](McuProtocolTestTool *testTool) { - testTool->OtherSideAskSendSomeDataInit(mock, uartFd, data, size); - }; - if (mLockThread.joinable()) { - mLockThread.join(); - } - mLockThread = std::thread(handle, this); -} -void McuProtocolTestTool::OtherSideAskSendSomeDataInit(std::shared_ptr &mock, const int &uartFd, - const void *data, const size_t &size) -{ - LockProtocolHandle(); - static size_t totalLength = 0; - static size_t leftDataLength = 0; - static size_t readResult = 0; - totalLength = size; - leftDataLength = totalLength; - readResult = 0; - auto apiReadLeftData = [this, data, &mock, uartFd](int fd, void *buf, size_t count) { - if (leftDataLength >= count) { - memcpy(buf, (unsigned char *)data + totalLength - leftDataLength, count); - readResult = count; - leftDataLength = leftDataLength - count; - McuProtocolTestTool::PrintHexadecimalData(buf, count, "OtherSideAskSendSomeDataInit read:"); - } - else { - memcpy(buf, (unsigned char *)data + totalLength - leftDataLength, leftDataLength); - readResult = leftDataLength; - leftDataLength = 0; - McuProtocolTestTool::PrintHexadecimalData(buf, readResult, "OtherSideAskSendSomeDataInit2 read:"); - } - if (leftDataLength > 0) { - this->ReadOnceSelectSucceed(mock, uartFd); - } - else { - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)).WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - UnlockProtocolHandle(); - } - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2>(Invoke(apiReadLeftData)), ReturnPointee(&readResult))); - ReadOnceSelectSucceed(mock, uartFd); -} -void McuProtocolTestTool::PrintHexadecimalData(const void *buf, const size_t &bufLength, const char *log) -{ - printf("%s { 0x%02X", log, *(unsigned char *)buf); - for (size_t i = 1; i < bufLength; i++) { - printf(", 0x%02X", *((unsigned char *)buf + i)); - } - printf(" }\n"); -} \ No newline at end of file diff --git a/test/utils/McuProtocol/tool/src/ProtocolMonitor.cpp b/test/utils/McuProtocol/tool/src/ProtocolMonitor.cpp deleted file mode 100644 index 4147030..0000000 --- a/test/utils/McuProtocol/tool/src/ProtocolMonitor.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "ProtocolMonitor.h" -#include "ILog.h" -static void PrintHexadecimalData(const void *buf, const size_t &bufLength, const char *log) -{ - printf("%s { 0x%02X", log, *(unsigned char *)buf); - for (size_t i = 1; i < bufLength; i++) { - printf(", 0x%02X", *((unsigned char *)buf + i)); - } - printf(" }\n"); -} -std::shared_ptr &ProtocolMonitor::GetInstance(std::shared_ptr *impl) -{ - static auto instance = std::make_shared(); - if (impl) { - if (instance.use_count() == 1) { - LogInfo("Instance changed succeed.\n"); - instance = *impl; - } - else { - LogError("Can't changing the instance becase of using by some one.\n"); - } - } - return instance; -} -void ProtocolMonitor::MonitorWriteProtocolData(const short &head, const unsigned int &serialNumber, - const short &command, const void *data, const short &packetLength) -{ -} -void ProtocolMonitorTest::Init(std::shared_ptr &test) -{ - auto printfParam = [=](const short &head, - const unsigned int &serialNumber, - const short &command, - const void *data, - const short &packetLength) { - LogInfo("MonitorWriteProtocolData called.\n"); - PrintHexadecimalData(&head, sizeof(head), "MonitorWriteProtocolData(head):"); - PrintHexadecimalData(&serialNumber, sizeof(serialNumber), "MonitorWriteProtocolData(serialNumber):"); - PrintHexadecimalData(&command, sizeof(command), "MonitorWriteProtocolData(command):"); - PrintHexadecimalData(&packetLength, sizeof(packetLength), "MonitorWriteProtocolData(packetLength):"); - }; - EXPECT_CALL(*test.get(), MonitorWriteProtocolData(_, _, _, _, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(printfParam)), Return())); -} -void ProtocolMonitorTest::WriteDataOnce(std::shared_ptr &test, const short &head, - const unsigned int &serialNumber, const short &command, const void *data, - const short &packetLength) -{ - auto printfParam = [=](const short &head, - const unsigned int &serialNumber, - const short &command, - const void *data, - const short &packetLength) { - }; - PrintHexadecimalData(&head, sizeof(head), "WriteDataOnce(head):"); - PrintHexadecimalData(&serialNumber, sizeof(serialNumber), "WriteDataOnce(serialNumber):"); - PrintHexadecimalData(&command, sizeof(command), "WriteDataOnce(command):"); - PrintHexadecimalData(&packetLength, sizeof(packetLength), "WriteDataOnce(packetLength):"); - EXPECT_CALL(*test.get(), MonitorWriteProtocolData(head, serialNumber, command, _, packetLength)) - .Times(1) - .WillOnce(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(printfParam)), Return())); -} \ No newline at end of file diff --git a/test/utils/McuProtocol/tool/src/ProtocolMonitor.h b/test/utils/McuProtocol/tool/src/ProtocolMonitor.h deleted file mode 100644 index 3d49168..0000000 --- a/test/utils/McuProtocol/tool/src/ProtocolMonitor.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef PROTOCOL_MONITOR_H -#define PROTOCOL_MONITOR_H -#include "GtestUsing.h" -#include -class ProtocolMonitor -{ -public: - ProtocolMonitor() = default; - virtual ~ProtocolMonitor() = default; - static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); - /** - * @brief This function is used to monitor whether the data written to the serial port matches the protocol and - * belongs to a piling function. - * @param head Whether to match the protocol header. - * @param serialNumber Whether to match the serial number. - * @param command Whether to match command words. - * @param data - * @param packetLength Whether to match the packet length. - */ - virtual void MonitorWriteProtocolData(const short &head, const unsigned int &serialNumber, const short &command, - const void *data, const short &packetLength); -}; -class ProtocolMonitorTest : public ProtocolMonitor -{ -public: - ProtocolMonitorTest() = default; - virtual ~ProtocolMonitorTest() = default; - MOCK_METHOD5(MonitorWriteProtocolData, - void(const short &, const unsigned int &, const short &, const void *, const short &)); - -public: - static void Init(std::shared_ptr &test); - static void WriteDataOnce(std::shared_ptr &test, const short &head, - const unsigned int &serialNumber, const short &command, const void *data, - const short &packetLength); -}; -#endif \ No newline at end of file diff --git a/test/utils/UartDevice/tool/CMakeLists.txt b/test/utils/UartDevice/tool/CMakeLists.txt deleted file mode 100644 index a3cea16..0000000 --- a/test/utils/UartDevice/tool/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) -set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) -set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) - -include_directories( - ./src - ./include - ${UTILS_SOURCE_PATH}/StatusCode/include - ${UTILS_SOURCE_PATH}/Log/include - ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include - ${TEST_SOURCE_PATH} -) -# link_directories( -# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs -# ) - -aux_source_directory(./src TEST_TOOL_SRC_FILES) -set(TEST_TOOL_TARGET UartDeviceTestTool) -add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES}) -target_link_libraries(${TEST_TOOL_TARGET} LinuxApiMock Log) - -if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") -add_custom_target( - UartDeviceTestTool_code_check - COMMAND ${CLANG_TIDY_EXE} - -checks='${CLANG_TIDY_CHECKS}' - --header-filter=.* - --system-headers=false - ${TEST_TOOL_SRC_FILES} - ${CLANG_TIDY_CONFIG} - -p ${PLATFORM_PATH}/cmake-shell - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/UartDevice/tool -) -file(GLOB_RECURSE HEADER_FILES *.h) -add_custom_target( - UartDeviceTestTool_code_format - COMMAND ${CLANG_FORMAT_EXE} - -style=file - -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES} - WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/UartDevice/tool -) -add_custom_command( - TARGET ${TEST_TOOL_TARGET} - PRE_BUILD - COMMAND make UartDeviceTestTool_code_check - COMMAND make UartDeviceTestTool_code_format - WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ -) -endif() - -define_file_name(${TEST_TOOL_TARGET}) \ No newline at end of file diff --git a/test/utils/UartDevice/tool/src/UartDeviceTestTool.cpp b/test/utils/UartDevice/tool/src/UartDeviceTestTool.cpp deleted file mode 100644 index 2ab1bb3..0000000 --- a/test/utils/UartDevice/tool/src/UartDeviceTestTool.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2023 Fancy Code. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "UartDeviceTestTool.h" -#include "ILog.h" -#include -static size_t WRITE_COUNT = -1; -constexpr int INVALID_FD = -1; -int UartDeviceTestTool::RegisterUartDevice(std::shared_ptr &mock, const UartInfo &uart) -{ - if (nullptr == uart.mDevice) { - LogError("Parament error, nullptr == uartInfo.mDevice\n"); - return INVALID_FD; - } - constexpr int TCGETATTR_SUCCEED = 0; - constexpr int TCSETATTR_SUCCEED = 0; - int uartFd = mock->GetHandleForMock(); - LogInfo("device = %s, uartFd = %d\n", uart.mDevice, uartFd); - EXPECT_CALL(*mock.get(), fx_open(uart.mDevice, _)).WillRepeatedly(DoAll((Return(uartFd)))); - EXPECT_CALL(*mock.get(), fx_tcgetattr(uartFd, _)).WillRepeatedly(DoAll(Return(TCGETATTR_SUCCEED))); - EXPECT_CALL(*mock.get(), fx_tcsetattr(uartFd, _, _)).WillRepeatedly(DoAll(Return(TCSETATTR_SUCCEED))); - EXPECT_CALL(*mock.get(), fx_write(uartFd, _, _)) - .WillRepeatedly(DoAll(SaveArg<2>(&WRITE_COUNT), ReturnPointee(&WRITE_COUNT))); - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - }; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)).WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); - mDeviceMap[uart.mDevice] = uartFd; - return uartFd; -} -int UartDeviceTestTool::GetDeviceMockFd(const UartInfo &uart) -{ - std::map::iterator iter; - iter = mDeviceMap.find(uart.mDevice); - if (iter == mDeviceMap.end()) { - LogError("Can't found the uart device[%s].\n", uart.mDevice); - return INVALID_FD; - } - return mDeviceMap[uart.mDevice]; -} -void UartDeviceTestTool::UnregisterUartDevice(const UartInfo &uart) -{ - std::map::iterator iter; - iter = mDeviceMap.find(uart.mDevice); - if (iter != mDeviceMap.end()) { - mDeviceMap.erase(iter); - return; - } - LogError("Can't found the uart device[%s].\n", uart.mDevice); -} -void UartDeviceTestTool::SetSendApiOnce(std::shared_ptr &mock, const UartInfo &uart, const ssize_t &length) -{ - std::map::iterator iter; - iter = mDeviceMap.find(uart.mDevice); - if (iter == mDeviceMap.end()) { - LogError("Can't found the uart device[%s].\n", uart.mDevice); - return; - } - EXPECT_CALL(*mock.get(), fx_write(mDeviceMap[uart.mDevice], _, _)) - .WillOnce(DoAll(Return(length))) - .WillRepeatedly(DoAll(SaveArg<2>(&WRITE_COUNT), ReturnPointee(&WRITE_COUNT))); -} -void UartDeviceTestTool::SetRecvApiOnce(std::shared_ptr &mock, const UartInfo &uart, void *recvBuff, - const ssize_t &length) -{ - std::map::iterator iter; - iter = mDeviceMap.find(uart.mDevice); - if (iter == mDeviceMap.end()) { - LogError("Can't found the uart device[%s].\n", uart.mDevice); - return; - } - int uartFd = mDeviceMap[uart.mDevice]; - auto selectSucceed = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - FD_ZERO(readfds); - FD_SET(uartFd, readfds); - }; - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - }; - constexpr int SELECT_READABLE = 1; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectSucceed)), Return(SELECT_READABLE))) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); - auto readBuf = [=, &mock](int fd, void *buf, size_t count) { - memcpy(buf, recvBuff, length); - }; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)) - .WillOnce(DoAll(WithArgs<0, 1, 2>(Invoke(readBuf)), Return(length))) - .WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); -} -void UartDeviceTestTool::SetUartDeviceOpenFailed(std::shared_ptr &mock, const UartInfo &uart) -{ - LogInfo("SetUartDeviceOpenFailed[%s], will return -1\n", uart.mDevice); - EXPECT_CALL(*mock.get(), fx_open(uart.mDevice, _)).WillRepeatedly(DoAll((Return(-1)))); -} -void UartDeviceTestTool::SetUartDeviceReadNothing(std::shared_ptr &mock, const UartInfo &uart) -{ - SetUartDeviceTimeOut(mock, uart); - int uartFd = mDeviceMap[uart.mDevice]; - EXPECT_CALL(*mock.get(), fx_read(uartFd, _, _)).WillRepeatedly(DoAll(Return(UART_DEVICE_READ_NOTHING))); -} -void UartDeviceTestTool::SetUartDeviceTimeOut(std::shared_ptr &mock, const UartInfo &uart) -{ - int uartFd = mDeviceMap[uart.mDevice]; - auto selectTimeOut = - [=, &mock](int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { - long long timeMs = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; - std::this_thread::sleep_for(std::chrono::milliseconds(timeMs)); - }; - EXPECT_CALL(*mock.get(), fx_select(uartFd + 1, _, _, _, _)) - .WillRepeatedly(DoAll(WithArgs<0, 1, 2, 3, 4>(Invoke(selectTimeOut)), Return(MOCK_SELECT_TIME_OUT))); -} \ No newline at end of file