Skip to content

Commit 495a331

Browse files
authored
Merge pull request #2538 from martygrant/martin/usm-info-rework
Move urUSMGetMemAlloc/PoolGetInfo success test from a switch to indivual tests
2 parents eda83a2 + 307d1e1 commit 495a331

File tree

3 files changed

+134
-113
lines changed

3 files changed

+134
-113
lines changed

test/conformance/testing/include/uur/fixtures.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,9 @@ struct urMultiDeviceMemImageWriteTest : urMultiDeviceMemImageQueueTest {
899899

900900
struct urUSMDeviceAllocTest : urQueueTest {
901901
void SetUp() override {
902+
// urQueueFlush is not supported by native cpu.
903+
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
904+
902905
UUR_RETURN_ON_FATAL_FAILURE(uur::urQueueTest::SetUp());
903906
ur_device_usm_access_capability_flags_t device_usm = 0;
904907
ASSERT_SUCCESS(GetDeviceUSMDeviceSupport(device, device_usm));

test/conformance/usm/urUSMGetMemAllocInfo.cpp

Lines changed: 104 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <uur/fixtures.h>
77
#include <uur/known_failure.h>
88

9-
struct urUSMGetMemAllocInfoTest
9+
struct urUSMGetMemAllocInfoPoolTest
1010
: uur::urUSMDeviceAllocTestWithParam<ur_usm_alloc_info_t> {
1111
void SetUp() override {
1212
// The setup for the parent fixture does a urQueueFlush, which isn't
@@ -19,125 +19,142 @@ struct urUSMGetMemAllocInfoTest
1919
}
2020
};
2121

22-
UUR_DEVICE_TEST_SUITE_P(urUSMGetMemAllocInfoTest,
23-
::testing::Values(UR_USM_ALLOC_INFO_TYPE,
24-
UR_USM_ALLOC_INFO_BASE_PTR,
25-
UR_USM_ALLOC_INFO_SIZE,
26-
UR_USM_ALLOC_INFO_DEVICE,
27-
UR_USM_ALLOC_INFO_POOL),
22+
UUR_DEVICE_TEST_SUITE_P(urUSMGetMemAllocInfoPoolTest,
23+
::testing::Values(UR_USM_ALLOC_INFO_POOL),
2824
uur::deviceTestWithParamPrinter<ur_usm_alloc_info_t>);
2925

30-
static std::unordered_map<ur_usm_alloc_info_t, size_t> usm_info_size_map = {
31-
{UR_USM_ALLOC_INFO_TYPE, sizeof(ur_usm_type_t)},
32-
{UR_USM_ALLOC_INFO_BASE_PTR, sizeof(void *)},
33-
{UR_USM_ALLOC_INFO_SIZE, sizeof(size_t)},
34-
{UR_USM_ALLOC_INFO_DEVICE, sizeof(ur_device_handle_t)},
35-
{UR_USM_ALLOC_INFO_POOL, sizeof(ur_usm_pool_handle_t)},
36-
};
26+
TEST_P(urUSMGetMemAllocInfoPoolTest, SuccessPool) {
27+
UUR_KNOWN_FAILURE_ON(uur::OpenCL{}, uur::LevelZeroV2{});
3728

38-
TEST_P(urUSMGetMemAllocInfoTest, Success) {
39-
size_t size = 0;
40-
auto alloc_info = getParam();
29+
size_t property_size = 0;
30+
ur_usm_alloc_info_t property_name = UR_USM_ALLOC_INFO_POOL;
4131

42-
if (alloc_info == UR_USM_ALLOC_INFO_POOL) {
43-
UUR_KNOWN_FAILURE_ON(uur::OpenCL{}, uur::LevelZeroV2{});
44-
}
32+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
33+
urUSMGetMemAllocInfo(context, ptr, property_name, 0, nullptr,
34+
&property_size),
35+
property_name);
36+
ASSERT_EQ(sizeof(ur_usm_pool_handle_t), property_size);
4537

46-
if (alloc_info == UR_USM_ALLOC_INFO_BASE_PTR) {
47-
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
48-
}
38+
ur_usm_pool_handle_t returned_pool = nullptr;
39+
ASSERT_SUCCESS(urUSMGetMemAllocInfo(
40+
context, ptr, property_name, property_size, &returned_pool, nullptr));
41+
42+
ASSERT_EQ(returned_pool, pool);
43+
}
44+
45+
using urUSMGetMemAllocInfoTest = uur::urUSMDeviceAllocTest;
46+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urUSMGetMemAllocInfoTest);
47+
48+
TEST_P(urUSMGetMemAllocInfoTest, SuccessType) {
49+
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
50+
51+
size_t property_size = 0;
52+
ur_usm_alloc_info_t property_name = UR_USM_ALLOC_INFO_TYPE;
4953

5054
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
51-
urUSMGetMemAllocInfo(context, ptr, alloc_info, 0, nullptr, &size),
52-
alloc_info);
53-
ASSERT_NE(size, 0);
55+
urUSMGetMemAllocInfo(context, ptr, property_name, 0, nullptr,
56+
&property_size),
57+
property_name);
58+
ASSERT_EQ(sizeof(ur_usm_type_t), property_size);
5459

55-
if (const auto expected_size = usm_info_size_map.find(alloc_info);
56-
expected_size != usm_info_size_map.end()) {
57-
ASSERT_EQ(expected_size->second, size);
58-
}
60+
ur_usm_type_t returned_type = UR_USM_TYPE_FORCE_UINT32;
61+
ASSERT_SUCCESS(urUSMGetMemAllocInfo(
62+
context, ptr, property_name, property_size, &returned_type, nullptr));
5963

60-
std::vector<uint8_t> info_data(size);
61-
ASSERT_SUCCESS(urUSMGetMemAllocInfo(context, ptr, alloc_info, size,
62-
info_data.data(), nullptr));
63-
switch (alloc_info) {
64-
case UR_USM_ALLOC_INFO_DEVICE: {
65-
auto returned_device =
66-
reinterpret_cast<ur_device_handle_t *>(info_data.data());
67-
ASSERT_EQ(*returned_device, device);
68-
break;
69-
}
70-
case UR_USM_ALLOC_INFO_SIZE: {
71-
auto returned_size = reinterpret_cast<size_t *>(info_data.data());
72-
ASSERT_GE(*returned_size, allocation_size);
73-
break;
74-
}
75-
case UR_USM_ALLOC_INFO_BASE_PTR: {
76-
auto returned_ptr = reinterpret_cast<void **>(info_data.data());
77-
ASSERT_EQ(*returned_ptr, ptr);
78-
break;
79-
}
80-
case UR_USM_ALLOC_INFO_POOL: {
81-
auto returned_pool =
82-
reinterpret_cast<ur_usm_pool_handle_t *>(info_data.data());
83-
ASSERT_EQ(*returned_pool, pool);
84-
break;
85-
}
86-
case UR_USM_ALLOC_INFO_TYPE: {
87-
auto returned_type =
88-
reinterpret_cast<ur_usm_type_t *>(info_data.data());
89-
ASSERT_EQ(*returned_type, UR_USM_TYPE_DEVICE);
90-
break;
91-
}
92-
default:
93-
break;
94-
}
64+
ASSERT_EQ(returned_type, UR_USM_TYPE_DEVICE);
9565
}
9666

97-
struct urUSMGetMemAllocInfoNegativeTest : uur::urUSMDeviceAllocTest {
98-
void SetUp() override {
99-
// The setup for the parent fixture does a urQueueFlush, which isn't
100-
// supported by native cpu.
101-
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
102-
UUR_RETURN_ON_FATAL_FAILURE(uur::urUSMDeviceAllocTest::SetUp());
103-
}
104-
};
105-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urUSMGetMemAllocInfoNegativeTest);
67+
TEST_P(urUSMGetMemAllocInfoTest, SuccessBasePtr) {
68+
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
10669

107-
TEST_P(urUSMGetMemAllocInfoNegativeTest, InvalidNullHandleContext) {
70+
size_t property_size = 0;
71+
ur_usm_alloc_info_t property_name = UR_USM_ALLOC_INFO_BASE_PTR;
72+
73+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
74+
urUSMGetMemAllocInfo(context, ptr, property_name, 0, nullptr,
75+
&property_size),
76+
property_name);
77+
ASSERT_GT(property_size, 0);
78+
79+
void *returned_ptr = nullptr;
80+
ASSERT_SUCCESS(urUSMGetMemAllocInfo(context, ptr, property_name,
81+
property_size, &returned_ptr, nullptr));
82+
83+
ASSERT_EQ(returned_ptr, ptr);
84+
}
85+
86+
TEST_P(urUSMGetMemAllocInfoTest, SuccessSize) {
10887
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
10988

110-
ur_usm_type_t USMType;
111-
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_NULL_HANDLE,
112-
urUSMGetMemAllocInfo(nullptr, ptr, UR_USM_ALLOC_INFO_TYPE,
113-
sizeof(ur_usm_type_t), &USMType,
114-
nullptr));
89+
size_t property_size = 0;
90+
ur_usm_alloc_info_t property_name = UR_USM_ALLOC_INFO_SIZE;
91+
92+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
93+
urUSMGetMemAllocInfo(context, ptr, property_name, 0, nullptr,
94+
&property_size),
95+
property_name);
96+
ASSERT_EQ(sizeof(size_t), property_size);
97+
98+
size_t returned_size = 0;
99+
ASSERT_SUCCESS(urUSMGetMemAllocInfo(
100+
context, ptr, property_name, property_size, &returned_size, nullptr));
101+
102+
ASSERT_GE(returned_size, allocation_size);
103+
}
104+
105+
TEST_P(urUSMGetMemAllocInfoTest, SuccessDevice) {
106+
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
107+
108+
size_t property_size = 0;
109+
ur_usm_alloc_info_t property_name = UR_USM_ALLOC_INFO_DEVICE;
110+
111+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
112+
urUSMGetMemAllocInfo(context, ptr, property_name, 0, nullptr,
113+
&property_size),
114+
property_name);
115+
ASSERT_EQ(sizeof(ur_device_handle_t), property_size);
116+
117+
ur_device_handle_t returned_device = nullptr;
118+
ASSERT_SUCCESS(urUSMGetMemAllocInfo(
119+
context, ptr, property_name, property_size, &returned_device, nullptr));
120+
121+
ASSERT_EQ(returned_device, device);
122+
}
123+
124+
TEST_P(urUSMGetMemAllocInfoTest, InvalidNullHandleContext) {
125+
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
126+
127+
ur_usm_type_t USMType = UR_USM_TYPE_FORCE_UINT32;
128+
ASSERT_EQ_RESULT(
129+
UR_RESULT_ERROR_INVALID_NULL_HANDLE,
130+
urUSMGetMemAllocInfo(nullptr, ptr, UR_USM_ALLOC_INFO_FORCE_UINT32,
131+
sizeof(ur_usm_type_t), &USMType, nullptr));
115132
}
116133

