Commit Graph

859 Commits

Author SHA1 Message Date
Charles Giessen 0b14ceae6c test: Move more old tests to new test framework
Remove them from the calling scripts where appropriate. Notably the 'get count
then run tests and pass in count' are now using the framework where that is
completely redundant.

Change-Id: I00d561a85047742a849df48818398b10c62d3b74
2021-07-12 16:23:15 -06:00
Charles Giessen 99c066a0c6 test: Fix TestLayer exports on windows
* `get_instance_func` needed to have __stdcall (VKAPI_ATTR) added
* Several .def files were incorrect
* vk_layer.h forward declares vkNegotiateLoaderLayerInterfaceVersion. This is
problomatic because it doesn't have __declspec(dllexport), a token added by
FRAMEWORK_EXPORT on windows. We have to special case the export macro here to
prevent that mismatched definition.
2021-07-06 10:03:29 -06:00
Charles Giessen e68175413f test: Add Enumeration Function stubs to TestLayer
Change-Id: I68b3597877fed803f4284e7e67f19ce4e3e2fe53
2021-07-06 10:03:29 -06:00
Charles Giessen bb68c98c56 test: Flesh out TestLayer to include relevant exports
Functions needed in the various layer interface versions are now
exported as well as guarded behind macros configurable from CMake.
The export_definitions folder was populated as well.

Change-Id: Iebfdd8ae02062eb81b8aa9f705885c9384c95be9
2021-07-06 10:03:29 -06:00
Charles Giessen 0eb3ae0661 test: Use MACRO=1 in TestICD for definition style
This replaces instances of `#ifdef MACRO_NAME` with `#if MACRO_NAME` as now
MACRO_NAME will have a value of 0 or 1, instead of it being defined or not
defined.

Change-Id: I27a4330511a0f0d779f41851fe816fc79e868de2
2021-07-06 10:03:29 -06:00
Charles Giessen 43b3cdb34f test: Update Framework Readme.md
Change-Id: Iaf3740b046b3f6457c337988c573a73f068ff1a3
2021-07-06 10:03:29 -06:00
Charles Giessen 81314c2f89 test: Use a new string_eq function instead of raw strcmp
Change-Id: I703763133c42eb78ae3c6e194450411e3f784e35
2021-07-06 10:03:29 -06:00
Charles Giessen 57c6c8e8c7 test: Drop fp_ from function pointer names
Change-Id: Ibd047e99f442d4a9755ac186e16b3620d3544e37
2021-07-06 10:03:29 -06:00
Charles Giessen 9b90dd7cb3 test: Remove some redundant tests in old test suite
Change-Id: Icc84b25bb092e15e054433651112e86b30726e52
2021-07-06 10:03:29 -06:00
Charles Giessen b862e98220 test: Rename regressions test cases
From RegressionTests.CreateInstanceExampleTestCase
To CreateInstance.ExampleTestCase

Change-Id: Ibd74541f93edbcaccb3daa9016dcacf8ecccfa78
2021-07-06 10:03:29 -06:00
Charles Giessen 2443f46735 test: Remove Allocation tests from old test suite
loader_alloc_callback_tests.cpp now contain all of the removed tests.

Change-Id: Ia99df3a8f86d40f0d5e89a62b7b0a5f9bebafb7c
2021-07-06 10:03:29 -06:00
Charles Giessen 76b10a878e test: Delete old temp folders when starting tests/framework/test_util
Make sure the work space is clean before starting a test, this is mainly for developer builds, as CI
runs will generally wipe the entire build tree instead.
2021-06-23 15:15:56 -06:00
Charles Giessen 2e9d8dc1a8 test: Add revamped allocation tests
Creates a memory tracker class and rewrites the existing allocation tests.

Change-Id: I09ca2dc5b4d83f775ae0e3fd362a3fa4f7255d27
2021-06-23 15:15:56 -06:00
Charles Giessen 266e0783a7 ci: Enable regression tests on MacOS
Change-Id: I85b08bfd2914e03840a027240470e2596415f4dc
2021-06-22 12:03:05 -06:00
Charles Giessen 820fc25d1d test: Fix framework to work on MacOS
Main issue was getting function redireciton to work, dyld-interposer accomplishes that.
It required making the shim-library a dylib, but otherwise only required minor changes.

Change-Id: I7b7e2c86cc0c0b082f58241a7e146b74af72e792
2021-06-22 12:03:05 -06:00
Charles Giessen db6662c3f8 test: Refactor tests that use VK_ICD_FILENAMES
Change-Id: I34117fd500f7110669ae19d32ff1e1be920238a9
2021-06-07 14:07:38 -07:00
Charles Giessen f6fab4352d test: Control process elevation on Windows
Since the loader only uses environment variables if the process is
not running with elevated priviledges, the test harness needs to be
able to control that aspect to ensure consistency as CI systems may
run the tests in an 'elevated' context.

