55
66#include " fixtures.hpp"
77
8- struct urLoaderConfigGetInfoTest
8+ struct urLoaderConfigGetInfoWithParamTest
99 : LoaderConfigTest,
1010 ::testing::WithParamInterface<ur_loader_config_info_t > {
1111 void SetUp () override {
@@ -23,30 +23,111 @@ struct urLoaderConfigGetInfoTest
2323};
2424
2525INSTANTIATE_TEST_SUITE_P (
26- , urLoaderConfigGetInfoTest ,
26+ , urLoaderConfigGetInfoWithParamTest ,
2727 ::testing::Values (UR_LOADER_CONFIG_INFO_AVAILABLE_LAYERS,
2828 UR_LOADER_CONFIG_INFO_REFERENCE_COUNT));
2929
30- TEST_P (urLoaderConfigGetInfoTest , Success) {
30+ TEST_P (urLoaderConfigGetInfoWithParamTest , Success) {
3131 ASSERT_SUCCESS (urLoaderConfigGetInfo (loaderConfig, infoType, infoSize,
3232 infoAllocation.data (), nullptr ));
3333}
3434
35- TEST_P (urLoaderConfigGetInfoTest , InvalidNullHandleLoaderConfig) {
35+ TEST_P (urLoaderConfigGetInfoWithParamTest , InvalidNullHandleLoaderConfig) {
3636 ASSERT_EQ (UR_RESULT_ERROR_INVALID_NULL_HANDLE,
3737 urLoaderConfigGetInfo (nullptr , infoType, infoSize,
3838 infoAllocation.data (), nullptr ));
3939}
4040
41- TEST_P (urLoaderConfigGetInfoTest, InvalidNullPointer) {
41+ TEST_P (urLoaderConfigGetInfoWithParamTest, InvalidNullPointer) {
42+ ASSERT_EQ (
43+ UR_RESULT_ERROR_INVALID_NULL_POINTER,
44+ urLoaderConfigGetInfo (loaderConfig, infoType, 1 , nullptr , nullptr ));
45+
4246 ASSERT_EQ (
4347 UR_RESULT_ERROR_INVALID_NULL_POINTER,
4448 urLoaderConfigGetInfo (loaderConfig, infoType, 0 , nullptr , nullptr ));
4549}
4650
47- TEST_P (urLoaderConfigGetInfoTest , InvalidEnumerationInfoType) {
51+ TEST_P (urLoaderConfigGetInfoWithParamTest , InvalidEnumerationInfoType) {
4852 ASSERT_EQ (UR_RESULT_ERROR_INVALID_ENUMERATION,
4953 urLoaderConfigGetInfo (loaderConfig,
5054 UR_LOADER_CONFIG_INFO_FORCE_UINT32, 0 ,
5155 nullptr , &infoSize));
5256}
57+
58+ TEST_P (urLoaderConfigGetInfoWithParamTest, InvalidSize) {
59+ ASSERT_EQ (UR_RESULT_ERROR_INVALID_SIZE,
60+ urLoaderConfigGetInfo (loaderConfig, infoType, 0 ,
61+ infoAllocation.data (), &infoSize));
62+
63+ ASSERT_EQ (UR_RESULT_ERROR_INVALID_SIZE,
64+ urLoaderConfigGetInfo (loaderConfig, infoType, infoSize - 1 ,
65+ infoAllocation.data (), &infoSize));
66+ }
67+
68+ using urLoaderConfigGetInfoTest = LoaderConfigTest;
69+
70+ TEST_F (urLoaderConfigGetInfoTest, ReferenceCountNonZero) {
71+ uint32_t referenceCount = 0 ;
72+ ASSERT_SUCCESS (urLoaderConfigGetInfo (
73+ loaderConfig, UR_LOADER_CONFIG_INFO_REFERENCE_COUNT,
74+ sizeof (referenceCount), &referenceCount, nullptr ));
75+ ASSERT_GT (referenceCount, 0 );
76+ }
77+
78+ std::vector<std::string> splitString (const std::string &str, char delimiter) {
79+ std::vector<std::string> tokens;
80+ std::stringstream ss (str);
81+ std::string token;
82+ while (std::getline (ss, token, delimiter)) {
83+ tokens.push_back (token);
84+ }
85+ return tokens;
86+ }
87+
88+ bool isLayerStringValid (std::string &layersString,
89+ const std::vector<std::string> &validLayers) {
90+ if (layersString.empty ()) {
91+ return true ;
92+ }
93+
94+ layersString.pop_back (); // remove null terminator before comparing
95+ std::vector<std::string> layers = splitString (layersString, ' ;' );
96+
97+ for (const std::string &layer : layers) {
98+ if (std::find (validLayers.begin (), validLayers.end (), layer) ==
99+ validLayers.end ()) {
100+ return false ;
101+ }
102+ }
103+
104+ return true ;
105+ }
106+
107+ TEST_F (urLoaderConfigGetInfoTest, ValidLayersList) {
108+ std::vector<std::string> layerNames{
109+ " UR_LAYER_PARAMETER_VALIDATION" ,
110+ " UR_LAYER_BOUNDS_CHECKING" ,
111+ " UR_LAYER_LEAK_CHECKING" ,
112+ " UR_LAYER_LIFETIME_VALIDATION" ,
113+ " UR_LAYER_FULL_VALIDATION" ,
114+ " UR_LAYER_TRACING" ,
115+ " UR_LAYER_ASAN" ,
116+ " UR_LAYER_MSAN" ,
117+ " UR_LAYER_TSAN" ,
118+ };
119+
120+ std::string availableLayers;
121+ size_t availableLayersLength = 0 ;
122+
123+ ASSERT_SUCCESS (urLoaderConfigGetInfo (loaderConfig,
124+ UR_LOADER_CONFIG_INFO_AVAILABLE_LAYERS,
125+ 0 , nullptr , &availableLayersLength));
126+
127+ availableLayers.resize (availableLayersLength);
128+ ASSERT_SUCCESS (urLoaderConfigGetInfo (
129+ loaderConfig, UR_LOADER_CONFIG_INFO_AVAILABLE_LAYERS,
130+ availableLayersLength, availableLayers.data (), nullptr ));
131+
132+ ASSERT_TRUE (isLayerStringValid (availableLayers, layerNames));
133+ }
0 commit comments