/* * 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(void) { 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(); } 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(ONLY_BE_CALLED_ONCE) .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)))); } }