|
2 | 2 | // Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
|
3 | 3 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
4 | 4 |
|
5 |
| -#ifndef UMF_TEST_MEMORY_POOL_OPS_HPP |
6 |
| -#define UMF_TEST_MEMORY_POOL_OPS_HPP |
| 5 | +#ifndef UMF_TEST_POOL_FIXTURES_HPP |
| 6 | +#define UMF_TEST_POOL_FIXTURES_HPP 1 |
7 | 7 |
|
8 | 8 | #include "pool.hpp"
|
9 | 9 | #include "provider.hpp"
|
| 10 | +#include "umf/providers/provider_coarse.h" |
10 | 11 |
|
11 | 12 | #include <array>
|
12 | 13 | #include <cstring>
|
|
17 | 18 |
|
18 | 19 | #include "../malloc_compliance_tests.hpp"
|
19 | 20 |
|
20 |
| -using poolCreateExtParams = std::tuple<umf_memory_pool_ops_t *, void *, |
21 |
| - umf_memory_provider_ops_t *, void *>; |
| 21 | +using poolCreateExtParams = |
| 22 | + std::tuple<umf_memory_pool_ops_t *, void *, umf_memory_provider_ops_t *, |
| 23 | + void *, void *>; |
22 | 24 |
|
23 | 25 | umf::pool_unique_handle_t poolCreateExtUnique(poolCreateExtParams params) {
|
24 |
| - umf_memory_pool_handle_t hPool; |
25 |
| - auto [pool_ops, pool_params, provider_ops, provider_params] = params; |
| 26 | + auto [pool_ops, pool_params, provider_ops, provider_params, coarse_params] = |
| 27 | + params; |
26 | 28 |
|
| 29 | + umf_memory_provider_handle_t upstream_provider = nullptr; |
27 | 30 | umf_memory_provider_handle_t provider = nullptr;
|
28 |
| - auto ret = |
29 |
| - umfMemoryProviderCreate(provider_ops, provider_params, &provider); |
| 31 | + umf_memory_pool_handle_t hPool = nullptr; |
| 32 | + umf_result_t ret; |
| 33 | + |
| 34 | + ret = umfMemoryProviderCreate(provider_ops, provider_params, |
| 35 | + &upstream_provider); |
30 | 36 | EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
|
| 37 | + EXPECT_NE(upstream_provider, nullptr); |
| 38 | + |
| 39 | + provider = upstream_provider; |
| 40 | + |
| 41 | + if (coarse_params) { |
| 42 | + coarse_memory_provider_params_t *coarse_memory_provider_params = |
| 43 | + (coarse_memory_provider_params_t *)coarse_params; |
| 44 | + coarse_memory_provider_params->upstream_memory_provider = |
| 45 | + upstream_provider; |
| 46 | + coarse_memory_provider_params->destroy_upstream_memory_provider = true; |
| 47 | + |
| 48 | + umf_memory_provider_handle_t coarse_provider = nullptr; |
| 49 | + ret = umfMemoryProviderCreate(umfCoarseMemoryProviderOps(), |
| 50 | + coarse_params, &coarse_provider); |
| 51 | + EXPECT_EQ(ret, UMF_RESULT_SUCCESS); |
| 52 | + EXPECT_NE(coarse_provider, nullptr); |
| 53 | + |
| 54 | + provider = coarse_provider; |
| 55 | + } |
31 | 56 |
|
32 | 57 | ret = umfPoolCreate(pool_ops, provider, pool_params,
|
33 | 58 | UMF_POOL_CREATE_FLAG_OWN_PROVIDER, &hPool);
|
34 | 59 | EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
|
| 60 | + EXPECT_NE(hPool, nullptr); |
35 | 61 |
|
36 | 62 | return umf::pool_unique_handle_t(hPool, &umfPoolDestroy);
|
37 | 63 | }
|
@@ -407,4 +433,4 @@ TEST_P(umfPoolTest, realloc_compliance) {
|
407 | 433 |
|
408 | 434 | TEST_P(umfPoolTest, free_compliance) { free_compliance_test(pool.get()); }
|
409 | 435 |
|
410 |
| -#endif /* UMF_TEST_MEMORY_POOL_OPS_HPP */ |
| 436 | +#endif /* UMF_TEST_POOL_FIXTURES_HPP */ |
0 commit comments