From 67f9118bcc6a546f2f2f79c10d52b17330c208d6 Mon Sep 17 00:00:00 2001 From: kalyan alle Date: Thu, 13 Mar 2025 04:07:19 +0000 Subject: [PATCH 1/2] Fix: Add Test for Validating ECC Default State Values The test ensures that the ECC state retrieval API returns valid values when ECC is available on a valid device handle Related-To: VLCLJ-2433 Signed-off-by: kalyan alle --- .../test_sysman_ecc/src/test_sysman_ecc.cpp | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp b/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp index e2fe25c76..986e28067 100644 --- a/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp +++ b/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp @@ -185,4 +185,26 @@ TEST_F( } } +TEST_F( + ECC_TEST, + GIvenValidDeviceHandleWhenEccGetDefaultStateIsQueriedThenValidValuesAreReturned) { + for (const auto &device : devices) { + auto available = lzt::get_ecc_available(device); + auto configurable = lzt::get_ecc_configurable(device); + if (available == static_cast(true) && configurable == static_cast(true)) { + zes_device_ecc_properties_t eccState = { + ZES_STRUCTURE_TYPE_DEVICE_ECC_PROPERTIES, nullptr}; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGetEccState(device, &eccState)); + EXPECT_GE(eccState.currentState, ZES_DEVICE_ECC_STATE_UNAVAILABLE); + EXPECT_LE(eccState.currentState, ZES_DEVICE_ECC_STATE_DISABLED); + EXPECT_GE(eccState.pendingState, ZES_DEVICE_ECC_STATE_UNAVAILABLE); + EXPECT_LE(eccState.pendingState, ZES_DEVICE_ECC_STATE_DISABLED); + EXPECT_GE(eccState.pendingAction, ZES_DEVICE_ACTION_NONE); + EXPECT_LE(eccState.pendingAction, ZES_DEVICE_ACTION_COLD_SYSTEM_REBOOT); + } else { + LOG_INFO << "ECC is not available or not configurable"; + } + } +} + } // namespace From d2ded55b959e0f23988f7a3c5869d6f7510106f5 Mon Sep 17 00:00:00 2001 From: kalyan alle Date: Wed, 19 Mar 2025 14:58:10 +0000 Subject: [PATCH 2/2] Fix: Add test case for setting the default settings and check the get ECC state Related-To: VLCLJ-2434 Signed-off-by: kalyan alle --- .../test_sysman_ecc/src/test_sysman_ecc.cpp | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp b/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp index 986e28067..bafe89ac3 100644 --- a/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp +++ b/conformance_tests/sysman/test_sysman_ecc/src/test_sysman_ecc.cpp @@ -207,4 +207,39 @@ TEST_F( } } +TEST_F( + ECC_TEST, + GIvenValidDeviceHandleAndECCAvailableWhenEccGetDefaultStateIsQueriedAndSetThenDefaultValuesAreReturnedFromGetEccAPI) { + for (const auto &device : devices) { + //Check if ECC is available and configurable + auto available = lzt::get_ecc_available(device); + auto configurable = lzt::get_ecc_configurable(device); + if (available == static_cast(true) && configurable == static_cast(true)) { + //Get ECC state with defaults + zes_device_ecc_properties_t eccState = { + ZES_STRUCTURE_TYPE_DEVICE_ECC_PROPERTIES, nullptr}; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGetEccState(device, &eccState)); + + //Set ECC state with default settings + zes_device_ecc_desc_t newState = {ZES_STRUCTURE_TYPE_DEVICE_ECC_DESC, nullptr}; + newState.state = eccState.currentState; + zes_device_ecc_properties_t setState = { + ZES_STRUCTURE_TYPE_DEVICE_ECC_PROPERTIES, nullptr}; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceSetEccState(device, &newState, &setState)); + + //Get ECC state without defaults + zes_device_ecc_properties_t eccStateAfterSet = { + ZES_STRUCTURE_TYPE_DEVICE_ECC_PROPERTIES, nullptr}; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGetEccState(device, &eccStateAfterSet)); + + //Check that returned values match defaults + EXPECT_EQ(eccStateAfterSet.currentState, eccState.currentState); + EXPECT_EQ(eccStateAfterSet.pendingState, eccState.pendingState); + EXPECT_EQ(eccStateAfterSet.pendingAction, eccState.pendingAction); + } else { + LOG_INFO << "ECC is not available or not configurable"; + } + } +} + } // namespace