diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index 6f06d8d8..b9e8ee14 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -2,7 +2,7 @@ name: Code Coverage on: pull_request: - branches: [ main ] + branches: [ develop ] jobs: execute-unit-code-coverage-report-on-release: diff --git a/rfcMgr/gtest/gtest_main.cpp b/rfcMgr/gtest/gtest_main.cpp index 200490e7..07356e18 100644 --- a/rfcMgr/gtest/gtest_main.cpp +++ b/rfcMgr/gtest/gtest_main.cpp @@ -906,6 +906,27 @@ TEST(rfcMgrTest, executeCommandAndGetOutput_eRdkSsaCli) { EXPECT_EQ(ret , -1); } +// --- Additional tests for rfc_common.cpp --- + +TEST(rfcMgrTest, getSyseventValue_returnsEmptyOnInvalidKey) { + // This test expects sysevent is not available in test env, so returns empty + std::string value = getSyseventValue("__nonexistent_key_for_test__"); + EXPECT_EQ(value, ""); +} + +TEST(rfcMgrTest, waitForRfcCompletion_doesNotCrash) { + // This test just ensures the function runs without crashing or hanging + // It is a smoke test, as actual sysevent and file presence are not guaranteed in test env + ASSERT_NO_FATAL_FAILURE(waitForRfcCompletion()); +} + +TEST(rfcMgrTest, getCronFromDCMSettings_returnsStringOrEmpty) { + // This test expects no real DCMSettings.conf, so should return empty string + std::string cron = getCronFromDCMSettings(); + // Accept either empty or any string (smoke test) + SUCCEED(); +} + TEST(rfcMgrTest, getRebootRequirement) { RuntimeFeatureControlProcessor *rfcObj = new RuntimeFeatureControlProcessor(); bool result = rfcObj->getRebootRequirement(); @@ -1570,6 +1591,72 @@ TEST(rfcMgrTest, ProcessXconfResponse_WithValidAccountID) EXPECT_GE(result, 0); } + + +// --- Additional coverage for rfc_manager.cpp --- + +TEST(rfcMgrTest, IsIarmBusConnected_smoke) { + rfc::RFCManager mgr; + // Should not crash, always returns true if !USE_IARMBUS + EXPECT_TRUE(mgr.IsIarmBusConnected()); +} + +TEST(rfcMgrTest, InitializeIARM_smoke) { + rfc::RFCManager mgr; + // Should not crash + ASSERT_NO_FATAL_FAILURE(mgr.InitializeIARM()); +} +/* +TEST(rfcMgrTest, term_event_handler_smoke) { + // Should not crash, always returns 0 + EXPECT_EQ(term_event_handler(), 0); +} +*/ +TEST(rfcMgrTest, getErouterIPAddress_empty) { + rfc::RFCManager mgr; + // Should return empty string in test env + std::string ip = mgr.getErouterIPAddress(); + SUCCEED(); +} + +TEST(rfcMgrTest, CheckIPConnectivity_noIP) { + rfc::RFCManager mgr; + // Should return false in test env + EXPECT_FALSE(mgr.CheckIPConnectivity()); +} + +TEST(rfcMgrTest, CheckIProuteConnectivity_nullFile) { + rfc::RFCManager mgr; + // Should return false for null file + EXPECT_FALSE(mgr.CheckIProuteConnectivity(nullptr)); +} +/* +TEST(rfcMgrTest, rfcMgrEventHandler_smoke) { +#if defined(USE_IARMBUS) + rfcMgrEventHandler(nullptr, 0, nullptr, 0); +#endif + SUCCEED(); +} +*/ +// --- Additional edge/error-path tests for rfc_common.cpp --- + +TEST(rfcMgrTest, read_RFCProperty_nullArgs) { + char buf[16]; + // Null key + EXPECT_EQ(read_RFCProperty("type", nullptr, buf, sizeof(buf)), -1); + // Null out_value + EXPECT_EQ(read_RFCProperty("type", "key", nullptr, sizeof(buf)), -1); + // Zero datasize + EXPECT_EQ(read_RFCProperty("type", "key", buf, 0), -1); +} + +TEST(rfcMgrTest, executeCommandAndGetOutput_invalidCmd) { + std::string result; + // Invalid enum value (simulate by casting) + int ret = executeCommandAndGetOutput((SYSCMD)999, nullptr, result); + EXPECT_EQ(ret, -1); +} + GTEST_API_ int main(int argc, char *argv[]){ ::testing::InitGoogleTest(&argc, argv); diff --git a/rfcMgr/gtest/gtest_utils.cpp b/rfcMgr/gtest/gtest_utils.cpp index a109f1f2..eb828c58 100644 --- a/rfcMgr/gtest/gtest_utils.cpp +++ b/rfcMgr/gtest/gtest_utils.cpp @@ -195,6 +195,11 @@ TEST(utilsTest, cleanAllFiles) { std::remove("/opt/secure/RFC/.RFC_LIST_SNMP2WL.ini"); } +TEST(utilsTest, legacyRfcEnabled_returnsFalseIfFileMissing) { + // This test expects the .RFC_LegacyRFCEnabled.ini file does not exist + // Should return false + EXPECT_FALSE(legacyRfcEnabled()); +} GTEST_API_ int main(int argc, char *argv[]){ ::testing::InitGoogleTest(&argc, argv); diff --git a/rfcMgr/mtlsUtils.cpp b/rfcMgr/mtlsUtils.cpp index d3ce2d9c..870cedd0 100644 --- a/rfcMgr/mtlsUtils.cpp +++ b/rfcMgr/mtlsUtils.cpp @@ -20,6 +20,7 @@ * limitations under the License. */ + #include "mtlsUtils.h" #include "rfc_common.h" #ifdef LIBRDKCONFIG_BUILD diff --git a/run_ut.sh b/run_ut.sh index 66da89c0..1fb6c6f6 100644 --- a/run_ut.sh +++ b/run_ut.sh @@ -19,7 +19,7 @@ # limitations under the License. #################################################################################### -ENABLE_COV=false +ENABLE_COV=true if [ "x$1" = "x--enable-cov" ]; then echo "Enabling coverage options"