Skip to content

Commit 9e48f54

Browse files
authored
Merge pull request #2540 from martygrant/martin/program-info-unswitch
Move urProgramGetInfo success test from a switch to individual tests.
2 parents 6a3fece + 1a1108b commit 9e48f54

File tree

2 files changed

+207
-163
lines changed

2 files changed

+207
-163
lines changed

test/conformance/program/urProgramGetBuildInfo.cpp

+65-51
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,80 @@
66
#include "uur/known_failure.h"
77
#include <uur/fixtures.h>
88

9-
struct urProgramGetBuildInfoTest
10-
: uur::urProgramTestWithParam<ur_program_build_info_t> {
9+
struct urProgramGetBuildInfoTest : uur::urProgramTest {
1110
void SetUp() override {
12-
UUR_RETURN_ON_FATAL_FAILURE(
13-
urProgramTestWithParam<ur_program_build_info_t>::SetUp());
11+
UUR_RETURN_ON_FATAL_FAILURE(urProgramTest::SetUp());
1412
ASSERT_SUCCESS(urProgramBuild(this->context, program, nullptr));
1513
}
1614
};
15+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urProgramGetBuildInfoTest);
1716

18-
UUR_DEVICE_TEST_SUITE_P(
19-
urProgramGetBuildInfoTest,
20-
::testing::Values(UR_PROGRAM_BUILD_INFO_STATUS,
21-
UR_PROGRAM_BUILD_INFO_OPTIONS, UR_PROGRAM_BUILD_INFO_LOG,
22-
UR_PROGRAM_BUILD_INFO_BINARY_TYPE),
23-
uur::deviceTestWithParamPrinter<ur_program_build_info_t>);
17+
TEST_P(urProgramGetBuildInfoTest, SuccessStatus) {
18+
UUR_KNOWN_FAILURE_ON(uur::LevelZero{}, uur::LevelZeroV2{});
2419

25-
struct urProgramGetBuildInfoSingleTest : uur::urProgramTest {
26-
void SetUp() override {
27-
UUR_RETURN_ON_FATAL_FAILURE(urProgramTest::SetUp());
28-
ASSERT_SUCCESS(urProgramBuild(this->context, program, nullptr));
29-
}
30-
};
31-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urProgramGetBuildInfoSingleTest);
20+
size_t size = 0;
21+
auto info_type = UR_PROGRAM_BUILD_INFO_STATUS;
22+
ASSERT_SUCCESS(
23+
urProgramGetBuildInfo(program, device, info_type, 0, nullptr, &size));
24+
ASSERT_EQ(sizeof(ur_program_build_status_t), size);
3225

33-
TEST_P(urProgramGetBuildInfoTest, Success) {
34-
auto property_name = getParam();
26+
ur_program_build_status_t returned_status =
27+
UR_PROGRAM_BUILD_STATUS_FORCE_UINT32;
28+
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device, info_type, size,
29+
&returned_status, nullptr));
3530

36-
if (property_name == UR_PROGRAM_BUILD_INFO_STATUS) {
37-
UUR_KNOWN_FAILURE_ON(uur::LevelZero{}, uur::LevelZeroV2{});
38-
}
31+
ASSERT_GE(returned_status, UR_PROGRAM_BUILD_STATUS_NONE);
32+
ASSERT_LE(returned_status, UR_PROGRAM_BUILD_STATUS_IN_PROGRESS);
33+
}
34+
35+
TEST_P(urProgramGetBuildInfoTest, SuccessOptions) {
36+
size_t size = 0;
37+
auto info_type = UR_PROGRAM_BUILD_INFO_OPTIONS;
38+
ASSERT_SUCCESS(
39+
urProgramGetBuildInfo(program, device, info_type, 0, nullptr, &size));
40+
ASSERT_GT(size, 0);
41+
42+
std::vector<char> returned_options(size);
43+
returned_options[size - 1] = 'x';
44+
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device, info_type, size,
45+
returned_options.data(), nullptr));
46+
47+
ASSERT_EQ(size, returned_options.size());
48+
ASSERT_EQ(returned_options[size - 1], '\0');
49+
}
3950

40-
size_t property_size = 0;
41-
std::vector<char> property_value;
42-
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
43-
urProgramGetBuildInfo(program, device, property_name, 0, nullptr,
44-
&property_size),
45-
property_name);
46-
property_value.resize(property_size);
47-
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device, property_name,
48-
property_size, property_value.data(),
49-
nullptr));
51+
TEST_P(urProgramGetBuildInfoTest, SuccessLog) {
52+
UUR_KNOWN_FAILURE_ON(uur::CUDA{});
53+
54+
size_t size = 0;
55+
auto info_type = UR_PROGRAM_BUILD_INFO_LOG;
56+
ASSERT_SUCCESS(
57+
urProgramGetBuildInfo(program, device, info_type, 0, nullptr, &size));
58+
ASSERT_GT(size, 0);
59+
60+
std::vector<char> returned_log(size);
61+
returned_log[size - 1] = 'x';
62+
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device, info_type, size,
63+
returned_log.data(), nullptr));
64+
65+
ASSERT_EQ(size, returned_log.size());
66+
ASSERT_EQ(returned_log[size - 1], '\0');
67+
}
68+
69+
TEST_P(urProgramGetBuildInfoTest, SuccessBinaryType) {
70+
size_t size = 0;
71+
auto info_type = UR_PROGRAM_BUILD_INFO_BINARY_TYPE;
72+
ASSERT_SUCCESS(
73+
urProgramGetBuildInfo(program, device, info_type, 0, nullptr, &size));
74+
ASSERT_EQ(sizeof(ur_program_binary_type_t), size);
75+
76+
ur_program_binary_type_t returned_binary_type =
77+
UR_PROGRAM_BINARY_TYPE_FORCE_UINT32;
78+
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device, info_type, size,
79+
&returned_binary_type, nullptr));
80+
81+
ASSERT_GE(returned_binary_type, UR_PROGRAM_BINARY_TYPE_NONE);
82+
ASSERT_LE(returned_binary_type, UR_PROGRAM_BINARY_TYPE_EXECUTABLE);
5083
}
5184

5285
TEST_P(urProgramGetBuildInfoTest, InvalidNullHandleProgram) {
@@ -76,22 +109,3 @@ TEST_P(urProgramGetBuildInfoTest, InvalidEnumeration) {
76109
UR_PROGRAM_BUILD_INFO_FORCE_UINT32,
77110
0, nullptr, &propSizeOut));
78111
}
79-
80-
TEST_P(urProgramGetBuildInfoSingleTest, LogIsNullTerminated) {
81-
// This is a flaky fail.
82-
UUR_KNOWN_FAILURE_ON(uur::CUDA{});
83-
84-
size_t logSize;
85-
std::vector<char> log;
86-
87-
ASSERT_SUCCESS(urProgramGetBuildInfo(
88-
program, device, UR_PROGRAM_BUILD_INFO_LOG, 0, nullptr, &logSize));
89-
// The size should always include the null terminator.
90-
ASSERT_GT(logSize, 0);
91-
log.resize(logSize);
92-
log[logSize - 1] = 'x';
93-
ASSERT_SUCCESS(urProgramGetBuildInfo(program, device,
94-
UR_PROGRAM_BUILD_INFO_LOG, logSize,
95-
log.data(), nullptr));
96-
ASSERT_EQ(log[logSize - 1], '\0');
97-
}

0 commit comments

Comments
 (0)