From 2ce3f4fa409df86d9394ad9c203abb9cea02122a Mon Sep 17 00:00:00 2001 From: "Kindracki, Jakub Tomasz" Date: Fri, 9 May 2025 10:59:43 +0000 Subject: [PATCH] test: Remove resetCommandStreamReceiver from tests Changed the implementation to use EnvironmentWithCsrWrapper with setUpT instead of resetCommandStreamReceiver. Changed related tests to templated tests. Related-To: NEO-3927 Signed-off-by: Kindracki, Jakub Tomasz --- .../command_queue_hw_2_tests.cpp | 23 ++- .../command_queue/enqueue_handler_tests.cpp | 60 +++----- .../command_queue/enqueue_kernel_1_tests.cpp | 137 +++++++++--------- .../command_queue/enqueue_kernel_2_tests.cpp | 26 +++- .../command_queue/enqueue_kernel_mt_tests.cpp | 24 ++- .../command_queue/ooq_task_tests.cpp | 40 +++-- .../command_stream_receiver_hw_tests.inl | 11 +- opencl/test/unit_test/event/event_fixture.h | 23 ++- opencl/test/unit_test/event/event_tests.cpp | 18 +-- .../fixtures/enqueue_handler_fixture.h | 21 ++- .../mem_obj/mem_obj_destruction_tests.cpp | 82 +++++++---- shared/test/common/mocks/mock_aub_csr.h | 5 + shared/test/common/mocks/mock_csr.h | 18 ++- 13 files changed, 312 insertions(+), 176 deletions(-) diff --git a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp index 2a589d355b..92221b6aae 100644 --- a/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_hw_2_tests.cpp @@ -349,12 +349,27 @@ HWTEST_F(BuiltinParamsCommandQueueHwTests, givenEnqueueReadWriteBufferRectCallWh EXPECT_EQ(ptrOffset, builtinParams.srcOffset.x); } -HWTEST_F(OOQueueHwTest, givenBlockedOutOfOrderCmdQueueAndAsynchronouslyCompletedEventWhenEnqueueCompletesVirtualEventThenUpdatedTaskLevelIsPassedToEnqueueAndFlushTask) { +struct OOQueueHwTestWithMockCsr : public OOQueueHwTest { + void SetUp() override {} + void TearDown() override {} + + template + void setUpT() { + EnvironmentWithCsrWrapper environment; + environment.setCsrType>(); + OOQueueHwTest::SetUp(); + } + + template + void tearDownT() { + OOQueueHwTest::TearDown(); + } +}; + +HWTEST_TEMPLATED_F(OOQueueHwTestWithMockCsr, givenBlockedOutOfOrderCmdQueueAndAsynchronouslyCompletedEventWhenEnqueueCompletesVirtualEventThenUpdatedTaskLevelIsPassedToEnqueueAndFlushTask) { CommandQueueHw *cmdQHw = static_cast *>(this->pCmdQ); - int32_t executionStamp = 0; - auto mockCSR = new MockCsr(executionStamp, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(mockCSR); + auto mockCSR = static_cast *>(&pDevice->getUltCommandStreamReceiver()); MockKernelWithInternals mockKernelWithInternals(*pClDevice); auto mockKernel = mockKernelWithInternals.mockKernel; diff --git a/opencl/test/unit_test/command_queue/enqueue_handler_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_handler_tests.cpp index d2eb68a434..63b65a469c 100644 --- a/opencl/test/unit_test/command_queue/enqueue_handler_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_handler_tests.cpp @@ -41,10 +41,12 @@ using namespace NEO; #include "shared/test/common/test_macros/header/heapful_test_definitions.h" #include "shared/test/common/test_macros/header/heapless_matchers.h" -HWTEST_F(EnqueueHandlerTest, WhenEnqueingHandlerWithKernelThenProcessEvictionOnCsrIsCalled) { - int32_t tag; - auto csr = new MockCsrBase(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(csr); +typedef EnqueueHandlerTestT EnqueueHandlerTestWithMockCsrBase; +typedef EnqueueHandlerTestT EnqueueHandlerTestWithMockCsrAub; +typedef EnqueueHandlerTestT EnqueueHandlerTestWithMockCsrHw2; + +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrBase, WhenEnqueingHandlerWithKernelThenProcessEvictionOnCsrIsCalled) { + auto *csr = static_cast *>(&pDevice->getUltCommandStreamReceiver()); MockKernelWithInternals mockKernel(*pClDevice); auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); @@ -55,10 +57,8 @@ HWTEST_F(EnqueueHandlerTest, WhenEnqueingHandlerWithKernelThenProcessEvictionOnC EXPECT_TRUE(csr->processEvictionCalled); } -HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWithKernelWhenAubCsrIsActiveThenAddCommentWithKernelName) { - int32_t tag; - auto aubCsr = new MockCsrAub(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(aubCsr); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrAub, givenEnqueueHandlerWithKernelWhenAubCsrIsActiveThenAddCommentWithKernelName) { + auto *aubCsr = static_cast *>(&pDevice->getUltCommandStreamReceiver()); MockKernelWithInternals mockKernel(*pClDevice); auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); @@ -73,10 +73,8 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWithKernelWhenAubCsrIsActiveThen EXPECT_STREQ("kernel_name", aubCsr->aubCommentMessages[0].c_str()); } -HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWithKernelSplitWhenAubCsrIsActiveThenAddCommentWithKernelName) { - int32_t tag; - auto aubCsr = new MockCsrAub(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(aubCsr); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrAub, givenEnqueueHandlerWithKernelSplitWhenAubCsrIsActiveThenAddCommentWithKernelName) { + auto *aubCsr = static_cast *>(&pDevice->getUltCommandStreamReceiver()); MockKernelWithInternals kernel1(*pClDevice); MockKernelWithInternals kernel2(*pClDevice); @@ -95,10 +93,8 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWithKernelSplitWhenAubCsrIsActiv EXPECT_STREQ("kernel_2", aubCsr->aubCommentMessages[1].c_str()); } -HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWithEmptyDispatchInfoWhenAubCsrIsActiveThenDontAddCommentWithKernelName) { - int32_t tag; - auto aubCsr = new MockCsrAub(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(aubCsr); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrAub, givenEnqueueHandlerWithEmptyDispatchInfoWhenAubCsrIsActiveThenDontAddCommentWithKernelName) { + auto *aubCsr = static_cast *>(&pDevice->getUltCommandStreamReceiver()); MockKernelWithInternals mockKernel(*pClDevice); auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); @@ -283,10 +279,7 @@ class MyCommandQueueHw : public CommandQueueHw { } }; -HWTEST_F(EnqueueHandlerTest, givenLocalWorkgroupSizeGreaterThenGlobalWorkgroupSizeWhenEnqueueKernelThenLwsIsClamped) { - int32_t tag; - auto csr = new MockCsrBase(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(csr); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrBase, givenLocalWorkgroupSizeGreaterThenGlobalWorkgroupSizeWhenEnqueueKernelThenLwsIsClamped) { MockKernelWithInternals mockKernel(*pClDevice); auto mockProgram = mockKernel.mockProgram; mockProgram->setAllowNonUniform(true); @@ -317,10 +310,7 @@ HWTEST_F(EnqueueHandlerTest, givenLocalWorkgroupSizeGreaterThenGlobalWorkgroupSi EXPECT_EQ(myCmdQ.lws.z, gws3d[2]); } -HWTEST_F(EnqueueHandlerTest, givenLocalWorkgroupSizeGreaterThenGlobalWorkgroupSizeAndNonUniformWorkGroupWhenEnqueueKernelThenClIvalidWorkGroupSizeIsReturned) { - int32_t tag; - auto csr = new MockCsrBase(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(csr); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrBase, givenLocalWorkgroupSizeGreaterThenGlobalWorkgroupSizeAndNonUniformWorkGroupWhenEnqueueKernelThenClIvalidWorkGroupSizeIsReturned) { MockKernelWithInternals mockKernel(*pClDevice); auto mockProgram = mockKernel.mockProgram; mockProgram->setAllowNonUniform(false); @@ -350,11 +340,7 @@ HWTEST_F(EnqueueHandlerTest, WhenEnqueuingHandlerCallOnEnqueueMarkerThenCallProc EXPECT_EQ(0u, csr->madeNonResidentGfxAllocations.size()); } -HWTEST_F(EnqueueHandlerTest, WhenEnqueuingHandlerForMarkerOnUnblockedQueueThenTaskLevelIsNotIncremented) { - int32_t tag; - auto csr = new MockCsrBase(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(csr); - +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrBase, WhenEnqueuingHandlerForMarkerOnUnblockedQueueThenTaskLevelIsNotIncremented) { auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); // put queue into initial unblocked state @@ -368,11 +354,7 @@ HWTEST_F(EnqueueHandlerTest, WhenEnqueuingHandlerForMarkerOnUnblockedQueueThenTa EXPECT_EQ(0u, mockCmdQ->taskLevel); } -HWTEST_F(EnqueueHandlerTest, WhenEnqueuingHandlerForMarkerOnBlockedQueueThenTaskLevelIsNotIncremented) { - int32_t tag; - auto csr = new MockCsrBase(tag, *pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); - pDevice->resetCommandStreamReceiver(csr); - +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrBase, WhenEnqueuingHandlerForMarkerOnBlockedQueueThenTaskLevelIsNotIncremented) { auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); // put queue into initial blocked state @@ -477,11 +459,10 @@ HWTEST_F(EnqueueHandlerTest, WhenEnqueuingWithOutputEventThenEventIsRegistered) mockCmdQ->release(); } -HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDumpIsNotSetThenPatchInfoDataIsNotTransferredToCSR) { - auto csr = new MockCsrHw2(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); +HWTEST_TEMPLATED_F(EnqueueHandlerTestWithMockCsrHw2, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDumpIsNotSetThenPatchInfoDataIsNotTransferredToCSR) { + auto *csr = static_cast *>(&pDevice->getGpgpuCommandStreamReceiver()); auto mockHelper = new MockFlatBatchBufferHelper(*pDevice->executionEnvironment); csr->overwriteFlatBatchBufferHelper(mockHelper); - pDevice->resetCommandStreamReceiver(csr); MockKernelWithInternals mockKernel(*pClDevice); auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); @@ -495,15 +476,14 @@ HWTEST_F(EnqueueHandlerTest, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDu EXPECT_EQ(0u, mockHelper->setPatchInfoDataCalled); } -HWTEST2_F(EnqueueHandlerTest, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDumpIsSetThenPatchInfoDataIsTransferredToCSR, MatchAny) { +HWTEST2_TEMPLATED_F(EnqueueHandlerTestWithMockCsrHw2, givenEnqueueHandlerWhenAddPatchInfoCommentsForAUBDumpIsSetThenPatchInfoDataIsTransferredToCSR, MatchAny) { DebugManagerStateRestore dbgRestore; debugManager.flags.AddPatchInfoCommentsForAUBDump.set(true); debugManager.flags.FlattenBatchBufferForAUBDump.set(true); - auto csr = new MockCsrHw2(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield()); + auto *csr = static_cast *>(&pDevice->getGpgpuCommandStreamReceiver()); auto mockHelper = new MockFlatBatchBufferHelper(*pDevice->executionEnvironment); csr->overwriteFlatBatchBufferHelper(mockHelper); - pDevice->resetCommandStreamReceiver(csr); MockKernelWithInternals mockKernel(*pClDevice); auto mockCmdQ = std::unique_ptr>(new MockCommandQueueHw(context, pClDevice, 0)); diff --git a/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp b/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp index 89d7d713f9..bc45d23777 100644 --- a/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp +++ b/opencl/test/unit_test/command_queue/enqueue_kernel_1_tests.cpp @@ -33,6 +33,28 @@ using namespace NEO; typedef HelloWorldFixture EnqueueKernelFixture; typedef Test EnqueueKernelTest; +template