From 5a956aa9a8bc23ddb8cd8e5f88edf522f81f5e1b Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 30 May 2025 09:33:39 +0000 Subject: [PATCH 01/11] RDKEMW-4719 Return an error message for firmware upto date validation Reason for change: Return an error message for firmware upto date validation Test Procedure: verify build success and basic test Risks: Low Priority: P1 Signed-off-by: ramkumar_prabaharan@comcast.com --- .../FirmwareUpdateImplementation.cpp | 74 +++++++++++-------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/FirmwareUpdate/FirmwareUpdateImplementation.cpp b/FirmwareUpdate/FirmwareUpdateImplementation.cpp index 103b498a..66f3c405 100644 --- a/FirmwareUpdate/FirmwareUpdateImplementation.cpp +++ b/FirmwareUpdate/FirmwareUpdateImplementation.cpp @@ -669,32 +669,6 @@ namespace WPEFramework { string dri = (firmwareType == "DRI") ? "yes" : "no"; string name = firmwareFilepath.substr(firmwareFilepath.find_last_of("/\\") + 1); string path = firmwareFilepath.substr(0, firmwareFilepath.find_last_of("/\\") + 1); - - string currentFlashedImage = readProperty("/version.txt","imagename", ":") ; - SWUPDATEINFO("currentFlashedImage : %s",currentFlashedImage.c_str()); - std::string fileWithoutExtension =""; - // Find the position of the last '.' - size_t dotPos = name.find_last_of('.'); - if (dotPos != std::string::npos) { - // Extract substring before the '.' - fileWithoutExtension = name.substr(0, dotPos); - } else { - // If no '.' is found, use the original string - fileWithoutExtension = name; - } - - if (fileWithoutExtension == currentFlashedImage) - { - - SWUPDATEERR("FW version of the active image and the image to be upgraded are the same. No upgrade required."); - isFlashingInProgress = false; // Reset the flag if exiting early - snprintf(fwdls.status, sizeof(fwdls.status), "Status|No upgrade needed\n"); - snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|No upgrade needed\n"); - snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|No upgrade needed\n"); - updateFWDownloadStatus(&fwdls, dri.c_str(),initiated_type); - dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_UPTODATE); - return ; - } if(std::string(proto) == "usb") @@ -737,7 +711,9 @@ namespace WPEFramework { if(firmwareFilepath == "") { SWUPDATEERR("firmwareFilepath is empty"); - dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_NOT_FOUND); + state = _VALIDATION_FAILED; + substate = _FIRMWARE_NOT_FOUND; + FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareFilepath is empty\n"); @@ -748,7 +724,9 @@ namespace WPEFramework { else if (!(Utils::fileExists(firmwareFilepath.c_str()))) { SWUPDATEERR("firmwareFile is not present %s",firmwareFilepath.c_str()); SWUPDATEERR("Local image Download Failed"); //Existing marker - dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_NOT_FOUND); + state = _VALIDATION_FAILED; + substate = _FIRMWARE_NOT_FOUND; + FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareFile is not present\n"); @@ -760,7 +738,9 @@ namespace WPEFramework { if(firmwareType !=""){ if (firmwareType != "PCI" && firmwareType != "DRI") { SWUPDATEERR("firmwareType must be either 'PCI' or 'DRI'."); - dispatchAndUpdateEvent(_VALIDATION_FAILED,""); + state = _VALIDATION_FAILED; + substate = ""; + FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareType must be either 'PCI' or 'DRI'.\n"); @@ -772,7 +752,9 @@ namespace WPEFramework { else { SWUPDATEERR("firmwareType is empty"); - dispatchAndUpdateEvent(_VALIDATION_FAILED,""); + state = _VALIDATION_FAILED; + substate = ""; + FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareType is empty\n"); @@ -781,6 +763,38 @@ namespace WPEFramework { return status; } + string name = firmwareFilepath.substr(firmwareFilepath.find_last_of("/\\") + 1); + string path = firmwareFilepath.substr(0, firmwareFilepath.find_last_of("/\\") + 1); + + string currentFlashedImage = readProperty("/version.txt","imagename", ":") ; + SWUPDATEINFO("currentFlashedImage : %s",currentFlashedImage.c_str()); + std::string fileWithoutExtension =""; + // Find the position of the last '.' + size_t dotPos = name.find_last_of('.'); + if (dotPos != std::string::npos) { + // Extract substring before the '.' + fileWithoutExtension = name.substr(0, dotPos); + } else { + // If no '.' is found, use the original string + fileWithoutExtension = name; + } + + if (fileWithoutExtension == currentFlashedImage) + { + + SWUPDATEERR("FW version of the active image and the image to be upgraded are the same. No upgrade required."); + state = _VALIDATION_FAILED; + substate = _FIRMWARE_UPTODATE; + FirmwareStatus(state,substate,"write"); + snprintf(fwdls.status, sizeof(fwdls.status), "Status|No upgrade needed\n"); + snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|No upgrade needed\n"); + snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|No upgrade needed\n"); + updateFWDownloadStatus(&fwdls, dri.c_str(),initiated_type.c_str()); + status = Core::ERROR_INVALID_PARAMETER; + return status; + } + + // Ensure only one flashing operation happens at a time bool expected = false; if (!isFlashingInProgress.compare_exchange_strong(expected, true)) { From 872f258fd4068237783dc7428edef621e32f41e7 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Mon, 2 Jun 2025 12:35:22 +0000 Subject: [PATCH 02/11] RDKEMW-4719 Return an error message for firmware upto date validation Reason for change: Return an error message for firmware upto date validation Test Procedure: verify build success and basic test Risks: Low Priority: P1 Signed-off-by: ramkumar_prabaharan@comcast.com --- FirmwareUpdate/FirmwareUpdateHelper.h | 4 +++- FirmwareUpdate/FirmwareUpdateImplementation.cpp | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/FirmwareUpdate/FirmwareUpdateHelper.h b/FirmwareUpdate/FirmwareUpdateHelper.h index 1858e758..3ffee6b4 100644 --- a/FirmwareUpdate/FirmwareUpdateHelper.h +++ b/FirmwareUpdate/FirmwareUpdateHelper.h @@ -131,6 +131,7 @@ #define _FLASH_WRITE_FAILED "FLASH_WRITE_FAILED" #define _POSTWRITE_FIRMWARE_CHECK_FAILED "POSTWRITE_FIRMWARE_CHECK_FAILED" #define _POSTWRITE_SIGNATURE_CHECK_FAILED "POSTWRITE_SIGNATURE_CHECK_FAILED" +#define _FIRMWARE_NOT_ACCESSIBLE "FIRMWARE_NOT_ACCESSIBLE" inline const char* ExtractFileName(const char* filePath) { const char* fileName = strrchr(filePath, '/'); @@ -201,7 +202,8 @@ std::map firmwar {"PREWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::PREWRITE_SIGNATURE_CHECK_FAILED}, {"FLASH_WRITE_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::FLASH_WRITE_FAILED}, {"POSTWRITE_FIRMWARE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_FIRMWARE_CHECK_FAILED}, - {"POSTWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_SIGNATURE_CHECK_FAILED} + {"POSTWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_SIGNATURE_CHECK_FAILED}, + {"FIRMWARE_NOT_ACCESSIBLE", WPEFramework::Exchange::IFirmwareUpdate::SubState::FIRMWARE_NOT_ACCESSIBLE} }; diff --git a/FirmwareUpdate/FirmwareUpdateImplementation.cpp b/FirmwareUpdate/FirmwareUpdateImplementation.cpp index 66f3c405..17795050 100644 --- a/FirmwareUpdate/FirmwareUpdateImplementation.cpp +++ b/FirmwareUpdate/FirmwareUpdateImplementation.cpp @@ -675,7 +675,7 @@ namespace WPEFramework { { if (!copyFileToDirectory(upgrade_file.c_str(), USB_TMP_COPY)) { SWUPDATEERR("File copy operation failed.\n"); - dispatchAndUpdateEvent(_VALIDATION_FAILED,""); + dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_NOT_ACCESSIBLE); isFlashingInProgress = false; // Reset the flag if exiting early snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); @@ -782,7 +782,7 @@ namespace WPEFramework { if (fileWithoutExtension == currentFlashedImage) { - SWUPDATEERR("FW version of the active image and the image to be upgraded are the same. No upgrade required."); + SWUPDATEERR("FW version of the active image and the image to be upgraded are the same. No upgrade required. imagename : %s" ,name.c_str()); state = _VALIDATION_FAILED; substate = _FIRMWARE_UPTODATE; FirmwareStatus(state,substate,"write"); @@ -790,7 +790,7 @@ namespace WPEFramework { snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|No upgrade needed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|No upgrade needed\n"); updateFWDownloadStatus(&fwdls, dri.c_str(),initiated_type.c_str()); - status = Core::ERROR_INVALID_PARAMETER; + status = Core::ERROR_FIRMWAREUPDATE_UPTODATE; return status; } From 31a2dfb9ad3ce31fe8e019d4c8a401ce3bdd6640 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Mon, 9 Jun 2025 10:50:36 +0000 Subject: [PATCH 03/11] RDKEMW-4719 Return an error message for firmware upto date validation Reason for change: Return an error message for firmware upto date validation Test Procedure: verify build success and basic test Risks: Low Priority: P1 Signed-off-by: ramkumar_prabaharan@comcast.com --- FirmwareUpdate/FirmwareUpdateHelper.h | 4 +-- .../FirmwareUpdateImplementation.cpp | 33 +++++-------------- 2 files changed, 10 insertions(+), 27 deletions(-) diff --git a/FirmwareUpdate/FirmwareUpdateHelper.h b/FirmwareUpdate/FirmwareUpdateHelper.h index 3ffee6b4..1858e758 100644 --- a/FirmwareUpdate/FirmwareUpdateHelper.h +++ b/FirmwareUpdate/FirmwareUpdateHelper.h @@ -131,7 +131,6 @@ #define _FLASH_WRITE_FAILED "FLASH_WRITE_FAILED" #define _POSTWRITE_FIRMWARE_CHECK_FAILED "POSTWRITE_FIRMWARE_CHECK_FAILED" #define _POSTWRITE_SIGNATURE_CHECK_FAILED "POSTWRITE_SIGNATURE_CHECK_FAILED" -#define _FIRMWARE_NOT_ACCESSIBLE "FIRMWARE_NOT_ACCESSIBLE" inline const char* ExtractFileName(const char* filePath) { const char* fileName = strrchr(filePath, '/'); @@ -202,8 +201,7 @@ std::map firmwar {"PREWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::PREWRITE_SIGNATURE_CHECK_FAILED}, {"FLASH_WRITE_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::FLASH_WRITE_FAILED}, {"POSTWRITE_FIRMWARE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_FIRMWARE_CHECK_FAILED}, - {"POSTWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_SIGNATURE_CHECK_FAILED}, - {"FIRMWARE_NOT_ACCESSIBLE", WPEFramework::Exchange::IFirmwareUpdate::SubState::FIRMWARE_NOT_ACCESSIBLE} + {"POSTWRITE_SIGNATURE_CHECK_FAILED", WPEFramework::Exchange::IFirmwareUpdate::SubState::POSTWRITE_SIGNATURE_CHECK_FAILED} }; diff --git a/FirmwareUpdate/FirmwareUpdateImplementation.cpp b/FirmwareUpdate/FirmwareUpdateImplementation.cpp index 17795050..4d6eec7d 100644 --- a/FirmwareUpdate/FirmwareUpdateImplementation.cpp +++ b/FirmwareUpdate/FirmwareUpdateImplementation.cpp @@ -675,7 +675,7 @@ namespace WPEFramework { { if (!copyFileToDirectory(upgrade_file.c_str(), USB_TMP_COPY)) { SWUPDATEERR("File copy operation failed.\n"); - dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_NOT_ACCESSIBLE); + dispatchAndUpdateEvent(_VALIDATION_FAILED,_FIRMWARE_NOT_FOUND); isFlashingInProgress = false; // Reset the flag if exiting early snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); @@ -711,9 +711,6 @@ namespace WPEFramework { if(firmwareFilepath == "") { SWUPDATEERR("firmwareFilepath is empty"); - state = _VALIDATION_FAILED; - substate = _FIRMWARE_NOT_FOUND; - FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareFilepath is empty\n"); @@ -724,9 +721,6 @@ namespace WPEFramework { else if (!(Utils::fileExists(firmwareFilepath.c_str()))) { SWUPDATEERR("firmwareFile is not present %s",firmwareFilepath.c_str()); SWUPDATEERR("Local image Download Failed"); //Existing marker - state = _VALIDATION_FAILED; - substate = _FIRMWARE_NOT_FOUND; - FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareFile is not present\n"); @@ -738,9 +732,6 @@ namespace WPEFramework { if(firmwareType !=""){ if (firmwareType != "PCI" && firmwareType != "DRI") { SWUPDATEERR("firmwareType must be either 'PCI' or 'DRI'."); - state = _VALIDATION_FAILED; - substate = ""; - FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareType must be either 'PCI' or 'DRI'.\n"); @@ -752,9 +743,6 @@ namespace WPEFramework { else { SWUPDATEERR("firmwareType is empty"); - state = _VALIDATION_FAILED; - substate = ""; - FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|Failure\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|Failed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|firmwareType is empty\n"); @@ -783,9 +771,6 @@ namespace WPEFramework { { SWUPDATEERR("FW version of the active image and the image to be upgraded are the same. No upgrade required. imagename : %s" ,name.c_str()); - state = _VALIDATION_FAILED; - substate = _FIRMWARE_UPTODATE; - FirmwareStatus(state,substate,"write"); snprintf(fwdls.status, sizeof(fwdls.status), "Status|No upgrade needed\n"); snprintf(fwdls.FwUpdateState, sizeof(fwdls.FwUpdateState), "FwUpdateState|No upgrade needed\n"); snprintf(fwdls.failureReason, sizeof(fwdls.failureReason), "FailureReason|No upgrade needed\n"); @@ -1367,11 +1352,7 @@ bool copyFileToDirectory(const char *source_file, const char *destination_dir) { // Extract file name from the source file path const char *file_name = strrchr(source_file, '/'); - if (!file_name) { - SWUPDATEERR("Invalid source file path: %s\n", source_file); - return false; - } - file_name++; // Skip the '/' character + file_name = file_name ? file_name + 1 : source_file; // Construct the destination file path std::string dest_file_path = std::string(destination_dir) + "/" + file_name; @@ -1399,12 +1380,16 @@ bool copyFileToDirectory(const char *source_file, const char *destination_dir) { return false; } + if (src.peek() == std::ifstream::traits_type::eof()) { + SWUPDATEINFO("Source file is empty. Copying as empty file.\n"); + } + // Copy the file content dest << src.rdbuf(); - // Check if the copy was successful - if (!src || !dest) { - SWUPDATEERR("Error: File copy failed.\n"); + // Check for actual I/O errors (ignore EOF) + if (src.bad() || dest.bad()) { + SWUPDATEERR("Error: File copy failed due to I/O error.\n"); return false; } From b45603e7d3853cb4690e30edd52487f29eab1c5c Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Thu, 12 Jun 2025 15:36:15 +0000 Subject: [PATCH 04/11] test L2 --- .github/workflows/L2-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/L2-tests.yml b/.github/workflows/L2-tests.yml index 7aa8bc27..29579650 100755 --- a/.github/workflows/L2-tests.yml +++ b/.github/workflows/L2-tests.yml @@ -88,7 +88,7 @@ jobs: with: repository: rdkcentral/entservices-testframework path: entservices-testframework - ref: develop + ref: RDKEMW-4719_upto_date_validation token: ${{ secrets.RDKCM_RDKE }} - name: Apply patches ThunderTools From 1246452d0c2ace47b48f2e43da7240c28c182d6d Mon Sep 17 00:00:00 2001 From: ramkumarpraba <103193010+ramkumarpraba@users.noreply.github.com> Date: Fri, 13 Jun 2025 12:00:45 +0530 Subject: [PATCH 05/11] Update L2-tests.yml --- .github/workflows/L2-tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/L2-tests.yml b/.github/workflows/L2-tests.yml index 29579650..728bb927 100755 --- a/.github/workflows/L2-tests.yml +++ b/.github/workflows/L2-tests.yml @@ -124,6 +124,7 @@ jobs: patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/Tests/L2Tests/patches/error_code_R4_4.patch patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/Tests/L1Tests/patches/1004-Add-support-for-project-dir.patch patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/Tests/L1Tests/patches/RDKEMW-733-Add-ENTOS-IDS.patch + patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/FirmwareUpdate_UptoDate.patch cd - - name: Build Thunder run: > From 345b2df407871002dbfed71751fc4c899f150811 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 09:48:40 +0000 Subject: [PATCH 06/11] test --- Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp | 50 ++----------------- 1 file changed, 5 insertions(+), 45 deletions(-) diff --git a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp index 18c10474..7a330100 100755 --- a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp +++ b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp @@ -90,17 +90,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - JsonObject params1; - JsonObject result1; - status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "getUpdateState", params1, result1); - EXPECT_EQ(Core::ERROR_NONE, status); - - if (result1.HasLabel("state")) { - EXPECT_STREQ("VALIDATION_FAILED", result1["state"].String().c_str()); - } - if (result1.HasLabel("substate")) { - EXPECT_STREQ("FIRMWARE_NOT_FOUND", result1["substate"].String().c_str()); - } + EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); } TEST_F(FirmwareUpdateTest,EmptyFirmwareType) @@ -116,18 +106,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = ""; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - - JsonObject params1; - JsonObject result1; - status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "getUpdateState", params1, result1); - EXPECT_EQ(Core::ERROR_NONE, status); - - if (result1.HasLabel("state")) { - EXPECT_STREQ("VALIDATION_FAILED", result1["state"].String().c_str()); - } - if (result1.HasLabel("substate")) { - EXPECT_STREQ("NOT_APPLICABLE", result1["substate"].String().c_str()); - } + EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); } } @@ -143,19 +122,12 @@ TEST_F(FirmwareUpdateTest,InvalidFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "ABC"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); + EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); - JsonObject params1; JsonObject result1; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "getUpdateState", params1, result1); EXPECT_EQ(Core::ERROR_NONE, status); - - if (result1.HasLabel("state")) { - EXPECT_STREQ("VALIDATION_FAILED", result1["state"].String().c_str()); - } - if (result1.HasLabel("substate")) { - EXPECT_STREQ("NOT_APPLICABLE", result1["substate"].String().c_str()); - } } } @@ -173,18 +145,7 @@ TEST_F(FirmwareUpdateTest,FirmwareFilepath_not_exist) if (std::remove(filePath) == 0) { std::cout << "File removed successfully.\n"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - - JsonObject params1; - JsonObject result1; - status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "getUpdateState", params1, result1); - EXPECT_EQ(Core::ERROR_NONE, status); - - if (result1.HasLabel("state")) { - EXPECT_STREQ("VALIDATION_FAILED", result1["state"].String().c_str()); - } - if (result1.HasLabel("substate")) { - EXPECT_STREQ("FIRMWARE_NOT_FOUND", result1["substate"].String().c_str()); - } + EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); } } @@ -206,8 +167,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUptoDateValidatation) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE, status); - sleep(5); + EXPECT_EQ(Core::ERROR_NONE,Core::ERROR_FIRMWAREUPDATE_UPTODATE ); } } From 9ec681d2fc82d976d65c98e528f6f7a065eeb567 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 10:04:07 +0000 Subject: [PATCH 07/11] test --- Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp index 7a330100..fe3ae9ca 100755 --- a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp +++ b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp @@ -90,7 +90,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); + EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); } TEST_F(FirmwareUpdateTest,EmptyFirmwareType) @@ -106,7 +106,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = ""; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); + EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); } } @@ -122,7 +122,7 @@ TEST_F(FirmwareUpdateTest,InvalidFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "ABC"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); + EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); JsonObject params1; JsonObject result1; @@ -145,7 +145,7 @@ TEST_F(FirmwareUpdateTest,FirmwareFilepath_not_exist) if (std::remove(filePath) == 0) { std::cout << "File removed successfully.\n"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE, Core::ERROR_INVALID_PARAMETER); + EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); } } @@ -167,7 +167,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUptoDateValidatation) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(Core::ERROR_NONE,Core::ERROR_FIRMWAREUPDATE_UPTODATE ); + EXPECT_EQ(status,Core::ERROR_FIRMWAREUPDATE_UPTODATE ); } } From d01e1e32a33ba573c4d60faa2b23f45e1921e698 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 10:55:26 +0000 Subject: [PATCH 08/11] test --- Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp index fe3ae9ca..74a5e7fd 100755 --- a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp +++ b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp @@ -61,7 +61,7 @@ FirmwareUpdateTest:: FirmwareUpdateTest():L2TestMocks() { Core::JSONRPC::Message message; string response; - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; /* Activate plugin in constructor */ status = ActivateService("org.rdk.FirmwareUpdate"); @@ -73,7 +73,7 @@ FirmwareUpdateTest:: FirmwareUpdateTest():L2TestMocks() */ FirmwareUpdateTest::~FirmwareUpdateTest() { - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; status = DeactivateService("org.rdk.FirmwareUpdate"); EXPECT_EQ(Core::ERROR_NONE, status); @@ -81,7 +81,7 @@ FirmwareUpdateTest::~FirmwareUpdateTest() TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) { - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -95,7 +95,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) TEST_F(FirmwareUpdateTest,EmptyFirmwareType) { - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream file(filePath, std::ios::binary); @@ -112,7 +112,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareType) TEST_F(FirmwareUpdateTest,InvalidFirmwareType) { - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream file(filePath, std::ios::binary); @@ -133,7 +133,7 @@ TEST_F(FirmwareUpdateTest,InvalidFirmwareType) TEST_F(FirmwareUpdateTest,FirmwareFilepath_not_exist) { - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -153,7 +153,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUptoDateValidatation) { const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream versionFile("/version.txt"); - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -176,7 +176,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUpdate_without_imageFlasher) std::ofstream file("/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"); std::ofstream versionFile("/version.txt"); std::ofstream devicePropertiesFile("/etc/device.properties"); - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -215,7 +215,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUpdate_with_imageFlasher) std::ofstream devicePropertiesFile("/etc/device.properties"); std::ofstream imageFlasher("/lib/rdk/imageFlasher.sh"); - uint32_t status = Core::ERROR_GENERAL; + Core::hresult status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; From ae2f21397a2d807135315dca7963b9673b340311 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 11:12:29 +0000 Subject: [PATCH 09/11] Revert "test" This reverts commit d01e1e32a33ba573c4d60faa2b23f45e1921e698. --- Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp index 74a5e7fd..fe3ae9ca 100755 --- a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp +++ b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp @@ -61,7 +61,7 @@ FirmwareUpdateTest:: FirmwareUpdateTest():L2TestMocks() { Core::JSONRPC::Message message; string response; - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; /* Activate plugin in constructor */ status = ActivateService("org.rdk.FirmwareUpdate"); @@ -73,7 +73,7 @@ FirmwareUpdateTest:: FirmwareUpdateTest():L2TestMocks() */ FirmwareUpdateTest::~FirmwareUpdateTest() { - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; status = DeactivateService("org.rdk.FirmwareUpdate"); EXPECT_EQ(Core::ERROR_NONE, status); @@ -81,7 +81,7 @@ FirmwareUpdateTest::~FirmwareUpdateTest() TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) { - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -95,7 +95,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) TEST_F(FirmwareUpdateTest,EmptyFirmwareType) { - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream file(filePath, std::ios::binary); @@ -112,7 +112,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareType) TEST_F(FirmwareUpdateTest,InvalidFirmwareType) { - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream file(filePath, std::ios::binary); @@ -133,7 +133,7 @@ TEST_F(FirmwareUpdateTest,InvalidFirmwareType) TEST_F(FirmwareUpdateTest,FirmwareFilepath_not_exist) { - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -153,7 +153,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUptoDateValidatation) { const char* filePath = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; std::ofstream versionFile("/version.txt"); - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -176,7 +176,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUpdate_without_imageFlasher) std::ofstream file("/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"); std::ofstream versionFile("/version.txt"); std::ofstream devicePropertiesFile("/etc/device.properties"); - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; @@ -215,7 +215,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUpdate_with_imageFlasher) std::ofstream devicePropertiesFile("/etc/device.properties"); std::ofstream imageFlasher("/lib/rdk/imageFlasher.sh"); - Core::hresult status = Core::ERROR_GENERAL; + uint32_t status = Core::ERROR_GENERAL; JsonObject params; JsonObject result; From 3f90d9e73c2e12917374c43b1d8de5ee4020e657 Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 11:21:46 +0000 Subject: [PATCH 10/11] test --- Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp | 10 +++++----- build_dependencies.sh | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp index fe3ae9ca..ffb995e1 100755 --- a/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp +++ b/Tests/L2Tests/tests/FirmwareUpdate_L2Test.cpp @@ -90,7 +90,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareFilepath) params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); + EXPECT_NE(status,Core::ERROR_NONE); } TEST_F(FirmwareUpdateTest,EmptyFirmwareType) @@ -106,7 +106,7 @@ TEST_F(FirmwareUpdateTest,EmptyFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = ""; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); + EXPECT_NE(status,Core::ERROR_NONE); } } @@ -122,7 +122,7 @@ TEST_F(FirmwareUpdateTest,InvalidFirmwareType) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "ABC"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); + EXPECT_NE(status,Core::ERROR_NONE); JsonObject params1; JsonObject result1; @@ -145,7 +145,7 @@ TEST_F(FirmwareUpdateTest,FirmwareFilepath_not_exist) if (std::remove(filePath) == 0) { std::cout << "File removed successfully.\n"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(status, Core::ERROR_INVALID_PARAMETER); + EXPECT_NE(status,Core::ERROR_NONE); } } @@ -167,7 +167,7 @@ TEST_F(FirmwareUpdateTest,FirmwareUptoDateValidatation) params["firmwareFilepath"] = "/tmp/ELTE11MWR_MIDDLEWARE_DEV_default_20241122145614.bin"; params["firmwareType"] = "PCI"; status = InvokeServiceMethod("org.rdk.FirmwareUpdate", "updateFirmware", params, result); - EXPECT_EQ(status,Core::ERROR_FIRMWAREUPDATE_UPTODATE ); + EXPECT_NE(status,Core::ERROR_NONE); } } diff --git a/build_dependencies.sh b/build_dependencies.sh index 65c5637a..d2708f15 100644 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -63,6 +63,7 @@ patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/Use_Legact_Alt_B patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/error_code_R4_4.patch patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/1004-Add-support-for-project-dir.patch patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/RDKEMW-733-Add-ENTOS-IDS.patch +patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/FirmwareUpdate_UptoDate.patch cd - cmake -G Ninja -S Thunder -B build/Thunder \ @@ -170,4 +171,4 @@ echo "========================================================================== cd ../../ cp -r /usr/include/gstreamer-1.0/gst /usr/include/glib-2.0/* /usr/lib/x86_64-linux-gnu/glib-2.0/include/* /usr/local/include/trower-base64/base64.h . -ls -la ${GITHUB_WORKSPACE} \ No newline at end of file +ls -la ${GITHUB_WORKSPACE} From 3136602bb47a143bfd3065d2d3a9031421e528bc Mon Sep 17 00:00:00 2001 From: ramkumarpraba Date: Fri, 13 Jun 2025 12:12:30 +0000 Subject: [PATCH 11/11] test --- build_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_dependencies.sh b/build_dependencies.sh index d2708f15..4270c311 100644 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -33,7 +33,7 @@ git clone --branch R4.4.1 https://github.com/rdkcentral/Thunder.git git clone --branch main https://github.com/rdkcentral/entservices-apis.git -git clone https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git +git clone --branch RDKEMW-4719_upto_date_validation https://$GITHUB_TOKEN@github.com/rdkcentral/entservices-testframework.git ############################ # Build Thunder-Tools