@@ -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