Skip to content

Commit b879e1f

Browse files
committed
Move urContextGetInfo success test from a switch to individual tests.
1 parent b4c8858 commit b879e1f

File tree

1 file changed

+127
-96
lines changed

1 file changed

+127
-96
lines changed

test/conformance/context/urContextGetInfo.cpp

Lines changed: 127 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -4,116 +4,147 @@
44
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55
#include <uur/fixtures.h>
66

7-
struct urContextGetInfoTestWithInfoParam
8-
: uur::urContextTestWithParam<ur_context_info_t> {
9-
10-
void SetUp() override {
11-
UUR_RETURN_ON_FATAL_FAILURE(
12-
uur::urContextTestWithParam<ur_context_info_t>::SetUp());
13-
14-
ctx_info_size_map = {
15-
{UR_CONTEXT_INFO_NUM_DEVICES, sizeof(uint32_t)},
16-
{UR_CONTEXT_INFO_DEVICES, sizeof(ur_device_handle_t)},
17-
{UR_CONTEXT_INFO_REFERENCE_COUNT, sizeof(uint32_t)},
18-
{UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, sizeof(bool)},
19-
{UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, sizeof(bool)},
20-
{UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
21-
sizeof(ur_memory_order_capability_flags_t)},
22-
{UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
23-
sizeof(ur_memory_order_capability_flags_t)},
24-
{UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
25-
sizeof(ur_memory_order_capability_flags_t)},
26-
{UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
27-
sizeof(ur_memory_order_capability_flags_t)}};
28-
29-
ctx_info_mem_flags_map = {
30-
{UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES,
31-
UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
32-
{UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES,
33-
UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
34-
{UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES,
35-
UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK},
36-
{UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES,
37-
UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK},
38-
};
39-
}
40-
41-
void TearDown() override {
42-
UUR_RETURN_ON_FATAL_FAILURE(
43-
uur::urContextTestWithParam<ur_context_info_t>::TearDown());
44-
}
7+
using urContextGetInfoTest = uur::urContextTest;
8+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urContextGetInfoTest);
459

46-
std::unordered_map<ur_context_info_t, size_t> ctx_info_size_map;
47-
std::unordered_map<ur_context_info_t, ur_memory_order_capability_flags_t>
48-
ctx_info_mem_flags_map;
49-
};
50-
51-
UUR_TEST_SUITE_P(urContextGetInfoTestWithInfoParam,
52-
::testing::Values(
53-
54-
UR_CONTEXT_INFO_NUM_DEVICES, //
55-
UR_CONTEXT_INFO_DEVICES, //
56-
UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT, //
57-
UR_CONTEXT_INFO_USM_FILL2D_SUPPORT, //
58-
UR_CONTEXT_INFO_REFERENCE_COUNT, //
59-
UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES, //
60-
UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES, //
61-
UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES, //
62-
UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES //
63-
),
64-
uur::deviceTestWithParamPrinter<ur_context_info_t>);
65-
66-
TEST_P(urContextGetInfoTestWithInfoParam, Success) {
67-
ur_context_info_t info = getParam();
68-
size_t info_size = 0;
69-
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
70-
urContextGetInfo(context, info, 0, nullptr, &info_size), info);
71-
ASSERT_NE(info_size, 0);
10+
TEST_P(urContextGetInfoTest, SuccessNumDevices) {
11+
ur_context_info_t info_type = UR_CONTEXT_INFO_NUM_DEVICES;
12+
size_t size = 0;
7213

73-
if (const auto expected_size = ctx_info_size_map.find(info);
74-
expected_size != ctx_info_size_map.end()) {
75-
ASSERT_EQ(expected_size->second, info_size);
76-
}
14+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, 0, nullptr, &size));
15+
ASSERT_NE(size, 0);
16+
ASSERT_EQ(size, sizeof(uint32_t));
7717

78-
std::vector<uint8_t> info_data(info_size);
18+
uint32_t nDevices = 0;
7919
ASSERT_SUCCESS(
80-
urContextGetInfo(context, info, info_size, info_data.data(), nullptr));
81-
82-
switch (info) {
83-
case UR_CONTEXT_INFO_NUM_DEVICES: {
84-
auto returned_num_of_devices =
85-
reinterpret_cast<uint32_t *>(info_data.data());
86-
ASSERT_GE(uur::DevicesEnvironment::instance->devices.size(),
87-
*returned_num_of_devices);
88-
break;
89-
}
90-
case UR_CONTEXT_INFO_DEVICES: {
91-
auto returned_devices =
92-
reinterpret_cast<ur_device_handle_t *>(info_data.data());
93-
size_t devices_count = info_size / sizeof(ur_device_handle_t);
20+
urContextGetInfo(context, info_type, size, &nDevices, nullptr));
21+
22+
ASSERT_GE(uur::DevicesEnvironment::instance->devices.size(), nDevices);
23+
}
24+
25+
TEST_P(urContextGetInfoTest, SuccessDevices) {
26+
ur_context_info_t info_type = UR_CONTEXT_INFO_DEVICES;
27+
size_t size = 0;
28+
29+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, 0, nullptr, &size));
30+
ASSERT_NE(size, 0);
31+
32+
if (size > 0) {
33+
ur_device_handle_t devices = 0;
34+
ASSERT_SUCCESS(
35+
urContextGetInfo(context, info_type, size, &devices, nullptr));
36+
37+
size_t devices_count = size / sizeof(ur_device_handle_t);
9438
ASSERT_GT(devices_count, 0);
39+
9540
for (uint32_t i = 0; i < devices_count; i++) {
9641
auto &devices = uur::DevicesEnvironment::instance->devices;
9742
auto queried_device =
98-
std::find(devices.begin(), devices.end(), returned_devices[i]);
43+
std::find(devices.begin(), devices.end(), devices[i]);
9944
EXPECT_TRUE(queried_device != devices.end())
10045
<< "device associated with the context is not valid";
10146
}
102-
break;
103-
}
104-
case UR_CONTEXT_INFO_REFERENCE_COUNT: {
105-
auto returned_reference_count =
106-
reinterpret_cast<uint32_t *>(info_data.data());
107-
ASSERT_GT(*returned_reference_count, 0U);
108-
break;
109-
}
110-
default:
111-
break;
47+
} else {
48+
ASSERT_EQ(size, 0);
11249
}
11350
}
11451

