Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,16 @@ else()
set_property(TEST tests_multi_driver_sysman_vf_management_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_driver_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManDriverApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_driver_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_driver_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManDriverApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_driver_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_driver_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_device_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManDeviceApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_device_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

Expand Down Expand Up @@ -704,7 +714,55 @@ else()
set_property(TEST tests_multi_driver_sysman_overclock_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_pci_link_speed_downgrade_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManPciLinkSpeedDowngradeApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_pci_link_speed_downgrade_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_pci_link_speed_downgrade_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManPciLinkSpeedDowngradeApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_pci_link_speed_downgrade_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_pci_link_speed_downgrade_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_power_limits_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManPowerLimitsExtApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_power_limits_ext_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_power_limits_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManPowerLimitsExtApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_power_limits_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_power_limits_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_ras_state_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManRasStateExtApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_ras_state_ext_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_ras_state_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManRasStateExtApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_ras_state_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_ras_state_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_firmware_security_version_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManFirmwareSecurityVersionExtApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_firmware_security_version_ext_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_firmware_security_version_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManFirmwareSecurityVersionExtApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_firmware_security_version_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_firmware_security_version_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

add_test(NAME tests_single_driver_sysman_device_mapping_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManDeviceMappingExtApisThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST tests_single_driver_sysman_device_mapping_ext_api PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME tests_multi_driver_sysman_device_mapping_ext_api COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingSysManDeviceMappingExtApisThenExpectNullDriverIsReachedSuccessfully)
if (MSVC)
set_property(TEST tests_multi_driver_sysman_device_mapping_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
else()
set_property(TEST tests_multi_driver_sysman_device_mapping_ext_api APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_ALT_DRIVERS=${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
endif()

# Driver ordering tests - each test added individually
add_test(NAME tests_driver_ordering_specific_type_and_index COMMAND tests --gtest_filter=*GivenZelDriversOrderWithSpecificTypeAndIndexWhenCallingZeInitDriversThenSuccessfulReturn)
Expand Down
175 changes: 175 additions & 0 deletions test/loader_api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2026,6 +2026,30 @@ TEST(
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManDriverApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));
for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t count = 1;
zes_driver_extension_properties_t extensionProperties{};
char * functionName = nullptr;
void * pFunctionAddress = nullptr;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGetExtensionProperties(driverHandles[i], &count, &extensionProperties));
EXPECT_TRUE(compare_env("zesDriverGetExtensionProperties", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGetExtensionFunctionAddress(driverHandles[i], functionName, &pFunctionAddress));
EXPECT_TRUE(compare_env("zesDriverGetExtensionFunctionAddress", std::to_string(i + 1)));
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManDeviceApisThenExpectNullDriverIsReachedSuccessfully)
Expand Down Expand Up @@ -2362,6 +2386,7 @@ TEST(
zes_fan_properties_t fanProperties{};
zes_fan_config_t fanConfig{};
zes_fan_speed_t fanSpeed{};
zes_fan_speed_table_t speedTable{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceEnumFans(deviceHandle, &count, &fanHandle));
Expand All @@ -2374,6 +2399,8 @@ TEST(
EXPECT_TRUE(compare_env("zesFanSetDefaultMode", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFanSetFixedSpeedMode(fanHandle, &fanSpeed));
EXPECT_TRUE(compare_env("zesFanSetFixedSpeedMode", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFanSetSpeedTableMode(fanHandle, &speedTable));
EXPECT_TRUE(compare_env("zesFanSetSpeedTableMode", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFanGetState(fanHandle, ZES_FAN_SPEED_UNITS_RPM, &fanSpeed.speed));
EXPECT_TRUE(compare_env("zesFanGetState", std::to_string(i + 1)));
}
Expand Down Expand Up @@ -2864,6 +2891,154 @@ TEST(
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManPciLinkSpeedDowngradeApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));

for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t deviceCount = 1;
zes_device_handle_t deviceHandle{};
zes_device_action_t pendingAction{};
ze_bool_t shouldDowngrade = true;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDevicePciLinkSpeedUpdateExt(deviceHandle, shouldDowngrade, &pendingAction));
EXPECT_TRUE(compare_env("zesDevicePciLinkSpeedUpdateExt", std::to_string(i + 1)));
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManPowerLimitsExtApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));

for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t deviceCount = 1;
zes_device_handle_t deviceHandle{};
zes_pwr_handle_t powerHandle{};
uint32_t count = 1;
zes_power_limit_ext_desc_t powerLimitsExt{};

EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceEnumPowerDomains(deviceHandle, &count, &powerHandle));
EXPECT_TRUE(compare_env("zesDeviceEnumPowerDomains", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesPowerGetLimitsExt(powerHandle, &count, &powerLimitsExt));
EXPECT_TRUE(compare_env("zesPowerGetLimitsExt", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesPowerSetLimitsExt(powerHandle, &count, &powerLimitsExt));
EXPECT_TRUE(compare_env("zesPowerSetLimitsExt", std::to_string(i + 1)));
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManRasStateExtApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));

for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t deviceCount = 1;
zes_device_handle_t deviceHandle{};
zes_ras_handle_t rasHandle{};
zes_ras_state_exp_t rasState{};
zes_ras_error_category_exp_t errorCategory = ZES_RAS_ERROR_CATEGORY_EXP_CACHE_ERRORS;
uint32_t count = 1;
uint32_t stateCount = 0;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceEnumRasErrorSets(deviceHandle, &count, &rasHandle));
EXPECT_TRUE(compare_env("zesDeviceEnumRasErrorSets", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesRasGetStateExp(rasHandle, &stateCount, &rasState));
EXPECT_TRUE(compare_env("zesRasGetStateExp", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesRasClearStateExp(rasHandle, errorCategory));
EXPECT_TRUE(compare_env("zesRasClearStateExp", std::to_string(i + 1)));
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManFirmwareSecurityVersionExtApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));

for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t deviceCount = 1;
zes_device_handle_t deviceHandle{};
uint32_t count = 1;
zes_firmware_handle_t firmwareHandle{};
char version[ZES_STRING_PROPERTY_SIZE];
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceEnumFirmwares(deviceHandle, &count, &firmwareHandle));
EXPECT_TRUE(compare_env("zesDeviceEnumFirmwares", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFirmwareGetSecurityVersionExp(firmwareHandle, version));
EXPECT_TRUE(compare_env("zesFirmwareGetSecurityVersionExp", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFirmwareSetSecurityVersionExp(firmwareHandle));
EXPECT_TRUE(compare_env("zesFirmwareSetSecurityVersionExp", std::to_string(i + 1)));
}
}

