Skip to content

Commit 4a2136e

Browse files
Merge pull request #863 from ldorau/Add_DEVDAX_and_FSDAX_tests_with_the_proxy_library
Add DEVDAX and FSDAX tests with the proxy library
2 parents 8b554a0 + edc1ca8 commit 4a2136e

File tree

4 files changed

+85
-49
lines changed

4 files changed

+85
-49
lines changed

.github/workflows/reusable_dax.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,28 @@ jobs:
101101
102102
- name: Run the FSDAX tests
103103
working-directory: ${{env.BUILD_DIR}}
104-
run: |
105-
UMF_TESTS_FSDAX_PATH=${{env.UMF_TESTS_FSDAX_PATH}} UMF_TESTS_FSDAX_PATH_2=${{env.UMF_TESTS_FSDAX_PATH_2}} ctest -C ${{matrix.build_type}} -R umf-provider_file_memory -V
106-
UMF_TESTS_FSDAX_PATH=${{env.UMF_TESTS_FSDAX_PATH}} UMF_TESTS_FSDAX_PATH_2=${{env.UMF_TESTS_FSDAX_PATH_2}} ctest -C ${{matrix.build_type}} -R umf_example_dram_and_fsdax -V
107-
UMF_TESTS_FSDAX_PATH=${{env.UMF_TESTS_FSDAX_PATH}} UMF_TESTS_FSDAX_PATH_2=${{env.UMF_TESTS_FSDAX_PATH_2}} ctest -C ${{matrix.build_type}} -R umf-ipc_file_prov_fsdax -V
104+
run: >
105+
UMF_TESTS_FSDAX_PATH=${{env.UMF_TESTS_FSDAX_PATH}}
106+
UMF_TESTS_FSDAX_PATH_2=${{env.UMF_TESTS_FSDAX_PATH_2}}
107+
ctest -C ${{matrix.build_type}} -V -R "umf-provider_file_memory|umf_example_dram_and_fsdax|umf-ipc_file_prov_fsdax"
108+
109+
# TODO: enable the provider_devdax_memory_ipc test when the IPC tests with the proxy library are fixed
110+
# see the issue: https://github.com/oneapi-src/unified-memory-framework/issues/864
111+
- name: Run the DEVDAX tests with the proxy library
112+
working-directory: ${{env.BUILD_DIR}}
113+
run: >
114+
LD_PRELOAD=./lib/libumf_proxy.so
115+
UMF_TESTS_DEVDAX_PATH="/dev/dax${{env.DEVDAX_NAMESPACE}}"
116+
UMF_TESTS_DEVDAX_SIZE="$(ndctl list --namespace=namespace${{env.DEVDAX_NAMESPACE}} | grep size | cut -d':' -f2 | cut -d',' -f1)"
117+
ctest -C ${{matrix.build_type}} -R devdax -E provider_devdax_memory_ipc -V
118+
119+
- name: Run the FSDAX tests with the proxy library
120+
working-directory: ${{env.BUILD_DIR}}
121+
run: >
122+
LD_PRELOAD=./lib/libumf_proxy.so
123+
UMF_TESTS_FSDAX_PATH=${{env.UMF_TESTS_FSDAX_PATH}}
124+
UMF_TESTS_FSDAX_PATH_2=${{env.UMF_TESTS_FSDAX_PATH_2}}
125+
ctest -C ${{matrix.build_type}} -V -R "umf-provider_file_memory|umf_example_dram_and_fsdax|umf-ipc_file_prov_fsdax"
108126
109127
- name: Check coverage
110128
if: ${{ matrix.build_type == 'Debug' }}

