Skip to content

Commit 9eda18b

Browse files
committed
test: Add tests for zer API's
Signed-off-by: Vishnu Khanth <[email protected]>
1 parent 84308e5 commit 9eda18b

File tree

4 files changed

+118
-0
lines changed

4 files changed

+118
-0
lines changed

scripts/templates/nullddi.cpp.mako

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,17 @@ ${tbl['export']['name']}(
132132
%endfor
133133
)
134134
{
135+
%if n == 'zer':
136+
auto zer_api_disable = getenv_string( "ZEL_TEST_NULL_DRIVER_DISABLE_ZER_API" );
137+
#ifndef ZEL_NULL_DRIVER_ID
138+
#define ZEL_NULL_DRIVER_ID 1
139+
#endif
140+
std::string null_driver_id_str = std::to_string(ZEL_NULL_DRIVER_ID);
141+
auto zer_api_unsupported = (zer_api_disable == null_driver_id_str);
142+
if(zer_api_unsupported)
143+
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
144+
145+
%endif
135146
if( nullptr == pDdiTable )
136147
return ${X}_RESULT_ERROR_INVALID_NULL_POINTER;
137148

source/drivers/null/zer_nullddi.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,15 @@ zerGetGlobalProcAddrTable(
137137
zer_global_dditable_t* pDdiTable ///< [in,out] pointer to table of DDI function pointers
138138
)
139139
{
140+
auto zer_api_disable = getenv_string( "ZEL_TEST_NULL_DRIVER_DISABLE_ZER_API" );
141+
#ifndef ZEL_NULL_DRIVER_ID
142+
#define ZEL_NULL_DRIVER_ID 1
143+
#endif
144+
std::string null_driver_id_str = std::to_string(ZEL_NULL_DRIVER_ID);
145+
auto zer_api_unsupported = (zer_api_disable == null_driver_id_str);
146+
if(zer_api_unsupported)
147+
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
148+
140149
if( nullptr == pDdiTable )
141150
return ZE_RESULT_ERROR_INVALID_NULL_POINTER;
142151

test/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,8 @@ function(add_runtime_api_test test_scenario init_method driver_config)
620620
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtNotSupportedWhenCallingRuntimeApisAfter${init_method}ThenExpectNullDriverIsReachedSuccessfully")
621621
elseif(test_scenario STREQUAL "ddi_ext_v1_0")
622622
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWithVersion1_0WhenCallingRuntimeApisAfter${init_method}ThenExpectErrorUninitialized")
623+
elseif(test_scenario STREQUAL "runtime_api_unsupported")
624+
set(gtest_filter "*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndRuntimeApiUnsupportedWhenCallingRuntimeApisAfter${init_method}ThenExpectErrorUnsupportedFeature")
623625
endif()
624626

625627
# Add the test
@@ -654,4 +656,9 @@ foreach(init_method IN LISTS init_methods)
654656
# Add multi-driver tests
655657
add_runtime_api_test(${test_scenario} ${init_method} "multi_driver")
656658
endforeach()
659+
660+
# Add runtime_api_unsupported tests for single driver
661+
if(init_method STREQUAL "ZeInitDrivers")
662+
add_runtime_api_test("runtime_api_unsupported" ${init_method} "single_driver")
663+
endif()
657664
endforeach()

test/loader_api.cpp

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,6 +2509,97 @@ TEST_F(DriverOrderingTest,
25092509
EXPECT_NE(errorDesc, nullptr);
25102510
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNINITIALIZED"));
25112511
}
2512+
2513+
TEST(
2514+
RuntimeApiLoaderDriverInteraction,
2515+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndRuntimeApiUnsupportedWhenCallingRuntimeApisAfterZeInitDriversThenExpectErrorUnsupportedFeature)
2516+
{
2517+
uint32_t pInitDriversCount = 0;
2518+
ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC};
2519+
desc.flags = UINT32_MAX;
2520+
desc.pNext = nullptr;
2521+
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
2522+
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_ZER_API=1"));
2523+
2524+
std::vector<ze_driver_handle_t> drivers;
2525+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, nullptr, &desc));
2526+
drivers.resize(pInitDriversCount);
2527+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, drivers.data(), &desc));
2528+
EXPECT_GT(pInitDriversCount, 0);
2529+
2530+
uint32_t deviceId = 0;
2531+
2532+
const char *errorDesc = nullptr;
2533+
ze_result_t errorDescResult{};
2534+
2535+
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2536+
EXPECT_EQ(UINT32_MAX, deviceId);
2537+
2538+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2539+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2540+
EXPECT_NE(errorDesc, nullptr);
2541+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2542+
2543+
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
2544+
EXPECT_EQ(nullptr, translatedDevice);
2545+
2546+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2547+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2548+
EXPECT_NE(errorDesc, nullptr);
2549+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2550+
2551+
ze_context_handle_t defaultContext = zerGetDefaultContext();
2552+
EXPECT_EQ(nullptr, defaultContext);
2553+
2554+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2555+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2556+
EXPECT_NE(errorDesc, nullptr);
2557+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2558+
}
2559+
2560+
/*
2561+
TEST(
2562+
RuntimeApiLoaderDriverInteraction,
2563+
GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndRuntimeApiUnsupportedWhenCallingRuntimeApisAfterZeInitThenExpectErrorUnsupportedFeature)
2564+
{
2565+
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
2566+
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_ZER_API=1"));
2567+
2568+
uint32_t driverGetCount = 0;
2569+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInit(0));
2570+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDriverGet(&driverGetCount, nullptr));
2571+
EXPECT_GT(driverGetCount, 0);
2572+
2573+
uint32_t deviceId = 0;
2574+
2575+
const char *errorDesc = nullptr;
2576+
ze_result_t errorDescResult{};
2577+
2578+
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2579+
EXPECT_EQ(UINT32_MAX, deviceId);
2580+
2581+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2582+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2583+
EXPECT_NE(errorDesc, nullptr);
2584+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2585+
2586+
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
2587+
EXPECT_EQ(nullptr, translatedDevice);
2588+
2589+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2590+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2591+
EXPECT_NE(errorDesc, nullptr);
2592+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2593+
2594+
ze_context_handle_t defaultContext = zerGetDefaultContext();
2595+
EXPECT_EQ(nullptr, defaultContext);
2596+
2597+
errorDescResult = zerGetLastErrorDescription(&errorDesc);
2598+
EXPECT_EQ(ZE_RESULT_SUCCESS, errorDescResult);
2599+
EXPECT_NE(errorDesc, nullptr);
2600+
EXPECT_EQ(0, strcmp(errorDesc, "ERROR UNSUPPORTED FEATURE"));
2601+
}
2602+
*/
25122603

25132604

25142605
} // namespace

0 commit comments

Comments
 (0)