Skip to content

Commit b9f9645

Browse files
committed
Enable running umfIpcTest tests when free() is not supported
Some memory providers (currently the devdax and the file providers) do not support the free() operation (free() always returns the UMF_RESULT_ERROR_NOT_SUPPORTED error). Add the UMF_TEST_PROVIDER_FREE_NOT_SUPPORTED define and the get_umf_result_of_free macro() to ipcFixtures.hpp to enable running umfIpcTest tests when free() is not supported. Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 6d5bc3b commit b9f9645

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

test/ipcFixtures.hpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
#include <numeric>
2020
#include <tuple>
2121

22+
#ifdef UMF_TEST_PROVIDER_FREE_NOT_SUPPORTED
23+
#define get_umf_result_of_free(expected_result) UMF_RESULT_ERROR_NOT_SUPPORTED
24+
#else
25+
#define get_umf_result_of_free(expected_result) (expected_result)
26+
#endif
27+
2228
class MemoryAccessor {
2329
public:
2430
virtual void fill(void *ptr, size_t size, const void *pattern,
@@ -163,7 +169,7 @@ TEST_P(umfIpcTest, GetIPCHandleInvalidArgs) {
163169
EXPECT_EQ(ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
164170

165171
ret = umfFree(ptr);
166-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
172+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
167173
}
168174

169175
TEST_P(umfIpcTest, BasicFlow) {
@@ -218,7 +224,7 @@ TEST_P(umfIpcTest, BasicFlow) {
218224
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
219225

220226
ret = umfPoolFree(pool.get(), ptr);
221-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
227+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
222228

223229
// Test if umfCloseIPCHandle() did not corrupt the pool
224230
// and if umfPoolMalloc() works correctly after umfCloseIPCHandle().
@@ -230,7 +236,7 @@ TEST_P(umfIpcTest, BasicFlow) {
230236
memAccessor->fill(ptr, SIZE, &pattern, sizeof(pattern));
231237

232238
ret = umfPoolFree(pool.get(), ptr);
233-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
239+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
234240

235241
pool.reset(nullptr);
236242
EXPECT_EQ(stat.getCount, 1);
@@ -294,7 +300,7 @@ TEST_P(umfIpcTest, GetPoolByOpenedHandle) {
294300

295301
for (size_t i = 0; i < NUM_ALLOCS; ++i) {
296302
umf_result_t ret = umfFree(ptrs[i]);
297-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
303+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
298304
}
299305
}
300306

@@ -320,7 +326,7 @@ TEST_P(umfIpcTest, AllocFreeAllocTest) {
320326
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
321327

322328
ret = umfPoolFree(pool.get(), ptr);
323-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
329+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
324330

325331
ptr = umfPoolMalloc(pool.get(), SIZE);
326332
ASSERT_NE(ptr, nullptr);
@@ -338,7 +344,7 @@ TEST_P(umfIpcTest, AllocFreeAllocTest) {
338344
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
339345

340346
ret = umfPoolFree(pool.get(), ptr);
341-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
347+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
342348

343349
// Test if umfCloseIPCHandle() did not corrupt the pool
344350
// and if umfPoolMalloc() works correctly after umfCloseIPCHandle().
@@ -350,7 +356,7 @@ TEST_P(umfIpcTest, AllocFreeAllocTest) {
350356
memAccessor->fill(ptr, SIZE, &pattern, sizeof(pattern));
351357

352358
ret = umfPoolFree(pool.get(), ptr);
353-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
359+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
354360

355361
pool.reset(nullptr);
356362
EXPECT_EQ(stat.getCount, stat.putCount);
@@ -401,7 +407,7 @@ TEST_P(umfIpcTest, openInTwoPools) {
401407
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
402408

403409
ret = umfPoolFree(pool1.get(), ptr);
404-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
410+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
405411

406412
pool1.reset(nullptr);
407413
pool2.reset(nullptr);
@@ -452,7 +458,7 @@ TEST_P(umfIpcTest, ConcurrentGetPutHandles) {
452458

453459
for (void *ptr : ptrs) {
454460
umf_result_t ret = umfPoolFree(pool.get(), ptr);
455-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
461+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
456462
}
457463

458464
pool.reset(nullptr);
@@ -514,7 +520,7 @@ TEST_P(umfIpcTest, ConcurrentOpenCloseHandles) {
514520

515521
for (void *ptr : ptrs) {
516522
umf_result_t ret = umfPoolFree(pool.get(), ptr);
517-
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
523+
EXPECT_EQ(ret, get_umf_result_of_free(UMF_RESULT_SUCCESS));
518524
}
519525

520526
pool.reset(nullptr);

0 commit comments

Comments
 (0)