diff options
Diffstat (limited to 'offload/unittests/OffloadAPI')
4 files changed, 53 insertions, 0 deletions
diff --git a/offload/unittests/OffloadAPI/common/Fixtures.hpp b/offload/unittests/OffloadAPI/common/Fixtures.hpp index 24ce1a0..43240fa 100644 --- a/offload/unittests/OffloadAPI/common/Fixtures.hpp +++ b/offload/unittests/OffloadAPI/common/Fixtures.hpp @@ -9,6 +9,7 @@ #include <OffloadAPI.h> #include <OffloadPrint.hpp> #include <gtest/gtest.h> +#include <thread> #include "Environment.hpp" @@ -57,6 +58,23 @@ inline std::string SanitizeString(const std::string &Str) { return NewStr; } +template <typename Fn> inline void threadify(Fn body) { + std::vector<std::thread> Threads; + for (size_t I = 0; I < 20; I++) { + Threads.emplace_back( + [&body](size_t I) { + std::string ScopeMsg{"Thread #"}; + ScopeMsg.append(std::to_string(I)); + SCOPED_TRACE(ScopeMsg); + body(I); + }, + I); + } + for (auto &T : Threads) { + T.join(); + } +} + struct OffloadTest : ::testing::Test { ol_device_handle_t Host = TestEnvironment::getHostDevice(); }; diff --git a/offload/unittests/OffloadAPI/kernel/olLaunchKernel.cpp b/offload/unittests/OffloadAPI/kernel/olLaunchKernel.cpp index 758f607..1dac8c5 100644 --- a/offload/unittests/OffloadAPI/kernel/olLaunchKernel.cpp +++ b/offload/unittests/OffloadAPI/kernel/olLaunchKernel.cpp @@ -104,6 +104,29 @@ TEST_P(olLaunchKernelFooTest, Success) { ASSERT_SUCCESS(olMemFree(Mem)); } +TEST_P(olLaunchKernelFooTest, SuccessThreaded) { + threadify([&](size_t) { + void *Mem; + ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_MANAGED, + LaunchArgs.GroupSize.x * sizeof(uint32_t), &Mem)); + struct { + void *Mem; + } Args{Mem}; + + ASSERT_SUCCESS(olLaunchKernel(Queue, Device, Kernel, &Args, sizeof(Args), + &LaunchArgs)); + + ASSERT_SUCCESS(olSyncQueue(Queue)); + + uint32_t *Data = (uint32_t *)Mem; + for (uint32_t i = 0; i < 64; i++) { + ASSERT_EQ(Data[i], i); + } + + ASSERT_SUCCESS(olMemFree(Mem)); + }); +} + TEST_P(olLaunchKernelNoArgsTest, Success) { ASSERT_SUCCESS( olLaunchKernel(Queue, Device, Kernel, nullptr, 0, &LaunchArgs)); diff --git a/offload/unittests/OffloadAPI/queue/olGetQueueInfo.cpp b/offload/unittests/OffloadAPI/queue/olGetQueueInfo.cpp index f4fb752..2dccd33 100644 --- a/offload/unittests/OffloadAPI/queue/olGetQueueInfo.cpp +++ b/offload/unittests/OffloadAPI/queue/olGetQueueInfo.cpp @@ -20,6 +20,12 @@ TEST_P(olGetQueueInfoTest, SuccessDevice) { ASSERT_EQ(Device, RetrievedDevice); } +TEST_P(olGetQueueInfoTest, SuccessEmpty) { + bool Empty; + ASSERT_SUCCESS( + olGetQueueInfo(Queue, OL_QUEUE_INFO_EMPTY, sizeof(Empty), &Empty)); +} + TEST_P(olGetQueueInfoTest, InvalidNullHandle) { ol_device_handle_t RetrievedDevice; ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE, diff --git a/offload/unittests/OffloadAPI/queue/olGetQueueInfoSize.cpp b/offload/unittests/OffloadAPI/queue/olGetQueueInfoSize.cpp index f1ad9fa..735dad6 100644 --- a/offload/unittests/OffloadAPI/queue/olGetQueueInfoSize.cpp +++ b/offload/unittests/OffloadAPI/queue/olGetQueueInfoSize.cpp @@ -19,6 +19,12 @@ TEST_P(olGetQueueInfoSizeTest, SuccessDevice) { ASSERT_EQ(Size, sizeof(ol_device_handle_t)); } +TEST_P(olGetQueueInfoSizeTest, SuccessEmpty) { + size_t Size = 0; + ASSERT_SUCCESS(olGetQueueInfoSize(Queue, OL_QUEUE_INFO_EMPTY, &Size)); + ASSERT_EQ(Size, sizeof(bool)); +} + TEST_P(olGetQueueInfoSizeTest, InvalidNullHandle) { size_t Size = 0; ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE, |