Change-Id: I8b15a1ecd4ab4960049ba198af8199943e872bba
2021-06-07 14:07:38 -07:00
Charles Giessen b9f4dd01e2 test: Delete files properly on windows
Move windows specific error reporting to test_util.h
This allows for its use anywhere its required.

Change-Id: I14a0da85dc0d3f4e651b99aa005469b47d98d940
2021-06-07 14:07:38 -07:00
Charles Giessen 6830271a61 test: Fix Windows x86 icd shim exports
_stdcall in Windows x86 builds would mangle names even with `export "C"`
By adding .def files, the correct name is used in the .dll and the loader will
correctly load it.

Additionally, ShimEnumAdapters2 needs _stdcall for 32 bit mode

Change-Id: Ia60a5e2a9e4378dc3e09864648e04852b10fe524
2021-06-07 14:07:38 -07:00
Charles Giessen 31da9f2af5 ci: Enable regression tests in Windows CI
Change-Id: I5bb1d03f9c9a3be82f7ed0763a325996a5d8dae8
2021-06-07 14:07:38 -07:00
Charles Giessen 7142144bbb tests: Include <memory> in test_util.h
Change-Id: If2b6766521dd6bea5478b6316eadef8ce3e048cf
2021-05-28 18:43:26 -06:00
Charles Giessen a4abae9080 tests: fix spelling in loader_validation_tests
Change-Id: I2e278b959cd1d47bdc0d7fc19965e4d57e71b481
2021-05-27 16:59:28 -06:00
Charles Giessen 2c1e399d8c test: Add regression tests code
These files are the current 4 source code files used to create the
regression test suite

loader_regression_tests.cpp and loader_version_tests.cpp contain a
majority of the tests.

loader_wsi_test.cpp is all the tests pertaining to the WSI functions
in the loader.

loader_testing_main.cpp contains the `main()` which has windows CRT
specific calls to disable popups and debug aserts.

There are two executables created, test_regression and test_wsi.
test_regression is both regression_tests and version_tests. test_wsi
is the WSI tests. These tests are separate as they rely on linking
with platform specific windowing libraries which may not be present
on a CI system.

Change-Id: I1c02b0f82826d337599f4a9a7c02dde40ea5afa3
2021-05-27 16:59:28 -06:00
Charles Giessen 6176c3a9d2 test: Add framework test_environment
The test environment is the code which glues the platform shim,
TestICD, and TestLayers together so that test code can be easily
written. The main components tests use are the SingleICDShim and
MultipleICDShim classes. Both take care of copying the ICD binaries,
setting up the manifests, and redirecting the platform specific
systems to point at those manifests.

Change-Id: I7cbb76c9555fe13b323173c3838cbb3616b77a18
2021-05-27 16:59:28 -06:00
Charles Giessen 2a75a4e2f9 test: Add test framekwork layer utility
At the present moment, this change is to define simple layer
utilities that tests in the future may use.

Change-Id: I9ab5e1950da64061997891a0527d0f70a49e41e7
2021-05-27 16:59:28 -06:00
Charles Giessen 9423452b70 test: Add framework platform abstraction shim
The loader queries various platform systems for info such as the
location of ICDs and layers. To isolate the loader during testing
from the system it is running on, the platform shim intercepts the
necessary functions so that the contents of the systems queried by
the loader can be configured by tests.

On windows this involves 2 aspects:
Detouring Win32 API functions and redirecting the registry.
The `Detours` library is used to easily capture Win32 API calls.
And the registry uses `RegOverridePredefKey` to redirect the registry
entries the loader accesses.

On linux this only involves intercepting 3 functions; `opendir`,
`access`, and `fopen`. This allows the framework to tell the loader
what to actuall open/access/fopen. These interceptions call the
underlying function but with altered arguments, specifically to
paths the tests set up.

Change-Id: I3531a1cb190c489ffd9f1f0549d0ebcacb3818c5
2021-05-27 16:59:28 -06:00
Charles Giessen b6401a02ac tests: Add TestICD for mocking ICD's
The TestICD is a configurable ICD which can recreate much of the
behavior the loader expects of an ICD. Combined with a direct line
of communication between the tests and TestICD, tests can setup
specific conditions that have a known response from the loader,
thus allowing proper regression testing.

Change-Id: I84303f0ddb6011fc1b76dad25fd249abb2da29c9
2021-05-27 16:59:28 -06:00
Charles Giessen 3743707e47 test: Add framework cmake and utilities
Create the CMake infrastructure for a testing framework.
`test_util.h/.cpp` contains the core macros, wrappers, and utilities.
framework_config.h.in is the header that other components include
to get the full path to binaries on a system.

