From 9d45ea4aae588e6d349ce3c5d16f0643c51315b4 Mon Sep 17 00:00:00 2001 From: "Raman, Sudharsan" Date: Thu, 13 Mar 2025 10:58:12 +0530 Subject: [PATCH 1/2] test: Add CTS for Sysman Survivability mode Related-To: VLCLJ-2435 Signed-off-by: Raman, Sudharsan --- .../sysman/test_sysman_init/CMakeLists.txt | 8 +++ .../test_init_sysman_survivability_mode.cpp | 53 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp diff --git a/conformance_tests/sysman/test_sysman_init/CMakeLists.txt b/conformance_tests/sysman/test_sysman_init/CMakeLists.txt index 7356eb317..94748dc10 100644 --- a/conformance_tests/sysman/test_sysman_init/CMakeLists.txt +++ b/conformance_tests/sysman/test_sysman_init/CMakeLists.txt @@ -35,4 +35,12 @@ add_lzt_test( src/test_init_sysman_before_core.cpp src/main.cpp LINK_LIBRARIES level_zero_tests::logging level_zero_tests::utils) + +add_lzt_test( + NAME test_init_sysman_survivability_mode + GROUP "/conformance_tests/tools/sysman" + SOURCES + src/test_init_sysman_survivability_mode.cpp + src/main.cpp + LINK_LIBRARIES level_zero_tests::logging level_zero_tests::utils) \ No newline at end of file diff --git a/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp b/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp new file mode 100644 index 000000000..f4c169b4a --- /dev/null +++ b/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp @@ -0,0 +1,53 @@ +/* + * + * Copyright (C) 2024 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "gtest/gtest.h" + +#include "logging/logging.hpp" +#include "utils/utils.hpp" +#include "test_harness/test_harness.hpp" + +#include + +namespace { + +TEST(SysmanInitTests, + GivenSuccessfulSysmanInitWhenzesDeviceGetReturnsValidDevicesThenSurvivabilityModeIsOffIsDetected) { + + //Initialize Sysman and get devices + ze_result_t result = zesInit(0); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + uint32_t zes_driver_count = 0; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&zes_driver_count, nullptr)); + EXPECT_GT(zes_driver_count, 0); + + std::vector drivers(zes_driver_count); + result = zesDriverGet(&zes_driver_count, drivers.data()); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + + for (auto driver : drivers) { + uint32_t device_count = 0; + result = zesDeviceGet(driver, &device_count, nullptr); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + ASSERT_GT(device_count, 0); + + std::vector devices(device_count); + result = zesDeviceGet(driver, &device_count, devices.data()); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + + for (auto device : devices) { + // Check that zesDeviceGetProperties is successful for all device handles + zes_device_properties_t properties = {ZES_STRUCTURE_TYPE_DEVICE_PROPERTIES + , nullptr}; + result = zesDeviceGetProperties(device, &properties); + EXPECT_EQ(result, ZE_RESULT_SUCCESS); + } + } +} + +} // namespace From 61e97104887ea6652184f9ef4b41fd628ac811c6 Mon Sep 17 00:00:00 2001 From: "Raman, Sudharsan" Date: Wed, 19 Mar 2025 20:09:48 +0530 Subject: [PATCH 2/2] test: Add Survivability test with additional module api's check Related-To: VLCLJ-2436 Signed-off-by: Raman, Sudharsan --- .../test_init_sysman_survivability_mode.cpp | 77 ++++++++++++++++--- 1 file changed, 67 insertions(+), 10 deletions(-) diff --git a/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp b/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp index f4c169b4a..f24bab9be 100644 --- a/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp +++ b/conformance_tests/sysman/test_sysman_init/src/test_init_sysman_survivability_mode.cpp @@ -15,37 +15,94 @@ #include namespace { - -TEST(SysmanInitTests, + +TEST( + SysmanInitTests, GivenSuccessfulSysmanInitWhenzesDeviceGetReturnsValidDevicesThenSurvivabilityModeIsOffIsDetected) { - //Initialize Sysman and get devices ze_result_t result = zesInit(0); ASSERT_EQ(result, ZE_RESULT_SUCCESS); uint32_t zes_driver_count = 0; EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&zes_driver_count, nullptr)); EXPECT_GT(zes_driver_count, 0); - + + std::vector drivers(zes_driver_count); + result = zesDriverGet(&zes_driver_count, drivers.data()); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + + for (auto driver : drivers) { + uint32_t device_count = 0; + result = zesDeviceGet(driver, &device_count, nullptr); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + ASSERT_GT(device_count, 0); + + std::vector devices(device_count); + result = zesDeviceGet(driver, &device_count, devices.data()); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + + for (auto device : devices) { + zes_device_properties_t properties = { + ZES_STRUCTURE_TYPE_DEVICE_PROPERTIES, nullptr}; + result = zesDeviceGetProperties(device, &properties); + EXPECT_EQ(result, ZE_RESULT_SUCCESS); + } + } +} + +TEST( + SysmanInitTests, + GivenSysmanInitWhenzesDeviceGetPropertiesReturnsSurvivabilityDetectedErrorThenOnlyFormwareAPIsSucceed) { + + ze_result_t result = zesInit(0); + ASSERT_EQ(result, ZE_RESULT_SUCCESS); + uint32_t zes_driver_count = 0; + EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&zes_driver_count, nullptr)); + EXPECT_GT(zes_driver_count, 0); std::vector drivers(zes_driver_count); result = zesDriverGet(&zes_driver_count, drivers.data()); ASSERT_EQ(result, ZE_RESULT_SUCCESS); - + for (auto driver : drivers) { uint32_t device_count = 0; result = zesDeviceGet(driver, &device_count, nullptr); ASSERT_EQ(result, ZE_RESULT_SUCCESS); ASSERT_GT(device_count, 0); - + std::vector devices(device_count); result = zesDeviceGet(driver, &device_count, devices.data()); ASSERT_EQ(result, ZE_RESULT_SUCCESS); - + for (auto device : devices) { - // Check that zesDeviceGetProperties is successful for all device handles - zes_device_properties_t properties = {ZES_STRUCTURE_TYPE_DEVICE_PROPERTIES - , nullptr}; + zes_device_properties_t properties = { + ZES_STRUCTURE_TYPE_DEVICE_PROPERTIES, nullptr}; result = zesDeviceGetProperties(device, &properties); EXPECT_EQ(result, ZE_RESULT_SUCCESS); + + uint32_t temp_count = 0; + temp_count = lzt::get_temp_handle_count(device); + if (temp_count == 0) { + FAIL() << "No handles found: " + << _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); + } + + uint32_t standby_count = 0; + auto p_standby_handles = lzt::get_standby_handles(device, standby_count); + for (auto p_standby_handle : p_standby_handles) { + EXPECT_NE(nullptr, p_standby_handle); + } + + uint32_t count = 0; + count = lzt::get_firmware_handle_count(device); + if (count == 0) { + FAIL() << "No handles found: " + << _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); + } + + auto firmware_handles = lzt::get_firmware_handles(device, count); + if (count == 0) { + FAIL() << "No handles found: " + << _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE); + } } } }