1//===------- Offload API tests - olGetDeviceInfo --------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "../common/Fixtures.hpp"
10#include <OffloadAPI.h>
11#include <gtest/gtest.h>
12
13using olGetDeviceInfoTest = OffloadDeviceTest;
14OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetDeviceInfoTest);
15
16TEST_P(olGetDeviceInfoTest, SuccessType) {
17 ol_device_type_t DeviceType;
18 ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE,
19 sizeof(ol_device_type_t), &DeviceType));
20}
21
22TEST_P(olGetDeviceInfoTest, HostSuccessType) {
23 ol_device_type_t DeviceType;
24 ASSERT_SUCCESS(olGetDeviceInfo(Host, OL_DEVICE_INFO_TYPE,
25 sizeof(ol_device_type_t), &DeviceType));
26 ASSERT_EQ(DeviceType, OL_DEVICE_TYPE_HOST);
27}
28
29TEST_P(olGetDeviceInfoTest, SuccessPlatform) {
30 ol_platform_handle_t Platform = nullptr;
31 ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_PLATFORM,
32 sizeof(ol_platform_handle_t), &Platform));
33 ASSERT_NE(Platform, nullptr);
34}
35
36TEST_P(olGetDeviceInfoTest, SuccessName) {
37 size_t Size = 0;
38 ASSERT_SUCCESS(olGetDeviceInfoSize(Device, OL_DEVICE_INFO_NAME, &Size));
39 ASSERT_GT(Size, 0ul);
40 std::vector<char> Name;
41 Name.resize(new_size: Size);
42 ASSERT_SUCCESS(
43 olGetDeviceInfo(Device, OL_DEVICE_INFO_NAME, Size, Name.data()));
44 ASSERT_EQ(std::strlen(s: Name.data()), Size - 1);
45}
46
47TEST_P(olGetDeviceInfoTest, HostName) {
48 size_t Size = 0;
49 ASSERT_SUCCESS(olGetDeviceInfoSize(Host, OL_DEVICE_INFO_NAME, &Size));
50 ASSERT_GT(Size, 0ul);
51 std::vector<char> Name;
52 Name.resize(new_size: Size);
53 ASSERT_SUCCESS(olGetDeviceInfo(Host, OL_DEVICE_INFO_NAME, Size, Name.data()));
54 ASSERT_EQ(std::strlen(s: Name.data()), Size - 1);
55}
56
57TEST_P(olGetDeviceInfoTest, SuccessVendor) {
58 size_t Size = 0;
59 ASSERT_SUCCESS(olGetDeviceInfoSize(Device, OL_DEVICE_INFO_VENDOR, &Size));
60 ASSERT_GT(Size, 0ul);
61 std::vector<char> Vendor;
62 Vendor.resize(new_size: Size);
63 ASSERT_SUCCESS(
64 olGetDeviceInfo(Device, OL_DEVICE_INFO_VENDOR, Size, Vendor.data()));
65 ASSERT_EQ(std::strlen(s: Vendor.data()), Size - 1);
66}
67
68TEST_P(olGetDeviceInfoTest, SuccessDriverVersion) {
69 size_t Size = 0;
70 ASSERT_SUCCESS(
71 olGetDeviceInfoSize(Device, OL_DEVICE_INFO_DRIVER_VERSION, &Size));
72 ASSERT_GT(Size, 0ul);
73 std::vector<char> DriverVersion;
74 DriverVersion.resize(new_size: Size);
75 ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_DRIVER_VERSION, Size,
76 DriverVersion.data()));
77 ASSERT_EQ(std::strlen(s: DriverVersion.data()), Size - 1);
78}
79
80TEST_P(olGetDeviceInfoTest, InvalidNullHandleDevice) {
81 ol_device_type_t DeviceType;
82 ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE,
83 olGetDeviceInfo(nullptr, OL_DEVICE_INFO_TYPE,
84 sizeof(ol_device_type_t), &DeviceType));
85}
86
87TEST_P(olGetDeviceInfoTest, InvalidEnumerationInfoType) {
88 ol_device_type_t DeviceType;
89 ASSERT_ERROR(OL_ERRC_INVALID_ENUMERATION,
90 olGetDeviceInfo(Device, OL_DEVICE_INFO_FORCE_UINT32,
91 sizeof(ol_device_type_t), &DeviceType));
92}
93
94TEST_P(olGetDeviceInfoTest, InvalidSizePropSize) {
95 ol_device_type_t DeviceType;
96 ASSERT_ERROR(OL_ERRC_INVALID_SIZE,
97 olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE, 0, &DeviceType));
98}
99
100TEST_P(olGetDeviceInfoTest, InvalidSizePropSizeSmall) {
101 ol_device_type_t DeviceType;
102 ASSERT_ERROR(OL_ERRC_INVALID_SIZE,
103 olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE,
104 sizeof(DeviceType) - 1, &DeviceType));
105}
106
107TEST_P(olGetDeviceInfoTest, InvalidNullPointerPropValue) {
108 ol_device_type_t DeviceType;
109 ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,
110 olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE, sizeof(DeviceType),
111 nullptr));
112}
113

source code of offload/unittests/OffloadAPI/device/olGetDeviceInfo.cpp