diff --git a/application/MissionManager/src/SdCardHandleState.cpp b/application/MissionManager/src/SdCardHandleState.cpp index 42a8e85..60afa67 100644 --- a/application/MissionManager/src/SdCardHandleState.cpp +++ b/application/MissionManager/src/SdCardHandleState.cpp @@ -126,7 +126,7 @@ bool SdCardHandleState::ResetKeyMediaTaskHandle(VStateMachineData *msg) */ bool SdCardHandleState::FormatKeyFormattingSDCardHandle(VStateMachineData *msg) { - if (StorageEvent::SD_CARD_INSERT == mSdCardStatus) { + if (StorageEvent::SD_CARD_INSERT == mSdCardStatus || StorageEvent::SD_ABNORMAL == mSdCardStatus) { LogInfo("FormatKeyFormattingSDCardHandle.\n"); MissionStateMachine::GetInstance()->DelayMessage(msg); MissionStateMachine::GetInstance()->SwitchState(SystemState::FORMATTING_STATE); diff --git a/hal/src/SdCardHal.cpp b/hal/src/SdCardHal.cpp index cae3b19..42411ae 100644 --- a/hal/src/SdCardHal.cpp +++ b/hal/src/SdCardHal.cpp @@ -166,10 +166,10 @@ void SdCardHal::ReportDetecedChangedResult(const SdCardHalStatus &status) LogInfo("SdCardHalStatus changed: %s.\n", PrintfStatusString(status)); SdCardHalStatus mountedStatus = SdCardHalStatus::END; if (SdCardHalStatus::INSERTED == status) { - LogInfo("mount sd to %s.\n", SD_CARD_MOUNT_PATH); constexpr int BUF_LENGTH = 128; char cmd[BUF_LENGTH] = {0}; snprintf(cmd, BUF_LENGTH, "mount %s %s", SD_CARD_DEV, SD_CARD_MOUNT_PATH); + LogInfo("system cmd: %s.\n", cmd); int ret = fx_system(cmd); constexpr int SYSTEM_SUCCESS = 0; if (SYSTEM_SUCCESS == ret) { diff --git a/middleware/StorageManager/include/IStorageManager.h b/middleware/StorageManager/include/IStorageManager.h index 4ba3f77..e2c8297 100644 --- a/middleware/StorageManager/include/IStorageManager.h +++ b/middleware/StorageManager/include/IStorageManager.h @@ -23,7 +23,7 @@ enum class StorageEvent { SD_CARD_INSERT = 0, SD_CARD_REMOVE, - SD_ABNORMAL, + SD_ABNORMAL, ///< Abnormal status includes: The card cannot be mounted. EMMC_NORMAL, END }; diff --git a/test/application/HuntingCamera/src_mock/DeviceManager_Mock_Test.cpp b/test/application/HuntingCamera/src_mock/DeviceManager_Mock_Test.cpp index 9834020..0512264 100644 --- a/test/application/HuntingCamera/src_mock/DeviceManager_Mock_Test.cpp +++ b/test/application/HuntingCamera/src_mock/DeviceManager_Mock_Test.cpp @@ -65,6 +65,22 @@ TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_KeyControlClick) std::this_thread::sleep_for(std::chrono::milliseconds(100)); MainThread::GetInstance()->Runing(); } +/** + * @brief Construct a new test f object + * ../output_files/test/bin/HuntingCameraTest + * --gtest_filter=HuntingCameraTest.HS_INTEGRATION_HunttingCamera_EXAMPLE_SD_Abnormal + */ +TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_SD_Abnormal) +{ + SetAllCamerasResult(mAllCamerasMock); + MockOtherSideIpcMissionReply(IpcMission::TEST); + MockSdCardAbnormal(mLinuxTest); + MainThread::GetInstance()->Init(); + TestManager::ResetTimeOut(1000 * 25); + HalTestTool::MockKeyClick("format", 1000 * 18); // Simulate pressing a button. + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + MainThread::GetInstance()->Runing(); +} /** * @brief Construct a new test f object * ../output_files/test/bin/HuntingCameraTest diff --git a/test/hal/tool/include/HalTestTool.h b/test/hal/tool/include/HalTestTool.h index 39e8014..2c6d74e 100644 --- a/test/hal/tool/include/HalTestTool.h +++ b/test/hal/tool/include/HalTestTool.h @@ -73,7 +73,8 @@ private: // About camera hal protected: // About sd card hal void MockSdCardRemove(std::shared_ptr &mock); void MockSdCardInsert(std::shared_ptr &mock); - void MockSdCardFormatReturn(std::shared_ptr &mock, const int &systemResult); + void MockSdCardFormatReturn(std::shared_ptr &mock, const int &systemResult); // TODO: delete + void MockSdCardAbnormal(std::shared_ptr &mock); public: static std::shared_ptr MakeKeyHalTest(const std::string &keyName); diff --git a/test/hal/tool/src/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp index 4f0a45f..e8b1b5a 100644 --- a/test/hal/tool/src/HalTestTool.cpp +++ b/test/hal/tool/src/HalTestTool.cpp @@ -374,6 +374,15 @@ void HalTestTool::MockSdCardFormatReturn(std::shared_ptr &mock, const } sdCardHal->MockSdCardFormatResult(mock, systemResult); } +void HalTestTool::MockSdCardAbnormal(std::shared_ptr &mock) +{ + std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal); + if (nullptr == sdCardHal) { + LogError("SdCardHalMock is null.\n"); + return; + } + sdCardHal->MockSdCardAbnormal(mock); +} std::shared_ptr HalTestTool::MakeKeyHalTest(const std::string &keyName) { std::shared_ptr key = std::make_shared(keyName); diff --git a/test/hal/tool/src/SdCardHalMock.cpp b/test/hal/tool/src/SdCardHalMock.cpp index 4eb5c4a..d8e29db 100644 --- a/test/hal/tool/src/SdCardHalMock.cpp +++ b/test/hal/tool/src/SdCardHalMock.cpp @@ -50,7 +50,10 @@ void SdCardHalMock::MockSdCardInsert(std::shared_ptr &mock) } void SdCardHalMock::MockSdCardFormatResult(std::shared_ptr &mock, const int &result) { - // TODO: improve LinuxTest::SetSystemCommandResult(mock, "mkfs.vfat", result); LinuxTest::SetSystemCommandResult(mock, "umount", result); +} +void SdCardHalMock::MockSdCardAbnormal(std::shared_ptr &mock) +{ + LinuxTest::SetSystemCommandResult(mock, "mount", MOCK_SYSTEM_RESULT_FAILED); } \ No newline at end of file diff --git a/test/hal/tool/src/SdCardHalMock.h b/test/hal/tool/src/SdCardHalMock.h index 94d4169..e4dfe3b 100644 --- a/test/hal/tool/src/SdCardHalMock.h +++ b/test/hal/tool/src/SdCardHalMock.h @@ -17,6 +17,8 @@ #include "IHalCpp.h" #include "LinuxApiMock.h" #include "SdCardHal.h" +constexpr int MOCK_SYSTEM_RESULT_SUCCEED = 0; +constexpr int MOCK_SYSTEM_RESULT_FAILED = -1; class SdCardHalMock : public SdCardHal { public: @@ -26,6 +28,7 @@ public: void MockSdCardRemove(std::shared_ptr &mock); void MockSdCardInsert(std::shared_ptr &mock); void MockSdCardFormatResult(std::shared_ptr &mock, const int &result); + void MockSdCardAbnormal(std::shared_ptr &mock); private: std::shared_ptr mLinuxTest;