======================================================================== CONSOLE APPLICATION : GmmLibULT Project Overview ======================================================================== GMM ULT for the GMM Cache Policy. GmmLibULT.vcxproj This is the main project file. GmmLibULT.vcxproj.filters This is the filters file for VC++ project. It contains information about the association between the files in your project and the filters. This association is used in the IDE to show grouping of files with similar extensions under a specific node (for e.g. ".cpp" files are associated with the "Source Files" filter). GmmLibULT.cpp This is the main application source file. ///////////////////////////////////////////////////////////////////////////// Other standard files: StdAfx.h, StdAfx.cpp These files are used to build a precompiled header (PCH) file named GmmLibULT.pch and a precompiled types file named StdAfx.obj. ///////////////////////////////////////////////////////////////////////////// Other notes: This ULT is divided into 2 parts. 1. CompileTime ULT - Runs with every Gmmlib build and KMD build How to trigger Test cases through commandline: i. Run all Compile Time TestCases --> GmmULT.exe CTest*.* ii.Run Specific TestCase --> GmmULT.exe CTestGen9CachePolicy.* 2. RunTime ULT - Runnable on Target system. Have to run it manually - not qualified to run on Host/Dev systems How to trigger Test cases through commandline: i. CachePolicy ULT --> GmmULT.exe RTestGen9CachePolicy.* ii. Vulkan Generic Resource --> GmmULT.exe RTestVulkanResource.*Generic* ii. Vulkan Sparse Resource --> GmmULT.exe RTestVulkanResource.*Sparse* To Run the Test on target i. Download Driver along with Test Tools, which has ExCITE DLL or build ExCITE DLL on your dev system with the installed driver source ii. Install driver and copy DLL in either C:\Windows\System32 (for 64-bit app/DLL) or C:\Windows\SysWoW64 or place it in ULT executable Directory iii. Specify commandline and run GMMULT.exe Test Case: > Test Case is defined by FIXTURE class -> Test Case = FIXTURE Class > Ex. class CTestResource : public testing::Test --> CTestResource is FIXTURE class Test: > Test resides in FIXTURE. FIXTURE class has multiple tests > Ex. TEST_F(CTestResource, test2DResource) --> test2DResource is a test of test case - CTestResource SetUp() vs SetUpTestCase() > SetUp() -> gets called for all the tests in a test case. This is per-test setup/tear down > SetUpTestCase() -> When multiple tests in a test case share resource or needs same set up, then instead of repeating set up per test, SetUpTestCase gets called once per test case and all the tests inside a test case, use same set up. To exclude tests from execution > --gtest_filter=POSTIVE_PATTERNS[-NEGATIVE_PATTERNS] > Ex. --gtest_filter=-ABC.*:BCD.* What happens when test/test case is triggered TEST_F(CTestGen9Resource, Test2DTileYResource) --> first instance of test in CTestGen9Resource FIXTURE test case 1. CTestGen9Resource::SetUpTestCase() --> this sets up platform --> This step is skipped if this is subsequence test instances in test case. i. Calls CommonULT::SetUpTestCase() --> GmmInitGlobalContext() and other initialization 2. CTestResource::CTestResource() 3. CTestGen9Resource::CTestGen9Resource() 4. Test_F body --> test execution 5. CTestGen9Resource::~CTestGen9Resource() 6. CTestResource::~CTestResource( ) 7. CommonULT::~CommonULT() --> Destroys Global Context 8. void CTestGen9Resource::TearDownTestCase() --> only if this is last instance of test in test case CompileTime cmdline: $(TargetDir)$(TargetFileName) --gtest_filter=CTestResource.Test2DTileYsResource To debug failures, add the following in the command line argument: --gtest_break_on_failure This will cause an assert to be hit whenever a test fails. You can use the call stack to go back to the failing test and debug. /////////////////////////////////////////////////////////////////////////////