TEST(
SysManApiLoaderDriverInteraction,
GivenLevelZeroLoaderPresentWhenCallingSysManDeviceMappingExtApisThenExpectNullDriverIsReachedSuccessfully)
{
EXPECT_EQ(ZE_RESULT_SUCCESS, zesInit(0));
uint32_t driverCount = 0;
std::vector<zes_driver_handle_t> driverHandles{};
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, nullptr));
EXPECT_GT(driverCount, 0);
driverHandles.resize(driverCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGet(&driverCount, driverHandles.data()));

for (std::size_t i = 0; i < driverHandles.size(); i++)
{
uint32_t deviceCount = 1;
zes_device_handle_t deviceHandle{};
zes_subdevice_exp_properties_t subDeviceProps{};
zes_uuid_t uuid{};
uint32_t subDeviceCount = 0;
uint32_t subdeviceId = 0;
ze_bool_t onSubdevice = false;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGet(driverHandles[i], &deviceCount, &deviceHandle));
EXPECT_TRUE(compare_env("zesDeviceGet", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDeviceGetSubDevicePropertiesExp(deviceHandle, &subDeviceCount, &subDeviceProps));
EXPECT_TRUE(compare_env("zesDeviceGetSubDevicePropertiesExp", std::to_string(i + 1)));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesDriverGetDeviceByUuidExp(driverHandles[i], uuid, &deviceHandle, &onSubdevice, &subdeviceId));
EXPECT_TRUE(compare_env("zesDriverGetDeviceByUuidExp", std::to_string(i + 1)));
}
}

// Helper function to clear ZEL_DRIVERS_ORDER environment variable
void clearDriverOrderEnv() {
putenv_safe(const_cast<char *>("ZEL_DRIVERS_ORDER="));
Expand Down
Loading