From 17feaa555d42db8bb2a50df3b9579bc5e5c76ff4 Mon Sep 17 00:00:00 2001 From: nives-vukovic <110852104+nives-vukovic@users.noreply.github.com> Date: Mon, 10 Oct 2022 09:48:49 +0200 Subject: [PATCH] EXSWHTEC-40 - Implement additional Stream Management negative tests (#2922) - Implement negative test for hipStreamValue when stream is uninitialized - Implement negative test for hipStreamSynchronize when stream is uninitialized - Invalid flag negative test for hipStreamWriteValue API removed as flag parameter is not used --- catch/unit/stream/hipStreamSynchronize.cc | 13 ++++++++ catch/unit/stream/hipStreamValue.cc | 36 +++++++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/catch/unit/stream/hipStreamSynchronize.cc b/catch/unit/stream/hipStreamSynchronize.cc index 0555620b1f..a31546a52a 100644 --- a/catch/unit/stream/hipStreamSynchronize.cc +++ b/catch/unit/stream/hipStreamSynchronize.cc @@ -33,6 +33,19 @@ TEST_CASE("Unit_hipStreamSynchronize_EmptyStream") { HIP_CHECK(hipStreamDestroy(stream)); } +#if !HT_NVIDIA +/** + * @brief Check that synchronization of uninitialized stream sets its status to + * hipErrorContextIsDestroyed + * + * Test removed for Nvidia devices because it returns unexpected error + */ +TEST_CASE("Unit_hipStreamSynchronize_UninitializedStream") { + hipStream_t stream{reinterpret_cast(0xFFFF)}; + HIP_CHECK_ERROR(hipStreamSynchronize(stream), hipErrorContextIsDestroyed); +} +#endif + #if HT_AMD /* Disabled because frequency based wait is timing out on nvidia platforms */ /** diff --git a/catch/unit/stream/hipStreamValue.cc b/catch/unit/stream/hipStreamValue.cc index 164384acee..7a55360eff 100644 --- a/catch/unit/stream/hipStreamValue.cc +++ b/catch/unit/stream/hipStreamValue.cc @@ -499,7 +499,40 @@ TEST_CASE("Unit_hipStreamValue_Negative_InvalidMemory") { HIP_CHECK(hipStreamDestroy(stream)); } -TEMPLATE_TEST_CASE("Unit_hipStreamWaitValue_Negative_InvalidFlag", "", uint32_t, uint64_t) { +TEMPLATE_TEST_CASE("Unit_hipStreamValue_Negative_UninitializedStream", "", uint32_t, uint64_t) { + if (!streamWaitValueSupported()) { + HipTest::HIP_SKIP_TEST("hipStreamWaitValue not supported on this device."); + return; + } + + hipStream_t stream{reinterpret_cast(0xFFFF)}; + + // Allocate Host Memory + auto hostPtr = std::make_unique(); + + // Register Host Memory + HIP_CHECK(hipHostRegister(hostPtr.get(), sizeof(TestType), 0)); + + // Set dummy data + *hostPtr = 0x0; + + const auto compareOp = hipStreamWaitValueGte; + const auto expectedError = hipErrorContextIsDestroyed; + + // Stream handle negative tests + SECTION("Invalid Stream handle for hipStreamWriteValue") { + HIP_CHECK_ERROR(writeFunc(stream, hostPtr.get(), 0, writeFlag), expectedError); + } + + SECTION("Invalid Stream handle for hipStreamWaitValue") { + HIP_CHECK_ERROR(waitFunc(stream, hostPtr.get(), 0, compareOp), expectedError); + } + + // Cleanup + HIP_CHECK(hipHostUnregister(hostPtr.get())); +} + +TEMPLATE_TEST_CASE("Unit_hipStreamValue_Negative_InvalidFlag", "", uint32_t, uint64_t) { if (!streamWaitValueSupported()) { HipTest::HIP_SKIP_TEST("hipStreamWaitValue not supported on this device."); return; @@ -518,7 +551,6 @@ TEMPLATE_TEST_CASE("Unit_hipStreamWaitValue_Negative_InvalidFlag", "", uint32_t, // Set dummy data *hostPtr = 0x0; - /* EXSWCPHIPT-96 */ HIP_CHECK_ERROR(waitFunc(stream, hostPtr.get(), 0, -1), hipErrorInvalidValue); // Cleanup