@@ -46,22 +46,26 @@ class HostMemoryAccessor : public MemoryAccessor {
46
46
}
47
47
};
48
48
49
+ // ipcTestParams:
50
+ // pool_ops, pool_params, provider_ops, provider_params, memoryAccessor, free_not_supp
51
+ // free_not_supp (bool) - provider does not support the free() op
49
52
using ipcTestParams =
50
53
std::tuple<umf_memory_pool_ops_t *, void *, umf_memory_provider_ops_t *,
51
- void *, MemoryAccessor *>;
54
+ void *, MemoryAccessor *, bool >;
52
55
53
56
struct umfIpcTest : umf_test::test,
54
57
::testing::WithParamInterface<ipcTestParams> {
55
58
umfIpcTest () {}
56
59
void SetUp () override {
57
60
test::SetUp ();
58
- auto [pool_ops, pool_params, provider_ops, provider_params, accessor] =
59
- this ->GetParam ();
61
+ auto [pool_ops, pool_params, provider_ops, provider_params, accessor,
62
+ free_not_supp] = this ->GetParam ();
60
63
poolOps = pool_ops;
61
64
poolParams = pool_params;
62
65
providerOps = provider_ops;
63
66
providerParams = provider_params;
64
67
memAccessor = accessor;
68
+ freeNotSupported = free_not_supp;
65
69
}
66
70
67
71
void TearDown () override { test::TearDown (); }
@@ -120,8 +124,18 @@ struct umfIpcTest : umf_test::test,
120
124
void *poolParams = nullptr ;
121
125
umf_memory_provider_ops_t *providerOps = nullptr ;
122
126
void *providerParams = nullptr ;
127
+ bool freeNotSupported = false ;
123
128
};
124
129
130
+ static inline umf_result_t
131
+ get_umf_result_of_free (bool freeNotSupported, umf_result_t expected_result) {
132
+ if (freeNotSupported) {
133
+ return UMF_RESULT_ERROR_NOT_SUPPORTED;
134
+ }
135
+
136
+ return expected_result;
137
+ }
138
+
125
139
TEST_P (umfIpcTest, GetIPCHandleSize) {
126
140
size_t size = 0 ;
127
141
umf::pool_unique_handle_t pool = makePool ();
@@ -163,7 +177,8 @@ TEST_P(umfIpcTest, GetIPCHandleInvalidArgs) {
163
177
EXPECT_EQ (ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
164
178
165
179
ret = umfFree (ptr);
166
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
180
+ EXPECT_EQ (ret,
181
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
167
182
}
168
183
169
184
TEST_P (umfIpcTest, BasicFlow) {
@@ -218,7 +233,8 @@ TEST_P(umfIpcTest, BasicFlow) {
218
233
EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
219
234
220
235
ret = umfPoolFree (pool.get (), ptr);
221
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
236
+ EXPECT_EQ (ret,
237
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
222
238
223
239
pool.reset (nullptr );
224
240
EXPECT_EQ (stat.getCount , 1 );
@@ -282,7 +298,8 @@ TEST_P(umfIpcTest, GetPoolByOpenedHandle) {
282
298
283
299
for (size_t i = 0 ; i < NUM_ALLOCS; ++i) {
284
300
umf_result_t ret = umfFree (ptrs[i]);
285
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
301
+ EXPECT_EQ (ret,
302
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
286
303
}
287
304
}
288
305
@@ -308,7 +325,8 @@ TEST_P(umfIpcTest, AllocFreeAllocTest) {
308
325
EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
309
326
310
327
ret = umfPoolFree (pool.get (), ptr);
311
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
328
+ EXPECT_EQ (ret,
329
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
312
330
313
331
ptr = umfPoolMalloc (pool.get (), SIZE);
314
332
ASSERT_NE (ptr, nullptr );
@@ -330,7 +348,8 @@ TEST_P(umfIpcTest, AllocFreeAllocTest) {
330
348
EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
331
349
332
350
ret = umfPoolFree (pool.get (), ptr);
333
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
351
+ EXPECT_EQ (ret,
352
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
334
353
335
354
pool.reset (nullptr );
336
355
EXPECT_EQ (stat.allocCount , stat.getCount );
@@ -382,7 +401,8 @@ TEST_P(umfIpcTest, openInTwoPools) {
382
401
EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
383
402
384
403
ret = umfPoolFree (pool1.get (), ptr);
385
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
404
+ EXPECT_EQ (ret,
405
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
386
406
387
407
pool1.reset (nullptr );
388
408
pool2.reset (nullptr );
@@ -433,7 +453,8 @@ TEST_P(umfIpcTest, ConcurrentGetPutHandles) {
433
453
434
454
for (void *ptr : ptrs) {
435
455
umf_result_t ret = umfPoolFree (pool.get (), ptr);
436
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
456
+ EXPECT_EQ (ret,
457
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
437
458
}
438
459
439
460
pool.reset (nullptr );
@@ -495,7 +516,8 @@ TEST_P(umfIpcTest, ConcurrentOpenCloseHandles) {
495
516
496
517
for (void *ptr : ptrs) {
497
518
umf_result_t ret = umfPoolFree (pool.get (), ptr);
498
- EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
519
+ EXPECT_EQ (ret,
520
+ get_umf_result_of_free (freeNotSupported, UMF_RESULT_SUCCESS));
499
521
}
500
522
501
523
pool.reset (nullptr );
0 commit comments