From 9351b0611eef05f9d0037412beab145059eadfc3 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Thu, 25 Apr 2024 22:51:38 +0800 Subject: [PATCH] Backup:MediaManager module. --- hal/abstract/IHalCpp.cpp | 9 +- hal/include/IHalCpp.h | 9 +- middleware/MediaManager/CMakeLists.txt | 2 +- .../MediaManager/include/IMediaManager.h | 2 +- middleware/MediaManager/src/IMediaManager.cpp | 2 +- .../MediaManager/src/MediaManagerImpl.cpp | 14 ++- .../MediaManager/src/MediaManagerImpl.h | 10 +- test/hal/tool/include/HalTestTool.h | 29 ++++- test/hal/tool/src/CameraHalMock.cpp | 42 +++++++ test/hal/tool/src/CameraHalMock.h | 41 +++++++ test/hal/tool/src/HalCppMock.cpp | 14 +++ test/hal/tool/src/HalCppMock.h | 3 + test/hal/tool/src/HalTestTool.cpp | 109 +++++++++++++++--- test/hal/tool/src/KeyControlMock.cpp | 9 +- test/hal/tool/src/KeyControlMock.h | 2 +- test/hal/tool/src/WifiHalMock.cpp | 30 +---- test/hal/tool/src/WifiHalMock.h | 8 -- .../DeviceManager/src/DeviceManager_Test.cpp | 10 +- test/middleware/MediaManager/CMakeLists.txt | 8 +- .../MediaManager/src/MediaManager_Test.cpp | 41 +++++-- .../MediaManager/tool/MediaManagerTestTool.h | 0 .../tool/include/MediaManagerTestTool.h | 3 + .../tool/src/MediaManagerMakePtrTest.cpp | 2 - .../tool/src/MediaManagerMock.cpp | 8 +- .../MediaManager/tool/src/MediaManagerMock.h | 4 +- .../tool/src/MediaManagerTestTool.cpp | 11 ++ 26 files changed, 313 insertions(+), 109 deletions(-) create mode 100644 test/hal/tool/src/CameraHalMock.cpp create mode 100644 test/hal/tool/src/CameraHalMock.h create mode 100644 test/middleware/MediaManager/tool/MediaManagerTestTool.h diff --git a/hal/abstract/IHalCpp.cpp b/hal/abstract/IHalCpp.cpp index 3415752b..e2de9046 100644 --- a/hal/abstract/IHalCpp.cpp +++ b/hal/abstract/IHalCpp.cpp @@ -16,8 +16,8 @@ #include "ILog.h" #include camera_report_event::camera_report_event(const std::string &fileName, const std::string &filePath, - const CameraEventType &type) - : mFileName(fileName), mFilePath(filePath), mType(type) + const CameraEvent &eventType, const CameraType &cameraType) + : mFileName(fileName), mFilePath(filePath), mEventType(eventType), mCameraType(cameraType) { } void VKeyHalMonitor::KeyEventHappened(const std::string &keyName, const VirtualKeyEvent &event, @@ -40,6 +40,10 @@ StatusCode VWifiHal::OpenApMode(void) void VCameraHalMonitor::ReportEvent(const CameraReportEvent &event) { } +void VCameraHal::SetCameraMonitor(std::shared_ptr &monitor) +{ + LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); +} std::shared_ptr &IHalCpp::GetInstance(std::shared_ptr *impl) { static auto instance = std::make_shared(); @@ -76,5 +80,6 @@ StatusCode IHalCpp::GetWifiHal(std::shared_ptr &wifi) } StatusCode IHalCpp::GetCameraHal(std::map> &allCameras) { + LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } \ No newline at end of file diff --git a/hal/include/IHalCpp.h b/hal/include/IHalCpp.h index 8a90a761..dd288553 100644 --- a/hal/include/IHalCpp.h +++ b/hal/include/IHalCpp.h @@ -29,7 +29,7 @@ enum class CameraType MAIN_CAMERA = 0, END }; -enum class CameraEventType +enum class CameraEvent { PICTIRUE = 0, VIDEO, @@ -38,10 +38,12 @@ enum class CameraEventType }; typedef struct camera_report_event { - camera_report_event(const std::string &fileName, const std::string &filePath, const CameraEventType &type); + camera_report_event(const std::string &fileName, const std::string &filePath, const CameraEvent &eventType, + const CameraType &cameraType); const std::string mFileName; const std::string mFilePath; - const CameraEventType mType; + const CameraEvent mEventType; + const CameraType mCameraType; } CameraReportEvent; void CreateHalCppModule(void); void DestroyHalCppModule(void); @@ -86,6 +88,7 @@ class VCameraHal public: VCameraHal() = default; virtual ~VCameraHal() = default; + virtual void SetCameraMonitor(std::shared_ptr &monitor); }; class IHalCpp { diff --git a/middleware/MediaManager/CMakeLists.txt b/middleware/MediaManager/CMakeLists.txt index 472b9c20..b053f835 100644 --- a/middleware/MediaManager/CMakeLists.txt +++ b/middleware/MediaManager/CMakeLists.txt @@ -27,7 +27,7 @@ aux_source_directory(./src SRC_FILES) set(TARGET_NAME MediaManager) add_library(${TARGET_NAME} STATIC ${SRC_FILES}) -target_link_libraries(${TARGET_NAME} StatusCode Log) +target_link_libraries(${TARGET_NAME} Hal StatusCode Log) if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") add_custom_target( diff --git a/middleware/MediaManager/include/IMediaManager.h b/middleware/MediaManager/include/IMediaManager.h index f0a143b0..c3e90d60 100644 --- a/middleware/MediaManager/include/IMediaManager.h +++ b/middleware/MediaManager/include/IMediaManager.h @@ -70,6 +70,6 @@ public: static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual const StatusCode Init(void); virtual const StatusCode UnInit(void); - virtual StatusCode SetMeidaMonitor(std::shared_ptr &monitor); + virtual StatusCode SetMediaMonitor(std::shared_ptr &monitor); }; #endif \ No newline at end of file diff --git a/middleware/MediaManager/src/IMediaManager.cpp b/middleware/MediaManager/src/IMediaManager.cpp index 85d7a680..af6467d4 100644 --- a/middleware/MediaManager/src/IMediaManager.cpp +++ b/middleware/MediaManager/src/IMediaManager.cpp @@ -55,7 +55,7 @@ const StatusCode IMediaManager::UnInit(void) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } -StatusCode IMediaManager::SetMeidaMonitor(std::shared_ptr &monitor) +StatusCode IMediaManager::SetMediaMonitor(std::shared_ptr &monitor) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } \ No newline at end of file diff --git a/middleware/MediaManager/src/MediaManagerImpl.cpp b/middleware/MediaManager/src/MediaManagerImpl.cpp index 4fa6d9e7..3473881a 100644 --- a/middleware/MediaManager/src/MediaManagerImpl.cpp +++ b/middleware/MediaManager/src/MediaManagerImpl.cpp @@ -13,15 +13,27 @@ * limitations under the License. */ #include "MediaManagerImpl.h" +#include "ILog.h" const StatusCode MediaManagerImpl::Init(void) { + IHalCpp::GetInstance()->GetCameraHal(mAllCameras); + SetCamerasMonitor(); return CreateStatusCode(STATUS_CODE_OK); } const StatusCode MediaManagerImpl::UnInit(void) { return CreateStatusCode(STATUS_CODE_OK); } -StatusCode MediaManagerImpl::SetMeidaMonitor(std::shared_ptr &monitor) +StatusCode MediaManagerImpl::SetMediaMonitor(std::shared_ptr &monitor) { + mMediaMonitor = monitor; return CreateStatusCode(STATUS_CODE_OK); +} +void MediaManagerImpl::SetCamerasMonitor(void) +{ + std::shared_ptr moniter = shared_from_this(); + for (const auto &camera : mAllCameras) { + LogInfo("SetCameraMonitor.\n"); + camera.second->SetCameraMonitor(moniter); + } } \ No newline at end of file diff --git a/middleware/MediaManager/src/MediaManagerImpl.h b/middleware/MediaManager/src/MediaManagerImpl.h index d37cc503..67ac5a36 100644 --- a/middleware/MediaManager/src/MediaManagerImpl.h +++ b/middleware/MediaManager/src/MediaManagerImpl.h @@ -17,16 +17,22 @@ #include "IHalCpp.h" #include "IMediaManager.h" #include -class MediaManagerImpl : public IMediaManager +class MediaManagerImpl : public IMediaManager, + public VCameraHalMonitor, + public std::enable_shared_from_this { public: MediaManagerImpl() = default; virtual ~MediaManagerImpl() = default; const StatusCode Init(void) override; const StatusCode UnInit(void) override; - StatusCode SetMeidaMonitor(std::shared_ptr &monitor) override; + StatusCode SetMediaMonitor(std::shared_ptr &monitor) override; + +private: + void SetCamerasMonitor(void); private: std::map> mAllCameras; + std::shared_ptr mMediaMonitor; }; #endif \ No newline at end of file diff --git a/test/hal/tool/include/HalTestTool.h b/test/hal/tool/include/HalTestTool.h index 4b4307c3..24b9750c 100644 --- a/test/hal/tool/include/HalTestTool.h +++ b/test/hal/tool/include/HalTestTool.h @@ -24,41 +24,58 @@ public: virtual ~HalTestTool() = default; void Init(void); void UnInit(void); + /** + * @brief Set the All Keys Result object + * Due to the abstract design of the HAL for the number and type of buttons, it is necessary to externally + * determine the instances of the buttons. + * @param allKeys The instances of the buttons. + */ void SetAllKeysResult(std::map> &allKeys); void SetAllLedsResult(std::map> &allLeds); - // void SetKeyEvent(const std::string keyName, const KeyHalEvent &event); // TODO: unused function? - void SetKeyClick(const std::string &keyName, const unsigned int &pressingTimeMs = 200); + void SetAllCamerasResult(std::map> &allCameras); + void MockKeyClick(const std::string &keyName, const unsigned int &pressingTimeMs = 200); void SetLedStateExpectations(const std::string &ledName, const LedState &state, const unsigned int &aliveTimeMs, const unsigned int &blinkTimeMs); + void MockReportCameraEvent(const std::string &fileName, const std::string &filePath, const CameraEvent &eventType, + const CameraType &cameraType); protected: - virtual void DeviceManagerNotice(const std::string &keyName, const unsigned int &pressingTimeMs) - { - } + virtual void DeviceManagerNotice(const std::string &keyName, const unsigned int &pressingTimeMs); private: void KeyEventHappendOnce(std::shared_ptr &vMock, const unsigned int &pressingTimeMs); private: void HalMockInit(std::shared_ptr &vMock); + +private: // About key hal void SetAllKeysResult(std::shared_ptr &vMock, std::map> &allKeys); std::shared_ptr SearchKey(const std::string &keyName); void InitAllKeysMock(std::map> &allKeys); void InitKeysMock(std::shared_ptr &vMock); -private: +private: // About led hal void SetAllLedsResult(std::shared_ptr &vMock, std::map> &allLeds); std::shared_ptr &SearchLed(const std::string &ledName); void InitAllLedsMock(std::map> &allLeds); void InitLedsMock(std::shared_ptr &vMock); +private: // About camera hal + void SetAllCamerasResult(std::shared_ptr &vMock, + std::map> &allCameras); + std::shared_ptr SearchCamera(const CameraType &cameraType); + void InitAllCamerasMock(std::map> &allCameras); + void InitCamerasMock(std::shared_ptr &vMock); + public: static std::shared_ptr MakeKeyHalTest(const std::string &keyName); static std::shared_ptr MakeLedHalTest(const std::string &ledName); + static std::shared_ptr MakeCameraHalTest(const CameraType &type); private: std::shared_ptr mHalMock; std::map> mAllKeys; std::map> mAllLeds; + std::map> mAllCameras; }; #endif \ No newline at end of file diff --git a/test/hal/tool/src/CameraHalMock.cpp b/test/hal/tool/src/CameraHalMock.cpp new file mode 100644 index 00000000..5d495b91 --- /dev/null +++ b/test/hal/tool/src/CameraHalMock.cpp @@ -0,0 +1,42 @@ +/* + * 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); +} +void CameraHalTest::SetCameraMonitorTrace(std::shared_ptr &monitor) +{ + LogWarning("SetCameraMonitorTrace.\n"); +} +CameraHalMock::CameraHalMock(const CameraType &cameraType) : CameraHalTest(cameraType) +{ +} +void CameraHalMock::MockReportCameraEvent(const CameraReportEvent &event) +{ + auto monitor = mMonitor.lock(); + if (mMonitor.expired()) { + LogError("monitor is nullptr.\n"); + 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 new file mode 100644 index 00000000..f2807c32 --- /dev/null +++ b/test/hal/tool/src/CameraHalMock.h @@ -0,0 +1,41 @@ +/* + * 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; + +private: + virtual void SetCameraMonitorTrace(std::shared_ptr &monitor); + +protected: + const CameraType mCameraType; + std::weak_ptr mMonitor; +}; +class CameraHalMock : public CameraHalTest +{ +public: + CameraHalMock(const CameraType &cameraType); + virtual ~CameraHalMock() = default; + void MockReportCameraEvent(const CameraReportEvent &event); + MOCK_METHOD1(SetCameraMonitorTrace, void(std::shared_ptr &)); +}; +#endif \ No newline at end of file diff --git a/test/hal/tool/src/HalCppMock.cpp b/test/hal/tool/src/HalCppMock.cpp index ed43ae9f..0c172081 100644 --- a/test/hal/tool/src/HalCppMock.cpp +++ b/test/hal/tool/src/HalCppMock.cpp @@ -51,8 +51,22 @@ StatusCode HalCppTest::GetWifiHal(std::shared_ptr &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 index 2521c467..46926eb4 100644 --- a/test/hal/tool/src/HalCppMock.h +++ b/test/hal/tool/src/HalCppMock.h @@ -24,11 +24,13 @@ public: 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 { @@ -38,5 +40,6 @@ public: 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/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp index c678f81d..42b88ca5 100644 --- a/test/hal/tool/src/HalTestTool.cpp +++ b/test/hal/tool/src/HalTestTool.cpp @@ -13,6 +13,7 @@ * limitations under the License. */ #include "HalTestTool.h" +#include "CameraHalMock.h" #include "HalCppMock.h" #include "HalMakePtrTest.h" #include "ILog.h" @@ -47,31 +48,22 @@ void HalTestTool::SetAllLedsResult(std::map key = SearchKey(keyName); -// if (!key) { -// LogError("Can't set key event, key not found.\n"); -// return; -// } -// std::shared_ptr keyMock = std::dynamic_pointer_cast(key); -// if (keyMock) { -// keyMock->SetKeyEvent(event); -// } -// else { -// LogWarning("Key mock error.\n"); -// } -// } -void HalTestTool::SetKeyClick(const std::string &keyName, const unsigned int &pressingTimeMs) +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 set key event, key not found.\n"); + LogError("Can't mock key event, key not found.\n"); return; } std::shared_ptr keyMock = std::dynamic_pointer_cast(key); if (keyMock) { - if (keyMock->SetKeyClick(pressingTimeMs)) { + if (keyMock->MockKeyClick(pressingTimeMs)) { DeviceManagerNotice(keyName, pressingTimeMs); } } @@ -96,6 +88,26 @@ void HalTestTool::SetLedStateExpectations(const std::string &ledName, const LedS // } LedControlMock::SetLedStateMock(led, state, aliveTimeMs, blinkTimeMs); } +void HalTestTool::MockReportCameraEvent(const std::string &fileName, const std::string &filePath, + const CameraEvent &eventType, const CameraType &cameraType) +{ + std::shared_ptr camera = SearchCamera(cameraType); + if (!camera) { + LogError("Can't mock camera event, key not found.\n"); + return; + } + std::shared_ptr cameraMock = std::dynamic_pointer_cast(camera); + if (cameraMock) { + CameraReportEvent report(fileName, filePath, eventType, 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); @@ -162,6 +174,8 @@ void HalTestTool::HalMockInit(std::shared_ptr &vMock) std::shared_ptr wifiHal = std::make_shared(); 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) @@ -230,6 +244,60 @@ void HalTestTool::InitLedsMock(std::shared_ptr &vMock) 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; + EXPECT_CALL(*mock.get(), SetCameraMonitorTrace(_)).Times(USER_SHOULD_SET_CAMERA_MONITER); +} std::shared_ptr HalTestTool::MakeKeyHalTest(const std::string &keyName) { std::shared_ptr key = std::make_shared(keyName); @@ -239,4 +307,9 @@ 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 index 61d8965b..c6f22e54 100644 --- a/test/hal/tool/src/KeyControlMock.cpp +++ b/test/hal/tool/src/KeyControlMock.cpp @@ -16,16 +16,13 @@ #include "ILog.h" KeyControlTest::KeyControlTest(const std::string &keyName) : mKeyName(keyName) { - // } void KeyControlTest::SetKeyMonitor(std::shared_ptr &monitor) { - // mMonitor = monitor; } void KeyControlTest::CheckKeyStatus(void) { - // TimerKeyEventTrigger(KeyHalEvent::PRESSING); } void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) @@ -41,14 +38,12 @@ void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent } KeyControlMock::KeyControlMock(const std::string &keyName) : KeyControlTest(keyName) { - // } void KeyControlMock::SetKeyEvent(const KeyHalEvent &event) { - // KeyHalEventTrigger(event); } -bool KeyControlMock::SetKeyClick(const unsigned int &pressingTimeMs) +bool KeyControlMock::MockKeyClick(const unsigned int &pressingTimeMs) { if (mMutex.try_lock()) { auto keyClickThread = [=](std::shared_ptr key) { @@ -64,7 +59,7 @@ bool KeyControlMock::SetKeyClick(const unsigned int &pressingTimeMs) clickThread.detach(); return true; } - LogWarning("SetKeyClick failed, becase key was lock.\n"); + LogWarning("MockKeyClick failed, becase key was lock.\n"); return false; } void KeyControlMock::KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs) diff --git a/test/hal/tool/src/KeyControlMock.h b/test/hal/tool/src/KeyControlMock.h index 558a1ebe..c6b4b180 100644 --- a/test/hal/tool/src/KeyControlMock.h +++ b/test/hal/tool/src/KeyControlMock.h @@ -53,7 +53,7 @@ public: virtual ~KeyControlMock() = default; // void KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) override; void SetKeyEvent(const KeyHalEvent &event); - bool SetKeyClick(const unsigned int &pressingTimeMs = 200); + bool MockKeyClick(const unsigned int &pressingTimeMs = 200); MOCK_METHOD3(KeyEventTriggerTrace, StatusCode(const std::string &, const KeyEvent &, const unsigned int &)); private: diff --git a/test/hal/tool/src/WifiHalMock.cpp b/test/hal/tool/src/WifiHalMock.cpp index 54632263..ff1a404c 100644 --- a/test/hal/tool/src/WifiHalMock.cpp +++ b/test/hal/tool/src/WifiHalMock.cpp @@ -13,32 +13,4 @@ * limitations under the License. */ #include "HalCppMock.h" -#include "ILog.h" -// StatusCode WifiHalTest::GetAllLeds(std::map> &allLeds) -// { -// LogInfo("WifiHalTest::GetAllLeds\n"); -// StatusCode code = GetAllLedsTrace(allLeds); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return HalCpp::GetAllLeds(allLeds); -// } -// return code; -// } -// StatusCode WifiHalTest::GetAllKeys(std::map> &allKeys) -// { -// LogInfo("WifiHalTest::GetAllKeys\n"); -// StatusCode code = GetAllKeysTrace(allKeys); -// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { -// return HalCpp::GetAllKeys(allKeys); -// } -// return code; -// } -// StatusCode WifiHalTest::GetAllLedsTrace(std::map> &allLeds) -// { -// LogInfo("WifiHalTest::GetAllLedsTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } -// StatusCode WifiHalTest::GetAllKeysTrace(std::map> &allKeys) -// { -// LogInfo("WifiHalTest::GetAllKeysTrace\n"); -// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); -// } \ No newline at end of file +#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 index 529b5421..5bdea54d 100644 --- a/test/hal/tool/src/WifiHalMock.h +++ b/test/hal/tool/src/WifiHalMock.h @@ -21,19 +21,11 @@ class WifiHalTest : public VWifiHal public: WifiHalTest() = default; virtual ~WifiHalTest() = default; - // StatusCode GetAllLeds(std::map> &allLeds) override; - // StatusCode GetAllKeys(std::map> &allKeys) override; - -protected: - // virtual StatusCode GetAllLedsTrace(std::map> &allLeds); - // virtual StatusCode GetAllKeysTrace(std::map> &allKeys); }; class WifiHalMock : public WifiHalTest { public: WifiHalMock() = default; virtual ~WifiHalMock() = default; - // MOCK_METHOD1(GetAllLedsTrace, StatusCode(std::map> &)); - // MOCK_METHOD1(GetAllKeysTrace, StatusCode(std::map> &)); }; #endif \ No newline at end of file diff --git a/test/middleware/DeviceManager/src/DeviceManager_Test.cpp b/test/middleware/DeviceManager/src/DeviceManager_Test.cpp index 71d85a7a..cd56856b 100644 --- a/test/middleware/DeviceManager/src/DeviceManager_Test.cpp +++ b/test/middleware/DeviceManager/src/DeviceManager_Test.cpp @@ -92,7 +92,7 @@ TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_AUTO_KeyShortPress) IDeviceManager::GetInstance()->Init(); std::shared_ptr monitor = std::make_shared(); IDeviceManager::GetInstance()->SetAllKeysMonitor(monitor); - SetKeyClick(KEY_TEST); // Simulate pressing a button. + MockKeyClick(KEY_TEST); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(1000)); IDeviceManager::GetInstance()->UnInit(); } @@ -109,7 +109,7 @@ TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_AUTO_KeyInvalidShort IDeviceManager::GetInstance()->Init(); std::shared_ptr monitor = std::make_shared(); IDeviceManager::GetInstance()->SetAllKeysMonitor(monitor); - SetKeyClick(KEY_TEST, 50); // Simulate pressing a button. + MockKeyClick(KEY_TEST, 50); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(1000)); IDeviceManager::GetInstance()->UnInit(); } @@ -126,7 +126,7 @@ TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_AUTO_KeyLongPress) IDeviceManager::GetInstance()->Init(); std::shared_ptr monitor = std::make_shared(); IDeviceManager::GetInstance()->SetAllKeysMonitor(monitor); - SetKeyClick(KEY_TEST, 1000); // Simulate pressing a button. + MockKeyClick(KEY_TEST, 1000); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); IDeviceManager::GetInstance()->UnInit(); } @@ -138,9 +138,9 @@ TEST_F(DeviceManagerTest, INTEGRATION_DeviceManager_EXAMPLE_AUTO_SetKeyMonitor) IDeviceManager::GetInstance()->Init(); std::shared_ptr monitor = std::make_shared(); IDeviceManager::GetInstance()->SetAllKeysMonitor(monitor); - SetKeyClick(KEY_TEST, 1000); // Simulate pressing a button. + MockKeyClick(KEY_TEST, 1000); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); - SetKeyClick(KEY_TEST, 1000); // Simulate pressing a button. + MockKeyClick(KEY_TEST, 1000); // Simulate pressing a button. std::this_thread::sleep_for(std::chrono::milliseconds(2000)); IDeviceManager::GetInstance()->UnInit(); } diff --git a/test/middleware/MediaManager/CMakeLists.txt b/test/middleware/MediaManager/CMakeLists.txt index 9330ef9d..9f59db8f 100644 --- a/test/middleware/MediaManager/CMakeLists.txt +++ b/test/middleware/MediaManager/CMakeLists.txt @@ -10,12 +10,12 @@ include_directories( ${UTILS_SOURCE_PATH}/Log/include ${UTILS_SOURCE_PATH}/StatusCode/include # ${UTILS_SOURCE_PATH}/KeyControl/include - # ${UTILS_SOURCE_PATH}/LedControl/include + ${UTILS_SOURCE_PATH}/LedControl/include # ${UTILS_SOURCE_PATH}/WebServer/include - # ${HAL_SOURCE_PATH}/include + ${HAL_SOURCE_PATH}/include ${MIDDLEWARE_SOURCE_PATH}/MediaManager/include ${TEST_SOURCE_PATH} - # ${TEST_SOURCE_PATH}/hal/tool/include + ${TEST_SOURCE_PATH}/hal/tool/include ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include ) @@ -33,7 +33,7 @@ endif() set(TARGET_NAME MediaManagerTest) add_executable(${TARGET_NAME} ${SRC_FILES_MAIN} ${SRC_FILES}) -target_link_libraries(${TARGET_NAME} MediaManager MediaManagerTestTool gtest gmock pthread) +target_link_libraries(${TARGET_NAME} MediaManager MediaManagerTestTool HalTestTool gtest gmock pthread) if(${TEST_COVERAGE} MATCHES "true") target_link_libraries(${TARGET_NAME} gcov) endif() diff --git a/test/middleware/MediaManager/src/MediaManager_Test.cpp b/test/middleware/MediaManager/src/MediaManager_Test.cpp index df313ad0..1bd5eb6a 100644 --- a/test/middleware/MediaManager/src/MediaManager_Test.cpp +++ b/test/middleware/MediaManager/src/MediaManager_Test.cpp @@ -13,14 +13,16 @@ * limitations under the License. */ #include "GtestUsing.h" +#include "HalTestTool.h" #include "ILog.h" #include "IMediaManager.h" +#include "MediaManagerTestTool.h" #include #include #include namespace MediaManagerTest { -class MediaManagerTest : public testing::Test +class MediaManagerTest : public testing::Test, public MediaManagerTestTool, public HalTestTool { public: MediaManagerTest() @@ -40,35 +42,50 @@ public: } virtual void SetUp() { - // HalTestTool::Init(); - // AppManagerTestTool::Init(); - // CreateHalCppModule(); + CreateAllCamerasMcok(); + HalTestTool::Init(); + MediaManagerTestTool::Init(); + CreateHalCppModule(); CreateMediaManagerModule(); } virtual void TearDown() { - // AppManagerTestTool::UnInit(); - // HalTestTool::UnInit(); + MediaManagerTestTool::UnInit(); + HalTestTool::UnInit(); DestroyMediaManagerModule(); - // DestroyHalCppModule(); + DestroyHalCppModule(); + DestroyAllCamerasMock(); + } + +private: + void CreateAllCamerasMcok(void) + { + std::shared_ptr camera = HalTestTool::MakeCameraHalTest(CameraType::MAIN_CAMERA); + mAllCamerasMock[CameraType::MAIN_CAMERA] = camera; + } + void DestroyAllCamerasMock(void) + { + mAllCamerasMock.clear(); } protected: // const AppParam mAppParam; + std::map> mAllCamerasMock; }; // ../output_files/test/bin/MediaManagerTest --gtest_filter=MediaManagerTest.INTEGRATION_MediaManager_EXAMPLE_Demo0 TEST_F(MediaManagerTest, INTEGRATION_MediaManager_EXAMPLE_Demo0) { - // std::shared_ptr monitor = AppManagerTestTool::MakeMonitorMock(); - // IAppManager::GetInstance()->Init(mAppParam); - // IAppManager::GetInstance()->SetAppMonitor(monitor); - // std::this_thread::sleep_for(std::chrono::milliseconds(100)); + SetAllCamerasResult(mAllCamerasMock); + std::shared_ptr monitor = MediaManagerTestTool::MakeMonitorMock(); + IMediaManager::GetInstance()->Init(); + IMediaManager::GetInstance()->SetMediaMonitor(monitor); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + MockReportCameraEvent("test name", "test path", CameraEvent::PICTIRUE, CameraType::MAIN_CAMERA); // MockAppClientConnect(); // std::this_thread::sleep_for(std::chrono::milliseconds(100)); // MockSetRecordingStatus(RecordingStatus::RECORDING_START); // std::this_thread::sleep_for(std::chrono::milliseconds(2000)); // IAppManager::GetInstance()->UnInit(); - IMediaManager::GetInstance()->Init(); IMediaManager::GetInstance()->UnInit(); } } // namespace MediaManagerTest \ No newline at end of file diff --git a/test/middleware/MediaManager/tool/MediaManagerTestTool.h b/test/middleware/MediaManager/tool/MediaManagerTestTool.h new file mode 100644 index 00000000..e69de29b diff --git a/test/middleware/MediaManager/tool/include/MediaManagerTestTool.h b/test/middleware/MediaManager/tool/include/MediaManagerTestTool.h index 2639f268..94723dfe 100644 --- a/test/middleware/MediaManager/tool/include/MediaManagerTestTool.h +++ b/test/middleware/MediaManager/tool/include/MediaManagerTestTool.h @@ -32,5 +32,8 @@ private: private: std::shared_ptr mMediaManagerMock; std::shared_ptr mMediaMonitorMock; + +public: + static std::shared_ptr MakeMonitorMock(void); }; #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 index 8e6a2aed..06749c21 100644 --- a/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.cpp +++ b/test/middleware/MediaManager/tool/src/MediaManagerMakePtrTest.cpp @@ -37,11 +37,9 @@ void CancelOverrideMediaManagerMakePtrObject(void) } MediaManagerMakePtrTest::MediaManagerMakePtrTest() { - // } MediaManagerMakePtrTest::~MediaManagerMakePtrTest() { - // mMediaManagerMock.reset(); } const StatusCode MediaManagerMakePtrTest::CreateMediaManagerModule(std::shared_ptr &impl) diff --git a/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp b/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp index bf0cd5af..da8e84e1 100644 --- a/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp +++ b/test/middleware/MediaManager/tool/src/MediaManagerMock.cpp @@ -14,17 +14,17 @@ */ #include "MediaManagerMock.h" #include "ILog.h" -StatusCode MediaManagerTest::SetMeidaMonitor(std::shared_ptr &monitor) +StatusCode MediaManagerTest::SetMediaMonitor(std::shared_ptr &monitor) { - LogInfo("MediaManagerTest::SetAppMonitor\n"); + LogInfo("MediaManagerTest::SetMediaMonitor\n"); StatusCode code = SetMediaMonitorTrace(monitor); if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) { - return MediaManagerImpl::SetMeidaMonitor(monitor); + return MediaManagerImpl::SetMediaMonitor(monitor); } return code; } const StatusCode MediaManagerTest::SetMediaMonitorTrace(std::shared_ptr &monitor) { - LogInfo("SetMediaMonitorTrace::SetAppMonitorTrace\n"); + 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 index 8044a772..6b6fcd9f 100644 --- a/test/middleware/MediaManager/tool/src/MediaManagerMock.h +++ b/test/middleware/MediaManager/tool/src/MediaManagerMock.h @@ -21,8 +21,8 @@ class MediaManagerTest : public MediaManagerImpl public: MediaManagerTest() = default; virtual ~MediaManagerTest() = default; - // const StatusCode SetMeidaMonitor(std::shared_ptr &monitor) override; - StatusCode SetMeidaMonitor(std::shared_ptr &monitor) override; + // const StatusCode SetMediaMonitor(std::shared_ptr &monitor) override; + StatusCode SetMediaMonitor(std::shared_ptr &monitor) override; protected: virtual const StatusCode SetMediaMonitorTrace(std::shared_ptr &monitor); diff --git a/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp b/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp index 31468d2b..2ad40cbe 100644 --- a/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp +++ b/test/middleware/MediaManager/tool/src/MediaManagerTestTool.cpp @@ -88,4 +88,15 @@ void MediaManagerTestTool::MediaMonitorInit(std::shared_ptr &vMoc // 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