115-
using urContextGetInfoTest = uur::urContextTest;
116-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urContextGetInfoTest);
52+
TEST_P(urContextGetInfoTest, SuccessUSMMemCpy2DSupport) {
53+
ur_context_info_t info_type = UR_CONTEXT_INFO_USM_MEMCPY2D_SUPPORT;
54+
size_t size = 0;
55+
56+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, 0, nullptr, &size));
57+
ASSERT_NE(size, 0);
58+
ASSERT_EQ(size, sizeof(ur_bool_t));
59+
}
60+
61+
TEST_P(urContextGetInfoTest, SuccessUSMFill2DSupport) {
62+
ur_context_info_t info_type = UR_CONTEXT_INFO_USM_FILL2D_SUPPORT;
63+
size_t size = 0;
64+
65+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, 0, nullptr, &size));
66+
ASSERT_NE(size, 0);
67+
ASSERT_EQ(size, sizeof(ur_bool_t));
68+
}
69+
70+
TEST_P(urContextGetInfoTest, SuccessReferenceCount) {
71+
ur_context_info_t info_type = UR_CONTEXT_INFO_REFERENCE_COUNT;
72+
size_t size = 0;
73+
74+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, 0, nullptr, &size));
75+
ASSERT_NE(size, 0);
76+
ASSERT_EQ(size, sizeof(uint32_t));
77+
78+
uint32_t reference_count = 0;
79+
ASSERT_SUCCESS(
80+
urContextGetInfo(context, info_type, size, &reference_count, nullptr));
81+
ASSERT_GT(reference_count, 0U);
82+
}
83+
84+
TEST_P(urContextGetInfoTest, SuccessAtomicMemoryOrderCapabilities) {
85+
ur_context_info_t info_type =
86+
UR_CONTEXT_INFO_ATOMIC_MEMORY_ORDER_CAPABILITIES;
87+
size_t size = 0;
88+
89+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
90+
urContextGetInfo(context, info_type, 0, nullptr, &size), info_type);
91+
ASSERT_NE(size, 0);
92+
ASSERT_EQ(size, sizeof(ur_memory_order_capability_flags_t));
93+
94+
ur_memory_order_capability_flags_t flags = 0;
95+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, size, &flags, nullptr));
96+
97+
ASSERT_EQ(flags & UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK, 0);
98+
}
99+
100+
TEST_P(urContextGetInfoTest, SuccessAtomicMemoryScopeCapabilities) {
101+
ur_context_info_t info_type =
102+
UR_CONTEXT_INFO_ATOMIC_MEMORY_SCOPE_CAPABILITIES;
103+
size_t size = 0;
104+
105+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
106+
urContextGetInfo(context, info_type, 0, nullptr, &size), info_type);
107+
ASSERT_NE(size, 0);
108+
ASSERT_EQ(size, sizeof(ur_memory_scope_capability_flags_t));
109+
110+
ur_memory_scope_capability_flags_t flags = 0;
111+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, size, &flags, nullptr));
112+
113+
ASSERT_EQ(flags & UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK, 0);
114+
}
115+
116+
TEST_P(urContextGetInfoTest, SuccessAtomicFenceOrderCapabilities) {
117+
ur_context_info_t info_type =
118+
UR_CONTEXT_INFO_ATOMIC_FENCE_ORDER_CAPABILITIES;
119+
size_t size = 0;
120+
121+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
122+
urContextGetInfo(context, info_type, 0, nullptr, &size), info_type);
123+
ASSERT_NE(size, 0);
124+
ASSERT_EQ(size, sizeof(ur_memory_order_capability_flags_t));
125+
126+
ur_memory_order_capability_flags_t flags = 0;
127+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, size, &flags, nullptr));
128+
129+
ASSERT_EQ(flags & UR_MEMORY_ORDER_CAPABILITY_FLAGS_MASK, 0);
130+
}
131+
132+
TEST_P(urContextGetInfoTest, SuccessAtomicFenceScopeCapabilities) {
133+
ur_context_info_t info_type =
134+
UR_CONTEXT_INFO_ATOMIC_FENCE_SCOPE_CAPABILITIES;
135+
size_t size = 0;
136+
137+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
138+
urContextGetInfo(context, info_type, 0, nullptr, &size), info_type);
139+
ASSERT_NE(size, 0);
140+
ASSERT_EQ(size, sizeof(ur_memory_scope_capability_flags_t));
141+
142+
ur_memory_scope_capability_flags_t flags = 0;
143+
ASSERT_SUCCESS(urContextGetInfo(context, info_type, size, &flags, nullptr));
144+
145+
ASSERT_EQ(flags & UR_MEMORY_SCOPE_CAPABILITY_FLAGS_MASK, 0);
146+
}
147+
117148
TEST_P(urContextGetInfoTest, InvalidNullHandleContext) {
118149
uint32_t nDevices = 0;
119150
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_NULL_HANDLE,

0 commit comments

Comments
 (0)