From 82b6cf466318e3e7504b0770d2764eb0ecf22a61 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Tue, 5 Mar 2024 19:01:11 -0800 Subject: [PATCH] Improve:AppManager test code. --- .../MissionManager/src/MissionState.cpp | 29 ++++++++++++++ application/MissionManager/src/MissionState.h | 28 +++++++++++++ .../MissionManager/src/TestMissionState.cpp | 8 ++-- .../MissionManager/src/TestMissionState.h | 4 +- .../application/HunttingCamera/CMakeLists.txt | 3 +- .../src_mock/HunttingCamera_Mock_Test.cpp | 8 +++- .../tool/src/AppManagerTestTool.cpp | 40 +++++++++++-------- .../AppManager/tool/src/AppMonitorMock.cpp | 32 +++++++-------- .../AppManager/tool/src/AppMonitorMock.h | 31 ++++++++------ 9 files changed, 130 insertions(+), 53 deletions(-) create mode 100644 application/MissionManager/src/MissionState.cpp create mode 100644 application/MissionManager/src/MissionState.h diff --git a/application/MissionManager/src/MissionState.cpp b/application/MissionManager/src/MissionState.cpp new file mode 100644 index 0000000..658c8cd --- /dev/null +++ b/application/MissionManager/src/MissionState.cpp @@ -0,0 +1,29 @@ +/* + * 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 "MissionState.h" +#include "IAppManager.h" +#include "ILog.h" +MissionState::MissionState(const std::string &name) : State(name) {} +void MissionState::GoInState() +{ + // + LogInfo(" ========== MissionState::GoInState.\n"); +} +void MissionState::GoOutState() +{ + // + LogInfo(" ========== MissionState::GoOutState.\n"); +} +bool MissionState::ExecuteStateMsg(VStateMachineData *msg) { return DataProcessing::EventHandle(msg); } \ No newline at end of file diff --git a/application/MissionManager/src/MissionState.h b/application/MissionManager/src/MissionState.h new file mode 100644 index 0000000..ab4e897 --- /dev/null +++ b/application/MissionManager/src/MissionState.h @@ -0,0 +1,28 @@ +/* + * 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_STATE_H +#define MISSION_STATE_H +#include "DataProcessing.h" +#include "IStateMachine.h" +class MissionState : public State, public DataProcessing +{ +public: + MissionState(const std::string &name); + virtual ~MissionState() = default; + void GoInState() override; + void GoOutState() override; + bool ExecuteStateMsg(VStateMachineData *msg) override; +}; +#endif \ No newline at end of file diff --git a/application/MissionManager/src/TestMissionState.cpp b/application/MissionManager/src/TestMissionState.cpp index 16853f2..af63361 100644 --- a/application/MissionManager/src/TestMissionState.cpp +++ b/application/MissionManager/src/TestMissionState.cpp @@ -15,17 +15,17 @@ #include "TestMissionState.h" #include "IAppManager.h" #include "ILog.h" -TestMissionState::TestMissionState() : State("TestMissionState") {} +TestMissionState::TestMissionState() : MissionState("TestMissionState") {} void TestMissionState::GoInState() { - // + MissionState::GoInState(); LogInfo(" ========== TestMissionState::GoInState.\n"); AppParam mAppParam("192.168.1.29", APP_MANAGER_HTTP_SERVER_PORT); // TODO: IAppManager::GetInstance()->Init(mAppParam); } void TestMissionState::GoOutState() { - // + MissionState::GoOutState(); LogInfo(" ========== TestMissionState::GoOutState.\n"); } -bool TestMissionState::ExecuteStateMsg(VStateMachineData *msg) { return DataProcessing::EventHandle(msg); } \ No newline at end of file +bool TestMissionState::ExecuteStateMsg(VStateMachineData *msg) { return MissionState::EventHandle(msg); } \ No newline at end of file diff --git a/application/MissionManager/src/TestMissionState.h b/application/MissionManager/src/TestMissionState.h index 44f2cce..56b96f0 100644 --- a/application/MissionManager/src/TestMissionState.h +++ b/application/MissionManager/src/TestMissionState.h @@ -15,9 +15,9 @@ #ifndef TEST_MISSION_STATE_H #define TEST_MISSION_STATE_H #include "AppMonitor.h" -#include "DataProcessing.h" #include "IStateMachine.h" -class TestMissionState : public State, public DataProcessing, public AppMonitor +#include "MissionState.h" +class TestMissionState : public MissionState, public AppMonitor { public: TestMissionState(); diff --git a/test/application/HunttingCamera/CMakeLists.txt b/test/application/HunttingCamera/CMakeLists.txt index 5bf5957..3eeea30 100644 --- a/test/application/HunttingCamera/CMakeLists.txt +++ b/test/application/HunttingCamera/CMakeLists.txt @@ -13,6 +13,7 @@ include_directories( ${UTILS_SOURCE_PATH}/UartDevice/include ${TEST_SOURCE_PATH} ${TEST_SOURCE_PATH}/middleware/McuManager/tool/include + ${TEST_SOURCE_PATH}/middleware/AppManager/tool/include ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include ${TEST_SOURCE_PATH}/utils/TestManager/include ${TEST_SOURCE_PATH}/utils/McuProtocol/tool/include @@ -34,7 +35,7 @@ endif() set(TARGET_NAME HunttingCameraTest) add_executable(${TARGET_NAME} ${SRC_FILES_MAIN} ${SRC_FILES}) -target_link_libraries(${TARGET_NAME} HunttingMainLib McuManagerTestTool McuAskBaseTestTool TestManager gtest gmock pthread) +target_link_libraries(${TARGET_NAME} HunttingMainLib McuManagerTestTool McuAskBaseTestTool AppManagerTestTool TestManager gtest gmock pthread) if(${TEST_COVERAGE} MATCHES "true") target_link_libraries(${TARGET_NAME} gcov) endif() diff --git a/test/application/HunttingCamera/src_mock/HunttingCamera_Mock_Test.cpp b/test/application/HunttingCamera/src_mock/HunttingCamera_Mock_Test.cpp index e066971..e580375 100644 --- a/test/application/HunttingCamera/src_mock/HunttingCamera_Mock_Test.cpp +++ b/test/application/HunttingCamera/src_mock/HunttingCamera_Mock_Test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include "AppManagerTestTool.h" #include "GtestUsing.h" #include "ILog.h" #include "MainThread.h" @@ -20,7 +21,10 @@ #include namespace HunttingCameraTest { -class HunttingCameraTest : public testing::Test, public TestManager, public McuManagerTestTool +class HunttingCameraTest : public testing::Test, + public TestManager, + public McuManagerTestTool, + public AppManagerTestTool { public: HunttingCameraTest() {} @@ -68,6 +72,8 @@ TEST_F(HunttingCameraTest, INTEGRATION_DeviceManager_EXAMPLE_Demo) { MainThread::GetInstance()->Init(); TestManager::ResetTimeOut(1000 * 3); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + MockGetMediaInfo(); MainThread::GetInstance()->Runing(); } } // namespace HunttingCameraTest \ No newline at end of file diff --git a/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp b/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp index adbf105..56d3232 100644 --- a/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp +++ b/test/middleware/AppManager/tool/src/AppManagerTestTool.cpp @@ -106,7 +106,7 @@ void AppManagerTestTool::MockSetTimeZone(void) LogError("vMock error.\n"); return; } - EXPECT_CALL(*mock.get(), SetDateTimeTrace(_)) + EXPECT_CALL(*mock.get(), SetTimeZoneTrace(_)) .Times(ONLY_BE_CALLED_ONCE) .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); ServersMock::GetInstance()->MockSetTimeZone(); @@ -125,7 +125,8 @@ void AppManagerTestTool::AppManagerMockInit(std::shared_ptr &vMock) } auto getAppMonitor = [=](std::shared_ptr &monitor) { LogInfo("mAppMonitorMock get.\n"); - mAppMonitorMock = std::dynamic_pointer_cast(monitor); + // mAppMonitorMock = std::dynamic_pointer_cast(monitor); + mAppMonitorMock = monitor; AppManagerTestTool::AppMonitorInit(mAppMonitorMock); }; EXPECT_CALL(*mock.get(), SetAppMonitorTrace(_)) @@ -134,27 +135,32 @@ void AppManagerTestTool::AppManagerMockInit(std::shared_ptr &vMock) } std::shared_ptr AppManagerTestTool::MakeMonitorMock(void) { - auto monitor = std::make_shared(); - EXPECT_CALL(*monitor.get(), GetProductInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), GetDeviceAttrTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), GetMediaInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), GetSdCardInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), GetBatteryInfoTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), SetDateTimeTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); - EXPECT_CALL(*monitor.get(), UploadFileTrace(_)) - .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); + class Monitor : public AppMonitorMock, public AppMonitorTest + { + public: + Monitor() = default; + virtual ~Monitor() = default; + }; + std::shared_ptr monitor = std::make_shared(); + // auto result = std::dynamic_pointer_cast(monitor); 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(), 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(), UploadFileTrace(_)) .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION)))); } diff --git a/test/middleware/AppManager/tool/src/AppMonitorMock.cpp b/test/middleware/AppManager/tool/src/AppMonitorMock.cpp index c9dafc9..5185208 100644 --- a/test/middleware/AppManager/tool/src/AppMonitorMock.cpp +++ b/test/middleware/AppManager/tool/src/AppMonitorMock.cpp @@ -23,9 +23,9 @@ StatusCode AppMonitorTest::GetProductInfo(AppGetProductInfo ¶m) } return code; } -StatusCode AppMonitorTest::GetProductInfoTrace(AppGetProductInfo ¶m) +StatusCode AppMonitorTrace::GetProductInfoTrace(AppGetProductInfo ¶m) { - LogInfo("AppMonitorTest::GetProductInfoTrace\n"); + LogInfo("AppMonitorTrace::GetProductInfoTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::GetDeviceAttr(AppGetDeviceAttr ¶m) @@ -37,9 +37,9 @@ StatusCode AppMonitorTest::GetDeviceAttr(AppGetDeviceAttr ¶m) } return code; } -StatusCode AppMonitorTest::GetDeviceAttrTrace(AppGetDeviceAttr ¶m) +StatusCode AppMonitorTrace::GetDeviceAttrTrace(AppGetDeviceAttr ¶m) { - LogInfo("AppMonitorTest::GetDeviceAttrTrace\n"); + LogInfo("AppMonitorTrace::GetDeviceAttrTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::GetMediaInfo(AppGetMeidaInfo ¶m) @@ -51,9 +51,9 @@ StatusCode AppMonitorTest::GetMediaInfo(AppGetMeidaInfo ¶m) } return code; } -StatusCode AppMonitorTest::GetMediaInfoTrace(AppGetMeidaInfo ¶m) +StatusCode AppMonitorTrace::GetMediaInfoTrace(AppGetMeidaInfo ¶m) { - LogInfo("AppMonitorTest::GetMediaInfoTrace\n"); + LogInfo("AppMonitorTrace::GetMediaInfoTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::GetSdCardInfo(AppGetSdCardInfo ¶m) @@ -65,9 +65,9 @@ StatusCode AppMonitorTest::GetSdCardInfo(AppGetSdCardInfo ¶m) } return code; } -StatusCode AppMonitorTest::GetSdCardInfoTrace(AppGetSdCardInfo ¶m) +StatusCode AppMonitorTrace::GetSdCardInfoTrace(AppGetSdCardInfo ¶m) { - LogInfo("AppMonitorTest::GetSdCardInfoTrace\n"); + LogInfo("AppMonitorTrace::GetSdCardInfoTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::GetBatteryInfo(AppGetBatteryInfo ¶m) @@ -79,9 +79,9 @@ StatusCode AppMonitorTest::GetBatteryInfo(AppGetBatteryInfo ¶m) } return code; } -StatusCode AppMonitorTest::GetBatteryInfoTrace(AppGetBatteryInfo ¶m) +StatusCode AppMonitorTrace::GetBatteryInfoTrace(AppGetBatteryInfo ¶m) { - LogInfo("AppMonitorTest::GetBatteryInfoTrace\n"); + LogInfo("AppMonitorTrace::GetBatteryInfoTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::SetDateTime(AppSetDateTime ¶m) @@ -99,9 +99,9 @@ StatusCode AppMonitorTest::SetDateTime(AppSetDateTime ¶m) } return code; } -StatusCode AppMonitorTest::SetDateTimeTrace(AppSetDateTime ¶m) +StatusCode AppMonitorTrace::SetDateTimeTrace(AppSetDateTime ¶m) { - LogInfo("AppMonitorTest::SetDateTimeTrace\n"); + LogInfo("AppMonitorTrace::SetDateTimeTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::SetTimeZone(const unsigned int &zone) @@ -113,9 +113,9 @@ StatusCode AppMonitorTest::SetTimeZone(const unsigned int &zone) } return code; } -StatusCode AppMonitorTest::SetTimeZoneTrace(const unsigned int &zone) +StatusCode AppMonitorTrace::SetTimeZoneTrace(const unsigned int &zone) { - LogInfo("AppMonitorTest::SetTimeZoneTrace\n"); + LogInfo("AppMonitorTrace::SetTimeZoneTrace\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } StatusCode AppMonitorTest::UploadFile(AppUploadFile ¶m) @@ -127,8 +127,8 @@ StatusCode AppMonitorTest::UploadFile(AppUploadFile ¶m) } return code; } -StatusCode AppMonitorTest::UploadFileTrace(AppUploadFile ¶m) +StatusCode AppMonitorTrace::UploadFileTrace(AppUploadFile ¶m) { - LogInfo("AppMonitorTest::UploadFileTrace\n"); + LogInfo("AppMonitorTrace::UploadFileTrace\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 index a8fde72..42add15 100644 --- a/test/middleware/AppManager/tool/src/AppMonitorMock.h +++ b/test/middleware/AppManager/tool/src/AppMonitorMock.h @@ -16,7 +16,23 @@ #define APP_MONITOR_MOCK_H #include "GtestUsing.h" #include "IAppManager.h" -class AppMonitorTest : public VAppMonitor +class AppMonitorTrace +{ +public: + AppMonitorTrace() = default; + virtual ~AppMonitorTrace() = default; + +protected: + virtual StatusCode GetProductInfoTrace(AppGetProductInfo ¶m); + virtual StatusCode GetDeviceAttrTrace(AppGetDeviceAttr ¶m); + virtual StatusCode GetMediaInfoTrace(AppGetMeidaInfo ¶m); + virtual StatusCode GetSdCardInfoTrace(AppGetSdCardInfo ¶m); + virtual StatusCode GetBatteryInfoTrace(AppGetBatteryInfo ¶m); + virtual StatusCode SetDateTimeTrace(AppSetDateTime ¶m); + virtual StatusCode SetTimeZoneTrace(const unsigned int &zone); + virtual StatusCode UploadFileTrace(AppUploadFile ¶m); +}; +class AppMonitorTest : public VAppMonitor, virtual public AppMonitorTrace { public: AppMonitorTest() = default; @@ -29,18 +45,8 @@ public: StatusCode SetDateTime(AppSetDateTime ¶m) override; StatusCode SetTimeZone(const unsigned int &zone) override; StatusCode UploadFile(AppUploadFile ¶m) override; - -protected: - virtual StatusCode GetProductInfoTrace(AppGetProductInfo ¶m); - virtual StatusCode GetDeviceAttrTrace(AppGetDeviceAttr ¶m); - virtual StatusCode GetMediaInfoTrace(AppGetMeidaInfo ¶m); - virtual StatusCode GetSdCardInfoTrace(AppGetSdCardInfo ¶m); - virtual StatusCode GetBatteryInfoTrace(AppGetBatteryInfo ¶m); - virtual StatusCode SetDateTimeTrace(AppSetDateTime ¶m); - virtual StatusCode SetTimeZoneTrace(const unsigned int &zone); - virtual StatusCode UploadFileTrace(AppUploadFile ¶m); }; -class AppMonitorMock : public AppMonitorTest +class AppMonitorMock : virtual public AppMonitorTrace { public: AppMonitorMock() = default; @@ -51,6 +57,7 @@ public: MOCK_METHOD1(GetSdCardInfoTrace, StatusCode(AppGetSdCardInfo &)); MOCK_METHOD1(GetBatteryInfoTrace, StatusCode(AppGetBatteryInfo &)); MOCK_METHOD1(SetDateTimeTrace, StatusCode(AppSetDateTime &)); + MOCK_METHOD1(SetTimeZoneTrace, StatusCode(const unsigned int &)); MOCK_METHOD1(UploadFileTrace, StatusCode(AppUploadFile &)); }; #endif \ No newline at end of file