brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · a4b382f Raw
131 lines · cpp
1//===------- Offload API tests - olGetMemInfo -----------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9#include "../common/Fixtures.hpp"10#include <OffloadAPI.h>11#include <gtest/gtest.h>12 13constexpr size_t SIZE = 1024;14 15struct olGetMemInfoBaseTest : OffloadDeviceTest {16  void *OffsetPtr() { return &reinterpret_cast<char *>(Ptr)[123]; }17 18  void *Ptr;19};20 21template <ol_alloc_type_t AllocType>22struct olGetMemInfoTest : olGetMemInfoBaseTest {23  void SetUp() override {24    RETURN_ON_FATAL_FAILURE(OffloadDeviceTest::SetUp());25    ASSERT_SUCCESS(olMemAlloc(Device, AllocType, SIZE, &Ptr));26  }27 28  void TearDown() override {29    ASSERT_SUCCESS(olMemFree(Ptr));30    RETURN_ON_FATAL_FAILURE(OffloadDeviceTest::TearDown());31  }32};33using olGetMemInfoDeviceTest = olGetMemInfoTest<OL_ALLOC_TYPE_DEVICE>;34OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetMemInfoDeviceTest);35using olGetMemInfoManagedTest = olGetMemInfoTest<OL_ALLOC_TYPE_MANAGED>;36OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetMemInfoManagedTest);37using olGetMemInfoHostTest = olGetMemInfoTest<OL_ALLOC_TYPE_HOST>;38OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetMemInfoHostTest);39 40#define PER_ALLOC_TEST(FUNCTION)                                               \41  TEST_P(olGetMemInfoDeviceTest, FUNCTION) {                                   \42    FUNCTION(this, Ptr, OL_ALLOC_TYPE_DEVICE);                                 \43  }                                                                            \44  TEST_P(olGetMemInfoManagedTest, FUNCTION) {                                  \45    FUNCTION(this, Ptr, OL_ALLOC_TYPE_MANAGED);                                \46  }                                                                            \47  TEST_P(olGetMemInfoHostTest, FUNCTION) {                                     \48    FUNCTION(this, OffsetPtr(), OL_ALLOC_TYPE_HOST);                           \49  }                                                                            \50  TEST_P(olGetMemInfoDeviceTest, FUNCTION##Offset) {                           \51    FUNCTION(this, Ptr, OL_ALLOC_TYPE_DEVICE);                                 \52  }                                                                            \53  TEST_P(olGetMemInfoManagedTest, FUNCTION##Offset) {                          \54    FUNCTION(this, OffsetPtr(), OL_ALLOC_TYPE_MANAGED);                        \55  }                                                                            \56  TEST_P(olGetMemInfoHostTest, FUNCTION##Offset) {                             \57    FUNCTION(this, OffsetPtr(), OL_ALLOC_TYPE_HOST);                           \58  }59 60void SuccessDevice(olGetMemInfoBaseTest *Fixture, void *Ptr,61                   ol_alloc_type_t Type) {62  ol_device_handle_t RetrievedDevice;63  ASSERT_SUCCESS(olGetMemInfo(Fixture->Ptr, OL_MEM_INFO_DEVICE,64                              sizeof(RetrievedDevice), &RetrievedDevice));65  ASSERT_EQ(RetrievedDevice, Fixture->Device);66}67PER_ALLOC_TEST(SuccessDevice);68 69void SuccessBase(olGetMemInfoBaseTest *Fixture, void *Ptr,70                 ol_alloc_type_t Type) {71  void *RetrievedBase;72  ASSERT_SUCCESS(olGetMemInfo(Fixture->Ptr, OL_MEM_INFO_BASE,73                              sizeof(RetrievedBase), &RetrievedBase));74  ASSERT_EQ(RetrievedBase, Fixture->Ptr);75}76PER_ALLOC_TEST(SuccessBase);77 78void SuccessSize(olGetMemInfoBaseTest *Fixture, void *Ptr,79                 ol_alloc_type_t Type) {80  size_t RetrievedSize;81  ASSERT_SUCCESS(olGetMemInfo(Fixture->Ptr, OL_MEM_INFO_SIZE,82                              sizeof(RetrievedSize), &RetrievedSize));83  ASSERT_EQ(RetrievedSize, SIZE);84}85PER_ALLOC_TEST(SuccessSize);86 87void SuccessType(olGetMemInfoBaseTest *Fixture, void *Ptr,88                 ol_alloc_type_t Type) {89  ol_alloc_type_t RetrievedType;90  ASSERT_SUCCESS(olGetMemInfo(Fixture->Ptr, OL_MEM_INFO_TYPE,91                              sizeof(RetrievedType), &RetrievedType));92  ASSERT_EQ(RetrievedType, Type);93}94PER_ALLOC_TEST(SuccessType);95 96TEST_P(olGetMemInfoDeviceTest, InvalidNotFound) {97  // Assuming that we aren't unlucky and happen to get 0x1234 as a random98  // pointer99  void *RetrievedBase;100  ASSERT_ERROR(OL_ERRC_NOT_FOUND,101               olGetMemInfo(reinterpret_cast<void *>(0x1234), OL_MEM_INFO_BASE,102                            sizeof(RetrievedBase), &RetrievedBase));103}104 105TEST_P(olGetMemInfoDeviceTest, InvalidNullPtr) {106  ol_device_handle_t RetrievedDevice;107  ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,108               olGetMemInfo(nullptr, OL_MEM_INFO_DEVICE,109                            sizeof(RetrievedDevice), &RetrievedDevice));110}111 112TEST_P(olGetMemInfoDeviceTest, InvalidSizeZero) {113  ol_device_handle_t RetrievedDevice;114  ASSERT_ERROR(OL_ERRC_INVALID_SIZE,115               olGetMemInfo(Ptr, OL_MEM_INFO_DEVICE, 0, &RetrievedDevice));116}117 118TEST_P(olGetMemInfoDeviceTest, InvalidSizeSmall) {119  ol_device_handle_t RetrievedDevice;120  ASSERT_ERROR(OL_ERRC_INVALID_SIZE,121               olGetMemInfo(Ptr, OL_MEM_INFO_DEVICE,122                            sizeof(RetrievedDevice) - 1, &RetrievedDevice));123}124 125TEST_P(olGetMemInfoDeviceTest, InvalidNullPointerPropValue) {126  ol_device_handle_t RetrievedDevice;127  ASSERT_ERROR(128      OL_ERRC_INVALID_NULL_POINTER,129      olGetMemInfo(Ptr, OL_MEM_INFO_DEVICE, sizeof(RetrievedDevice), nullptr));130}131