Change-Id: I3e24a3ee4ff24da499a3bca63059e3b872d3981c
2021-05-27 16:59:28 -06:00
Mike Gorchak 7dfa94ccdc Rename build option to make it clearer that it belongs to QNX only. 2021-04-06 14:52:51 -06:00
Mike Gorchak ff7918e9a0 Add support for QNX platform. 2021-04-06 14:52:51 -06:00
Michel Zou 70a9ff926e tests: Use cmake -E copy instead of xcopy 2020-10-26 18:42:56 -06:00
Lenny Komow d3add3b499 tests: Change license to Apache 2.0
Change-Id: Id0d23d1373154512b9e94af89a046b6b4e6d932b
2020-08-27 14:26:22 -06:00
Biswapriyo Nath 63ab5d5cbb loader: Fix some non-msvc compiler warnings
changes:
* loader/loader.c: cast dxgi_factory to void** type
* tests/loader_validation_tests.cpp: check if __STDC_FORMAT_MACROS is already defined
* tests/test_common.h: check if NOMINMAX is already defined
* tests/test_commogn.h: check _MSC_VER instead of WIN32 before pragma warning directive

Change-Id: I2fd78b760a90c2ac0e6463a60f5593a24ca904b8
2020-08-19 15:46:13 -06:00
Charles Giessen 1d170c36e1 tests: fix non-msvc windows test building
Building the tests outside of msvc wouldn't work due to improper setup.
This commit fixes the typos and missing debug/release switches for
google-test.

Change-Id: Ifdc2cdab8236c35ba9e14663fffaa412f40aaa6a
2020-04-15 14:06:58 -06:00
Lenny Komow 2df85e50bf tests: Update layer path test to strip empty paths
Change-Id: Ib6f209650894e44955b82aa47a5e24f2d3640acc
2020-04-08 14:08:06 -06:00
Mike Weiblen 35d8cebb41 tests: Use complete version from header
Change-Id: Ic194ff680af778d7221b60be14be20db57930244
2020-03-27 10:17:05 -06:00
Lenny Komow 6d8b398447 repo: Remove the option to build a static loader
This option should not have been used, as an application that statically
links to the loader is likely to break as a result of driver updates.

Change-Id: I6bc05ac6fac601f439274fd8efeb0cd76564ccd1
2019-11-21 16:50:59 -07:00
Mike Schuchardt a808556636 build: CMake use pre-generated source 2019-07-19 10:36:03 -07:00
Dan Sinclair adc007f4b7 tests: Set enable_testing in cmake file.
This CL adds the enable_testing() cmake call and registers
vk_loader_validation_tests as a test in cmake.

This allows the test to be run when `ctest` is executed.

Change-Id: I57fd579c7625fbf7bbd468a5716e3a68b601c1fd
2019-06-24 15:17:33 -06:00
Felix Dörre bc769fc6cb layers: formatting 2019-04-29 16:13:15 -06:00
Felix Dörre e6860cddea tests: add test case for layer device creation 2019-04-29 16:13:15 -06:00
Nuno Subtil 6547686c9f build: Use Vulkan::Headers target to determine include paths
Change-Id: I73b9b2bfd5e33a9da861937510029cb71f3b2648
2019-03-05 13:49:11 -07:00
Felix Dörre e5b8870d01 layers: make win-build happy 2018-12-20 15:32:14 -07:00
Felix Dörre 21dcfee2c1 fmt: use formatting as suggested by CI 2018-12-20 15:32:14 -07:00
Felix Dörre 53cab5ed48 tests: enhance layer tests to be able to handle VkCreateDevice 2018-12-20 15:32:14 -07:00
Felix Dörre abff442abd tests: enhance wrapped objects test 2018-12-20 15:32:14 -07:00
Jeremy Hayes d454224a4d tests: Flock the implicit layer test
Fix #121

Change-Id: I2e060a3ddda3bf919d6be8a3e0af7169ac0fee63
2018-12-18 17:43:29 -07:00
Shannon McPherson eb0390b6bf tests: Modify vk_layer_logging.h for hdr 1.1.95
The `VkDebugUtilsObjectNameInfoEXT` member of the
`VkDebugUtilsMessengerCallbackDataEXT` struct was turned const in Vulkan
header 1.1.95 and modifications were required for compilation

Change-Id: I0e52d821239a2b74c8880864a9522359f2285d72
2018-12-03 18:29:45 -07:00
Jeremy Hayes b1a6386064 build: fix ninja on windows
Use target_compile_options to avoid setting invalid compile options on
asm targets.

Change-Id: I5d95cfd77a2d515f41c7b8c2c9193f3aff906be7
2018-10-30 15:44:52 -06:00
Tony-LunarG 85b7a60a96 repo: Remove MIR specific code
Note that references in scripts/common_codegen.py and
scripts/loader_extension_generator.py will need to be
removed later

Change-Id: I7b17c80f7a06a339d7df0c199ff556212a7c6534
2018-10-25 09:39:32 -06:00