117-
TEST_P(urUSMGetMemAllocInfoNegativeTest, InvalidNullPointerMem) {
134+
TEST_P(urUSMGetMemAllocInfoTest, InvalidNullPointerMem) {
118135
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
119136

120-
ur_usm_type_t USMType;
137+
ur_usm_type_t USMType = UR_USM_TYPE_FORCE_UINT32;
121138
ASSERT_EQ_RESULT(
122139
UR_RESULT_ERROR_INVALID_NULL_POINTER,
123-
urUSMGetMemAllocInfo(context, nullptr, UR_USM_ALLOC_INFO_TYPE,
140+
urUSMGetMemAllocInfo(context, nullptr, UR_USM_ALLOC_INFO_FORCE_UINT32,
124141
sizeof(ur_usm_type_t), &USMType, nullptr));
125142
}
126143

127-
TEST_P(urUSMGetMemAllocInfoNegativeTest, InvalidEnumeration) {
144+
TEST_P(urUSMGetMemAllocInfoTest, InvalidEnumeration) {
128145
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
129146

130-
ur_usm_type_t USMType;
147+
ur_usm_type_t USMType = UR_USM_TYPE_FORCE_UINT32;
131148
ASSERT_EQ_RESULT(
132149
UR_RESULT_ERROR_INVALID_ENUMERATION,
133150
urUSMGetMemAllocInfo(context, ptr, UR_USM_ALLOC_INFO_FORCE_UINT32,
134151
sizeof(ur_usm_type_t), &USMType, nullptr));
135152
}
136153

137-
TEST_P(urUSMGetMemAllocInfoNegativeTest, InvalidValuePropSize) {
154+
TEST_P(urUSMGetMemAllocInfoTest, InvalidValuePropSize) {
138155
UUR_KNOWN_FAILURE_ON(uur::NativeCPU{});
139156

140-
ur_usm_type_t USMType;
157+
ur_usm_type_t USMType = UR_USM_TYPE_FORCE_UINT32;
141158
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_SIZE,
142159
urUSMGetMemAllocInfo(context, ptr, UR_USM_ALLOC_INFO_TYPE,
143160
sizeof(ur_usm_type_t) - 1, &USMType,

test/conformance/usm/urUSMPoolGetInfo.cpp

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,42 @@
33
// See LICENSE.TXT
44
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55
#include "ur_api.h"
6-
#include <map>
76
#include <uur/fixtures.h>
87

9-
std::unordered_map<ur_usm_pool_info_t, size_t> pool_info_size_map = {
10-
{UR_USM_POOL_INFO_CONTEXT, sizeof(ur_context_handle_t)},
11-
{UR_USM_POOL_INFO_REFERENCE_COUNT, sizeof(uint32_t)},
12-
};
13-
14-
using urUSMPoolGetInfoTestWithInfoParam =
15-
uur::urUSMPoolTestWithParam<ur_usm_pool_info_t>;
8+
using urUSMPoolGetInfoTest = uur::urUSMPoolTest;
9+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urUSMPoolGetInfoTest);
1610

17-
UUR_DEVICE_TEST_SUITE_P(urUSMPoolGetInfoTestWithInfoParam,
18-
::testing::Values(UR_USM_POOL_INFO_CONTEXT,
19-
UR_USM_POOL_INFO_REFERENCE_COUNT),
20-
uur::deviceTestWithParamPrinter<ur_usm_pool_info_t>);
11+
TEST_P(urUSMPoolGetInfoTest, SuccessReferenceCount) {
12+
size_t property_size = 0;
13+
ur_usm_pool_info_t property_name = UR_USM_POOL_INFO_REFERENCE_COUNT;
2114

22-
TEST_P(urUSMPoolGetInfoTestWithInfoParam, Success) {
23-
ur_usm_pool_info_t info_type = getParam();
24-
size_t size = 0;
2515
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
26-
urUSMPoolGetInfo(pool, info_type, 0, nullptr, &size), info_type);
27-
ASSERT_NE(size, 0);
16+
urUSMPoolGetInfo(pool, property_name, 0, nullptr, &property_size),
17+
property_name);
18+
ASSERT_EQ(sizeof(uint32_t), property_size);
2819

29-
if (const auto expected_size = pool_info_size_map.find(info_type);
30-
expected_size != pool_info_size_map.end()) {
31-
ASSERT_EQ(expected_size->second, size);
32-
}
20+
uint32_t returned_reference_count = 0;
21+
ASSERT_SUCCESS(urUSMPoolGetInfo(pool, property_name, property_size,
22+
&returned_reference_count, nullptr));
3323

34-
std::vector<uint8_t> data(size);
35-
ASSERT_SUCCESS(
36-
urUSMPoolGetInfo(pool, info_type, size, data.data(), nullptr));
24+
ASSERT_GT(returned_reference_count, 0U);
3725
}
3826

39-
using urUSMPoolGetInfoTest = uur::urUSMPoolTest;
40-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urUSMPoolGetInfoTest);
27+
TEST_P(urUSMPoolGetInfoTest, SuccessContext) {
28+
size_t property_size = 0;
29+
ur_usm_pool_info_t property_name = UR_USM_POOL_INFO_CONTEXT;
30+
31+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
32+
urUSMPoolGetInfo(pool, property_name, 0, nullptr, &property_size),
33+
property_name);
34+
ASSERT_EQ(sizeof(ur_context_handle_t), property_size);
35+
36+
ur_context_handle_t returned_context = nullptr;
37+
ASSERT_SUCCESS(urUSMPoolGetInfo(pool, property_name, property_size,
38+
&returned_context, nullptr));
39+
40+
ASSERT_EQ(context, returned_context);
41+
}
4142

4243
TEST_P(urUSMPoolGetInfoTest, InvalidNullHandlePool) {
4344
ur_context_handle_t context = nullptr;

0 commit comments

Comments
 (0)