Skip to content

Commit db170d0

Browse files
vishnu-khanthnrspruit
authored andcommitted
test: Add tests for zer API's
Signed-off-by: Vishnu Khanth <[email protected]>
1 parent 18d5cd7 commit db170d0

File tree

2 files changed

+156
-32
lines changed

2 files changed

+156
-32
lines changed

test/CMakeLists.txt

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -596,35 +596,6 @@ set_property(TEST driver_ordering_trim_function PROPERTY ENVIRONMENT "ZE_ENABLE_
596596
add_test(NAME driver_ordering_parse_driver_order COMMAND tests --gtest_filter=DriverOrderingHelperFunctionsTest.ParseDriverOrder_*)
597597
set_property(TEST driver_ordering_parse_driver_order PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1")
598598

599-
add_test(NAME tests_sigle_driver_runtime_api_ddi_ext_v1_1 COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
600-
set_property(TEST tests_sigle_driver_runtime_api_ddi_ext_v1_1 PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1")
601-
602-
add_test(NAME tests_multi_driver_runtime_api_ddi_ext_v1_1 COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
603-
if (MSVC)
604-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_v1_1 APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
605-
else()
606-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_v1_1 APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
607-
endif()
608-
609-
add_test(NAME tests_single_driver_runtime_api_ddi_ext_unsupported COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
610-
set_property(TEST tests_single_driver_runtime_api_ddi_ext_unsupported PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1")
611-
612-
add_test(NAME tests_multi_driver_runtime_api_ddi_ext_unsupported COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
613-
if (MSVC)
614-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_unsupported APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
615-
else()
616-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_unsupported APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
617-
endif()
618-
619-
add_test(NAME tests_sigle_driver_runtime_api_ddi_ext_v1_0 COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisThenExpectErrorUninitialized)
620-
set_property(TEST tests_sigle_driver_runtime_api_ddi_ext_v1_0 PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1")
621-
622-
add_test(NAME tests_multi_driver_runtime_api_ddi_ext_v1_0 COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisThenExpectErrorUninitialized)
623-
if (MSVC)
624-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_v1_0 APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
625-
else()
626-
set_property(TEST tests_multi_driver_runtime_api_ddi_ext_v1_0 APPEND PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;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")
627-
endif()
628599

629600
# These tests are currently not supported on Windows. The reason is that the std::cerr is not being redirected to a pipe in Windows to be then checked against the expected output.
630601
if(NOT MSVC)
@@ -635,3 +606,52 @@ if(NOT MSVC)
635606
add_test(NAME tests_event_reset_reuse COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingzeEventHostResetWithAlreadySignaledEventThenUsingEventAgainThenValidationLayerDoesNotPrintsWarningOfIllegalUsage*)
636607
set_property(TEST tests_event_reset_reuse PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1;ZE_ENABLE_VALIDATION_LAYER=1;ZEL_ENABLE_EVENTS_CHECKER=1")
637608
endif()
609+
610+
# ZER Runtime API Tests
611+
612+
# Helper function to add runtime API tests
613+
function(add_runtime_api_test test_scenario init_method driver_config)
614+
set(test_name "tests_${driver_config}_runtime_api_${test_scenario}_${init_method}")
615+
616+
# Define test scenarios and their corresponding gtest filters
617+
if(test_scenario STREQUAL "ddi_ext_v1_1")
618+
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisAfter${init_method}ThenExpectNullDriverIsReachedSuccessfully")
619+
elseif(test_scenario STREQUAL "ddi_ext_unsupported")
620+
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisAfter${init_method}ThenExpectNullDriverIsReachedSuccessfully")
621+
elseif(test_scenario STREQUAL "ddi_ext_v1_0")
622+
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisAfter${init_method}ThenExpectErrorUninitialized")
623+
endif()
624+
625+
# Add the test
626+
add_test(NAME ${test_name} COMMAND tests --gtest_filter=${gtest_filter})
627+
628+
# Set base environment variables
629+
set(base_env "ZE_ENABLE_LOADER_DRIVER_DDI_PATH=1;ZE_ENABLE_LOADER_DEBUG_TRACE=1")
630+
631+
if(driver_config STREQUAL "single_driver")
632+
# Single driver configuration
633+
set_property(TEST ${test_name} PROPERTY ENVIRONMENT "${base_env};ZE_ENABLE_NULL_DRIVER=1")
634+
elseif(driver_config STREQUAL "multi_driver")
635+
# Multi-driver configuration
636+
if(MSVC)
637+
set(alt_drivers "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test1.dll,${CMAKE_BINARY_DIR}/bin/$<CONFIG>/ze_null_test2.dll")
638+
else()
639+
set(alt_drivers "${CMAKE_BINARY_DIR}/lib/libze_null_test1.so,${CMAKE_BINARY_DIR}/lib/libze_null_test2.so")
640+
endif()
641+
set_property(TEST ${test_name} APPEND PROPERTY ENVIRONMENT "${base_env};ZE_ENABLE_ALT_DRIVERS=${alt_drivers}")
642+
endif()
643+
endfunction()
644+
645+
# Generate all ZER Runtime API tests using loops
646+
set(test_scenarios "ddi_ext_v1_1;ddi_ext_unsupported;ddi_ext_v1_0")
647+
set(init_methods "ZeInitDrivers;ZeInit")
648+
649+
foreach(init_method IN LISTS init_methods)
650+
foreach(test_scenario IN LISTS test_scenarios)
651+
# Add single driver tests
652+
add_runtime_api_test(${test_scenario} ${init_method} "single_driver")
653+
654+
# Add multi-driver tests
655+
add_runtime_api_test(${test_scenario} ${init_method} "multi_driver")
656+
endforeach()
657+
endforeach()

test/loader_api.cpp

Lines changed: 107 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2290,7 +2290,7 @@ TEST_F(DriverOrderingTest,
22902290

22912291
TEST(
22922292
RuntimeApiLoaderDriverInteraction,
2293-
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
2293+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisAfterZeInitDriversThenExpectNullDriverIsReachedSuccessfully)
22942294
{
22952295
uint32_t pInitDriversCount = 0;
22962296
ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC};
@@ -2325,7 +2325,38 @@ TEST_F(DriverOrderingTest,
23252325

23262326
TEST(
23272327
RuntimeApiLoaderDriverInteraction,
2328-
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisThenExpectNullDriverIsReachedSuccessfully)
2328+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisAfterZeInitThenExpectNullDriverIsReachedSuccessfully)
2329+
{
2330+
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
2331+
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=0"));
2332+
2333+
uint32_t driverGetCount = 0;
2334+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInit(0));
2335+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGet(&driverGetCount, nullptr));
2336+
EXPECT_GT(driverGetCount, 0);
2337+
2338+
const char *errorString = nullptr;
2339+
uint32_t deviceId = 0;
2340+
2341+
ze_result_t result = zerGetLastErrorDescription(&errorString);
2342+
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
2343+
EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1"));
2344+
2345+
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2346+
EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1"));
2347+
2348+
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
2349+
EXPECT_TRUE(compare_env("zerTranslateIdentifierToDeviceHandle", "1"));
2350+
(void)translatedDevice;
2351+
2352+
ze_context_handle_t defaultContext = zerGetDefaultContext();
2353+
EXPECT_TRUE(compare_env("zerGetDefaultContext", "1"));
2354+
(void)defaultContext;
2355+
}
2356+
2357+
TEST(
2358+
RuntimeApiLoaderDriverInteraction,
2359+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisAfterZeInitDriversThenExpectNullDriverIsReachedSuccessfully)
23292360
{
23302361
uint32_t pInitDriversCount = 0;
23312362
ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC};
@@ -2358,10 +2389,40 @@ TEST_F(DriverOrderingTest,
23582389
(void)defaultContext;
23592390
}
23602391

2392+
TEST(
2393+
RuntimeApiLoaderDriverInteraction,
2394+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisAfterZeInitThenExpectNullDriverIsReachedSuccessfully)
2395+
{
2396+
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
2397+
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=1"));
2398+
2399+
uint32_t driverGetCount = 0;
2400+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInit(0));
2401+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGet(&driverGetCount, nullptr));
2402+
EXPECT_GT(driverGetCount, 0);
2403+
2404+
const char *errorString = nullptr;
2405+
uint32_t deviceId = 0;
2406+
2407+
ze_result_t result = zerGetLastErrorDescription(&errorString);
2408+
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
2409+
EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1"));
2410+
2411+
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2412+
EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1"));
2413+
2414+
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
2415+
EXPECT_TRUE(compare_env("zerTranslateIdentifierToDeviceHandle", "1"));
2416+
(void)translatedDevice;
2417+
2418+
ze_context_handle_t defaultContext = zerGetDefaultContext();
2419+
EXPECT_TRUE(compare_env("zerGetDefaultContext", "1"));
2420+
(void)defaultContext;
2421+
}
23612422

23622423
TEST(
23632424
RuntimeApiLoaderDriverInteraction,
2364-
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisThenExpectErrorUninitialized)
2425+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisAfterZeInitDriversThenExpectErrorUninitialized)
23652426
{
23662427
uint32_t pInitDriversCount = 0;
23672428
ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC};
@@ -2405,6 +2466,49 @@ TEST_F(DriverOrderingTest,
24052466
EXPECT_NE(errorDesc, nullptr);
24062467
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED"));
24072468
}
2469+
2470+
TEST(
2471+
RuntimeApiLoaderDriverInteraction,
2472+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisAfterZeInitThenExpectErrorUninitialized)
2473+
{
2474+
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
2475+
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=0"));
2476+
putenv_safe(const_cast<char *>("ZEL_TEST_DDI_HANDLES_EXT_VERSION=1_0"));
2477+
2478+
uint32_t driverGetCount = 0;
2479+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInit(0));
2480+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGet(&driverGetCount, nullptr));
2481+
EXPECT_GT(driverGetCount, 0);
2482+
2483+
uint32_t deviceId = 0;
2484+
2485+
const char *errorDesc = nullptr;
2486+
ze_result_t errorDescResult{};
2487+
2488+
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2489+
EXPECT_EQ(UINT32_MAX, deviceId);
2490+
2491+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2492+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2493+
EXPECT_NE(errorDesc, nullptr);
2494+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED"));
2495+
2496+
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
2497+
EXPECT_EQ(nullptr, translatedDevice);
2498+
2499+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2500+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2501+
EXPECT_NE(errorDesc, nullptr);
2502+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED"));
2503+
2504+
ze_context_handle_t defaultContext = zerGetDefaultContext();
2505+
EXPECT_EQ(nullptr, defaultContext);
2506+
2507+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2508+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2509+
EXPECT_NE(errorDesc, nullptr);
2510+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED"));
2511+
}
24082512

24092513

24102514
} // namespace

0 commit comments

Comments
 (0)