test/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@ if(LINUX AND (NOT UMF_DISABLE_HWLOC)) # OS-specific functions are implemented
274274
add_umf_test(
275275
NAME provider_devdax_memory
276276
SRCS provider_devdax_memory.cpp
277+
LIBS ${UMF_UTILS_FOR_TEST})
278+
add_umf_test(
279+
NAME provider_devdax_memory_ipc
280+
SRCS provider_devdax_memory_ipc.cpp
277281
LIBS ${UMF_UTILS_FOR_TEST} ${LIB_JEMALLOC_POOL})
278282
add_umf_test(
279283
NAME provider_file_memory

test/provider_devdax_memory.cpp

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,10 @@
1212
#include "base.hpp"
1313

1414
#include "cpp_helpers.hpp"
15-
#include "ipcFixtures.hpp"
1615
#include "test_helpers.h"
1716

1817
#include <umf/memory_provider.h>
1918
#include <umf/providers/provider_devdax_memory.h>
20-
#ifdef UMF_POOL_JEMALLOC_ENABLED
21-
#include <umf/pools/pool_jemalloc.h>
22-
#endif
23-
#ifdef UMF_POOL_SCALABLE_ENABLED
24-
#include <umf/pools/pool_scalable.h>
25-
#endif
2619

2720
using umf_test::test;
2821

@@ -357,41 +350,3 @@ TEST_F(test, create_wrong_size_0) {
357350
EXPECT_EQ(ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
358351
EXPECT_EQ(hProvider, nullptr);
359352
}
360-
361-
HostMemoryAccessor hostAccessor;
362-
363-
static std::vector<ipcTestParams> getIpcProxyPoolTestParamsList(void) {
364-
std::vector<ipcTestParams> ipcProxyPoolTestParamsList = {};
365-
366-
char *path = getenv("UMF_TESTS_DEVDAX_PATH");
367-
if (path == nullptr || path[0] == 0) {
368-
// Test skipped, UMF_TESTS_DEVDAX_PATH is not set
369-
return ipcProxyPoolTestParamsList;
370-
}
371-
372-
char *size = getenv("UMF_TESTS_DEVDAX_SIZE");
373-
if (size == nullptr || size[0] == 0) {
374-
// Test skipped, UMF_TESTS_DEVDAX_PATH is not set
375-
return ipcProxyPoolTestParamsList;
376-
}
377-
378-
ipcProxyPoolTestParamsList = {
379-
{umfProxyPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
380-
&defaultDevDaxParams, &hostAccessor, true},
381-
#ifdef UMF_POOL_JEMALLOC_ENABLED
382-
{umfJemallocPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
383-
&defaultDevDaxParams, &hostAccessor, false},
384-
#endif
385-
#ifdef UMF_POOL_SCALABLE_ENABLED
386-
{umfScalablePoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
387-
&defaultDevDaxParams, &hostAccessor, false},
388-
#endif
389-
};
390-
391-
return ipcProxyPoolTestParamsList;
392-
}
393-
394-
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(umfIpcTest);
395-
396-
INSTANTIATE_TEST_SUITE_P(DevDaxProviderDifferentPoolsTest, umfIpcTest,
397-
::testing::ValuesIn(getIpcProxyPoolTestParamsList()));

test/provider_devdax_memory_ipc.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (C) 2024 Intel Corporation
2+
// Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
3+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4+
5+
#include <umf/memory_provider.h>
6+
#include <umf/providers/provider_devdax_memory.h>
7+
#ifdef UMF_POOL_JEMALLOC_ENABLED
8+
#include <umf/pools/pool_jemalloc.h>
9+
#endif
10+
#ifdef UMF_POOL_SCALABLE_ENABLED
11+
#include <umf/pools/pool_scalable.h>
12+
#endif
13+
14+
#include "ipcFixtures.hpp"
15+
16+
using umf_test::test;
17+
18+
auto defaultDevDaxParams = umfDevDaxMemoryProviderParamsDefault(
19+
getenv("UMF_TESTS_DEVDAX_PATH"),
20+
atol(getenv("UMF_TESTS_DEVDAX_SIZE") ? getenv("UMF_TESTS_DEVDAX_SIZE")
21+
: "0"));
22+
23+
HostMemoryAccessor hostAccessor;
24+
25+
static std::vector<ipcTestParams> getIpcProxyPoolTestParamsList(void) {
26+
std::vector<ipcTestParams> ipcProxyPoolTestParamsList = {};
27+
28+
char *path = getenv("UMF_TESTS_DEVDAX_PATH");
29+
if (path == nullptr || path[0] == 0) {
30+
// skipping the test, UMF_TESTS_DEVDAX_PATH is not set
31+
return ipcProxyPoolTestParamsList;
32+
}
33+
34+
char *size = getenv("UMF_TESTS_DEVDAX_SIZE");
35+
if (size == nullptr || size[0] == 0) {
36+
// skipping the test, UMF_TESTS_DEVDAX_SIZE is not set
37+
return ipcProxyPoolTestParamsList;
38+
}
39+
40+
ipcProxyPoolTestParamsList = {
41+
{umfProxyPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
42+
&defaultDevDaxParams, &hostAccessor, true},
43+
#ifdef UMF_POOL_JEMALLOC_ENABLED
44+
{umfJemallocPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
45+
&defaultDevDaxParams, &hostAccessor, false},
46+
#endif
47+
#ifdef UMF_POOL_SCALABLE_ENABLED
48+
{umfScalablePoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
49+
&defaultDevDaxParams, &hostAccessor, false},
50+
#endif
51+
};
52+
53+
return ipcProxyPoolTestParamsList;
54+
}
55+
56+
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(umfIpcTest);
57+
58+
INSTANTIATE_TEST_SUITE_P(DevDaxProviderDifferentPoolsTest, umfIpcTest,
59+
::testing::ValuesIn(getIpcProxyPoolTestParamsList()));

0 commit comments

Comments
 (0)