|
9 | 9 |
|
10 | 10 | #include <atomic> |
11 | 11 | #include <cstring> |
12 | | -#include <exception> |
13 | | -#include <functional> // For std::ref |
14 | | -#include <stdexcept> |
15 | 12 | #include <string> |
16 | 13 | #include <thread> |
17 | | -#include <type_traits> |
18 | 14 | #include <vector> |
19 | 15 |
|
20 | 16 | #include <umf.h> |
|
23 | 19 | #include <umf/memory_pool.h> |
24 | 20 | #include <umf/memory_provider.h> |
25 | 21 | #include <umf/pools/pool_disjoint.h> |
26 | | -#include <umf/pools/pool_scalable.h> |
27 | | -#include <umf/providers/provider_fixed_memory.h> |
28 | 22 | #include <umf/providers/provider_os_memory.h> |
29 | 23 |
|
30 | 24 | #include "../common/base.hpp" |
@@ -56,124 +50,6 @@ TEST_F(test, ctl_by_handle_os_provider) { |
56 | 50 | umfMemoryProviderDestroy(hProvider); |
57 | 51 | } |
58 | 52 |
|
59 | | -class Pool { |
60 | | - public: |
61 | | - Pool() : provider(NULL), pool(NULL) {} |
62 | | - |
63 | | - int instantiatePool(const umf_memory_pool_ops_t *pool_ops, |
64 | | - const void *pool_params, |
65 | | - umf_pool_create_flags_t flags = 0) { |
66 | | - freeResources(); |
67 | | - provider = create_memory_provider(); |
68 | | - if (provider == NULL) { |
69 | | - return -1; // Provider not supported |
70 | | - } |
71 | | - int ret = umfPoolCreate(pool_ops, provider, pool_params, flags, &pool); |
72 | | - if (ret != UMF_RESULT_SUCCESS) { |
73 | | - umfMemoryProviderDestroy(provider); |
74 | | - provider = NULL; |
75 | | - return -2; // Failed to create memory pool |
76 | | - } |
77 | | - return 0; // Success |
78 | | - } |
79 | | - |
80 | | - // Template specialization for different types of reference value |
81 | | - template <typename T> T getReferenceValue() { |
82 | | - if constexpr (std::is_arithmetic_v<T>) { |
83 | | - return 0xBAD; |
84 | | - } else if constexpr (std::is_same_v<T, std::string>) { |
85 | | - return "0xBAD"; |
86 | | - } |
87 | | - } |
88 | | - |
89 | | - template <typename T> |
90 | | - void validateQuery(umf_result_t (*ctlApiFunction)(const char *name, |
91 | | - void *arg, size_t, ...), |
92 | | - const char *name, T expectedValue, |
93 | | - umf_result_t expected) { |
94 | | - T value = getReferenceValue<T>(); |
95 | | - umf_result_t ret; |
96 | | - char ret_buf[256] = {0}; |
97 | | - if constexpr (std::is_same_v<T, std::string>) { |
98 | | - strncpy(ret_buf, value.c_str(), sizeof(ret_buf) - 1); |
99 | | - ret_buf[sizeof(ret_buf) - 1] = '\0'; // Ensure null-termination |
100 | | - ret = ctlApiFunction(name, (void *)ret_buf, sizeof(ret_buf), pool); |
101 | | - } else if constexpr (std::is_arithmetic_v<T>) { |
102 | | - std::string value_str = std::to_string(value); |
103 | | - strncpy(ret_buf, value_str.c_str(), sizeof(ret_buf) - 1); |
104 | | - ret_buf[sizeof(ret_buf) - 1] = '\0'; // Ensure null-termination |
105 | | - ret = ctlApiFunction(name, (void *)ret_buf, sizeof(ret_buf), pool); |
106 | | - } else { |
107 | | - ret = ctlApiFunction(name, &value, sizeof(value), pool); |
108 | | - } |
109 | | - |
110 | | - ASSERT_EQ(ret, expected); |
111 | | - if (ret == UMF_RESULT_SUCCESS) { |
112 | | - ASSERT_EQ(ret_buf, expectedValue); |
113 | | - } |
114 | | - } |
115 | | - |
116 | | - template <typename T> |
117 | | - void executeQuery(umf_result_t (*ctlApiFunction)(const char *name, |
118 | | - void *arg, size_t, ...), |
119 | | - const char *name, T value) { |
120 | | - size_t value_len; |
121 | | - if constexpr (std::is_arithmetic_v<T>) { |
122 | | - value_len = sizeof(value); |
123 | | - } else if constexpr (std::is_same_v<T, std::string>) { |
124 | | - value_len = strlen(value.c_str()); |
125 | | - } else if constexpr (std::is_same_v<T, const char *>) { |
126 | | - value_len = strlen(value); |
127 | | - } else { |
128 | | - throw std::runtime_error("Unsupported type for value"); |
129 | | - } |
130 | | - umf_result_t ret = ctlApiFunction(name, (void *)value, value_len); |
131 | | - ASSERT_EQ(ret, UMF_RESULT_SUCCESS); |
132 | | - } |
133 | | - |
134 | | - void freeResources() { |
135 | | - if (pool) { |
136 | | - umfPoolDestroy(pool); |
137 | | - pool = NULL; |
138 | | - } |
139 | | - if (provider) { |
140 | | - umfMemoryProviderDestroy(provider); |
141 | | - provider = NULL; |
142 | | - } |
143 | | - if (data) { |
144 | | - free(data); |
145 | | - data = nullptr; |
146 | | - } |
147 | | - } |
148 | | - |
149 | | - umf_memory_provider_handle_t provider; |
150 | | - umf_memory_pool_handle_t pool; |
151 | | - void *data = nullptr; |
152 | | - |
153 | | - private: |
154 | | - // Create a memory provider |
155 | | - umf_memory_provider_handle_t create_memory_provider() { |
156 | | - const umf_memory_provider_ops_t *provider_ops = |
157 | | - umfFixedMemoryProviderOps(); |
158 | | - umf_fixed_memory_provider_params_handle_t params = NULL; |
159 | | - |
160 | | - data = malloc(1024 * 1024); |
161 | | - int ret = |
162 | | - umfFixedMemoryProviderParamsCreate(data, 1024 * 1024, ¶ms); |
163 | | - if (ret != UMF_RESULT_SUCCESS) { |
164 | | - return 0; |
165 | | - } |
166 | | - |
167 | | - ret = umfMemoryProviderCreate(provider_ops, params, &provider); |
168 | | - umfFixedMemoryProviderParamsDestroy(params); |
169 | | - if (ret != UMF_RESULT_SUCCESS) { |
170 | | - return 0; |
171 | | - } |
172 | | - |
173 | | - return provider; |
174 | | - } |
175 | | -}; |
176 | | - |
177 | 53 | class CtlTest : public ::testing::Test { |
178 | 54 | public: |
179 | 55 | CtlTest() {} |
@@ -296,66 +172,6 @@ TEST_F(CtlTest, ctlDefaultPoolOverwrite) { |
296 | 172 | }); |
297 | 173 | } |
298 | 174 |
|
299 | | -TEST_F(CtlTest, DISABLED_ctlNameValidation) { |
300 | | - std::string name = "umf.pool.default.disjoint.name"; |
301 | | - std::string value = "new_disjoint_pool_name"; |
302 | | - umf_disjoint_pool_params_handle_t params = NULL; |
303 | | - |
304 | | - Pool p; |
305 | | - try { |
306 | | - p.executeQuery(umfCtlSet, name.c_str(), value.c_str()); |
307 | | - umf_result_t res = umfDisjointPoolParamsCreate(¶ms); |
308 | | - ASSERT_EQ(res, UMF_RESULT_SUCCESS); |
309 | | - |
310 | | - auto ret = p.instantiatePool(umfDisjointPoolOps(), params); |
311 | | - ASSERT_EQ(ret, 0); |
312 | | - |
313 | | - p.validateQuery(umfCtlGet, "umf.pool.by_handle.{}.disjoint.name", |
314 | | - std::move(value), UMF_RESULT_SUCCESS); |
315 | | - } catch (...) { |
316 | | - GTEST_FAIL() << "Unknown exception!"; |
317 | | - } |
318 | | - umfDisjointPoolParamsDestroy(params); |
319 | | - p.freeResources(); |
320 | | -} |
321 | | - |
322 | | -TEST_F(CtlTest, DISABLED_ctlSizeValidation) { |
323 | | - std::string name = "umf.pool.default.disjoint.name"; |
324 | | - std::string value = "1234567890"; |
325 | | - umf_disjoint_pool_params_handle_t params = NULL; |
326 | | - |
327 | | - Pool p; |
328 | | - try { |
329 | | - p.executeQuery(umfCtlSet, name.c_str(), value.c_str()); |
330 | | - umf_result_t res = umfDisjointPoolParamsCreate(¶ms); |
331 | | - ASSERT_EQ(res, UMF_RESULT_SUCCESS); |
332 | | - |
333 | | - auto ret = p.instantiatePool(umfDisjointPoolOps(), params); |
334 | | - ASSERT_EQ(ret, 0); |
335 | | - |
336 | | - char output[100] = {0}; |
337 | | - umfCtlGet("umf.pool.default.disjoint.name", output, sizeof(output)); |
338 | | - ASSERT_EQ(std::string(output), value); |
339 | | - |
340 | | - memset(output, 0, sizeof(output)); |
341 | | - umfCtlGet("umf.pool.default.disjoint.name", output, value.size() / 2); |
342 | | - auto half_value = value.substr(0, value.size() / 2); |
343 | | - ASSERT_EQ(half_value, std::string(output)); |
344 | | - } catch (...) { |
345 | | - GTEST_FAIL() << "Unknown exception!"; |
346 | | - } |
347 | | - umfDisjointPoolParamsDestroy(params); |
348 | | - p.freeResources(); |
349 | | -} |
350 | | - |
351 | | -TEST_F(CtlTest, DISABLED_ctlExecInvalidSize) { |
352 | | - std::string name = "umf.pool.default.disjoint.name"; |
353 | | - ASSERT_EQ(umfCtlSet(name.c_str(), (void *)"test_value", 0), |
354 | | - UMF_RESULT_ERROR_INVALID_ARGUMENT); |
355 | | - ASSERT_EQ(umfCtlSet(name.c_str(), NULL, 10), |
356 | | - UMF_RESULT_ERROR_INVALID_ARGUMENT); |
357 | | -} |
358 | | - |
359 | 175 | TEST_F(CtlTest, ctlDefaultMultithreadedProvider) { |
360 | 176 | umf_test::run_in_fork([] { |
361 | 177 | std::vector<std::thread> threads; |
|
0 commit comments