Move files from shared/test/unit_test to shared/test/common

unit_test/helpers/debug_helpers.cpp -> common/helpers
unit_test/page_fault_manager/default_asan_options.cpp -> common/page_fault_manag
unit_test/utilities/cpuintrinsics.cpp -> common/utilities
unit_test/memory_manager/deferred_deleter_mt_tests.cpp -> opencl/test/unit_test/
delete: unit_test/mocks/debugger_l0_create.cpp
delete: unit_test/page_fault_manager/default_asan_options.cpp

Related-To: NEO-6524
Signed-off-by: Warchulski, Jaroslaw <jaroslaw.warchulski@intel.com>
This commit is contained in:
Warchulski, Jaroslaw
2022-08-25 17:17:06 +00:00
committed by Compute-Runtime-Automation
parent 3f5c3a8cdf
commit 7e7f8b5bc2
16 changed files with 55 additions and 79 deletions

View File

@ -49,9 +49,6 @@ target_include_directories(igdrcl_aub_tests PRIVATE
${NEO_SOURCE_DIR}/shared/test/common/helpers/includes${BRANCH_DIR_SUFFIX}
)
target_sources(igdrcl_aub_tests PRIVATE
${NEO_SHARED_TEST_DIRECTORY}/unit_test/page_fault_manager/default_asan_options.cpp
)
copy_gmm_dll_for(igdrcl_aub_tests)
add_subdirectories()

View File

@ -15,18 +15,5 @@ set(IGDRCL_SRCS_tests_memory_manager
${CMAKE_CURRENT_SOURCE_DIR}/unified_memory_token_tests.cpp
)
get_property(NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS GLOBAL PROPERTY NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS)
list(APPEND IGDRCL_SRCS_tests_memory_manager ${NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS})
if(WIN32)
get_property(NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS GLOBAL PROPERTY NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS)
list(APPEND IGDRCL_SRCS_tests_memory_manager ${NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS})
endif()
if(UNIX)
get_property(NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS GLOBAL PROPERTY NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS)
list(APPEND IGDRCL_SRCS_tests_memory_manager ${NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS})
endif()
target_sources(igdrcl_tests PRIVATE ${IGDRCL_SRCS_tests_memory_manager})
add_subdirectories()

View File

@ -1,15 +1,12 @@
#
# Copyright (C) 2018-2021 Intel Corporation
# Copyright (C) 2018-2022 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
set(IGDRCL_SRCS_mt_tests_memory_manager
# local files
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${CMAKE_CURRENT_SOURCE_DIR}/deferred_deleter_clear_queue_mt_tests.cpp
# necessary dependencies from neo_shared_tests
${NEO_SHARED_TEST_DIRECTORY}/unit_test/memory_manager/deferred_deleter_mt_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/deferred_deleter_mt_tests.cpp
)
target_sources(igdrcl_mt_tests PRIVATE ${IGDRCL_SRCS_mt_tests_memory_manager})

View File

@ -0,0 +1,226 @@
/*
* Copyright (C) 2018-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/memory_manager/os_agnostic_memory_manager.h"
#include "shared/test/common/mocks/mock_deferrable_deletion.h"
#include "shared/test/common/mocks/mock_deferred_deleter.h"
#include "gtest/gtest.h"
using namespace NEO;
struct DeferredDeleterTest : public ::testing::Test {
void SetUp() override {
deleter.reset(new MockDeferredDeleter());
}
void TearDown() override {
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_EQ(0, deleter->getElementsToRelease());
}
void waitForAsyncThread() {
while (!deleter->isWorking()) {
std::this_thread::yield();
}
}
MockDeferrableDeletion *createDeletion() {
return new MockDeferrableDeletion();
}
std::unique_ptr<MockDeferredDeleter> deleter;
};
TEST_F(DeferredDeleterTest, WhenDeferredDeleterIsCreatedThenInitialValuesAreSetCorrectly) {
EXPECT_EQ(0, deleter->getClientsNum());
EXPECT_FALSE(deleter->isWorking());
EXPECT_FALSE(deleter->isThreadRunning());
EXPECT_EQ(0, deleter->drainCalled);
EXPECT_EQ(0, deleter->clearCalled);
EXPECT_EQ(0, deleter->areElementsReleasedCalled);
EXPECT_EQ(0, deleter->shouldStopCalled);
EXPECT_EQ(0, deleter->getElementsToRelease());
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_FALSE(deleter->expectDrainCalled);
EXPECT_FALSE(deleter->expectedDrainValue);
}
TEST_F(DeferredDeleterTest, WhenDrainingThenQueueIsUpdated) {
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_FALSE(deleter->isQueueEmpty());
deleter->drain();
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_EQ(1, deleter->drainCalled);
EXPECT_EQ(1, deleter->clearCalled);
}
TEST_F(DeferredDeleterTest, GivenTwoClientsWhenProcessingDeletionsThenOperationsAreHandledCorrectly) {
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
EXPECT_EQ(1, deleter->getClientsNum());
auto threadHandle = deleter->getThreadHandle();
EXPECT_NE(nullptr, threadHandle);
deleter->DeferredDeleter::addClient();
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
EXPECT_EQ(2, deleter->getClientsNum());
EXPECT_EQ(threadHandle, deleter->getThreadHandle());
deleter->forceStop();
EXPECT_FALSE(deleter->isWorking());
EXPECT_FALSE(deleter->isThreadRunning());
}
TEST_F(DeferredDeleterTest, WhenAddingAndRemovingClientsThenOperationsAreHandledCorrectly) {
deleter->DeferredDeleter::addClient();
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
EXPECT_EQ(2, deleter->getClientsNum());
deleter->DeferredDeleter::removeClient();
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
EXPECT_EQ(1, deleter->getClientsNum());
deleter->allowEarlyStopThread();
deleter->DeferredDeleter::removeClient();
EXPECT_FALSE(deleter->isThreadRunning());
EXPECT_FALSE(deleter->isWorking());
EXPECT_EQ(0, deleter->getClientsNum());
deleter->forceStop();
EXPECT_FALSE(deleter->isThreadRunning());
}
TEST_F(DeferredDeleterTest, GivenNotWorkingWhenDrainingThenOperationIsCompleted) {
EXPECT_FALSE(deleter->isWorking());
deleter->drain();
EXPECT_EQ(1, deleter->drainCalled);
EXPECT_EQ(1, deleter->clearCalled);
EXPECT_EQ(2, deleter->areElementsReleasedCalled);
}
TEST_F(DeferredDeleterTest, GivenWorkingWhenDrainingThenOperationIsCompleted) {
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
EXPECT_TRUE(deleter->isWorking());
deleter->drain();
EXPECT_EQ(1, deleter->drainCalled);
EXPECT_EQ(2, deleter->areElementsReleasedCalled);
deleter->forceStop();
}
TEST_F(DeferredDeleterTest, GivenThreadNotRunningWhenStoppingThenQueueIsEmptied) {
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_FALSE(deleter->isQueueEmpty());
EXPECT_FALSE(deleter->isThreadRunning());
deleter->expectDrainBlockingValue(false);
deleter->forceStop();
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_NE(0, deleter->drainCalled);
}
TEST_F(DeferredDeleterTest, GivenThreadRunningWhenStoppingThenQueueIsEmptied) {
deleter->DeferredDeleter::addClient();
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_TRUE(deleter->isThreadRunning());
deleter->allowEarlyStopThread();
deleter->expectDrainBlockingValue(false);
deleter->DeferredDeleter::removeClient();
EXPECT_FALSE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_NE(0, deleter->drainCalled);
}
TEST_F(DeferredDeleterTest, GivenAsyncThreadWaitsForQueueItemWhenDeletingThenQueueIsEmptied) {
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
deleter->allowEarlyStopThread();
deleter->DeferredDeleter::removeClient();
EXPECT_TRUE(deleter->isQueueEmpty());
}
TEST_F(DeferredDeleterTest, GivenAsyncThreadClearQueueWithoutWaitingForQueueItemWhenDeletingThenQueueIsEmptied) {
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_FALSE(deleter->isQueueEmpty());
EXPECT_FALSE(deleter->isThreadRunning());
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
EXPECT_TRUE(deleter->isThreadRunning());
deleter->allowEarlyStopThread();
deleter->DeferredDeleter::removeClient();
EXPECT_TRUE(deleter->isQueueEmpty());
}
TEST_F(DeferredDeleterTest, GivenAsyncThreadWaitsForQueueItemTwiceWhenDeletingThenQueueIsEmptied) {
deleter->DeferredDeleter::addClient();
waitForAsyncThread();
auto deletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(deletion);
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
while (deleter->shouldStopCalled == 0)
;
EXPECT_TRUE(deleter->isThreadRunning());
EXPECT_TRUE(deleter->isWorking());
auto secondDeletion = createDeletion();
deleter->DeferredDeleter::deferDeletion(secondDeletion);
deleter->allowEarlyStopThread();
deleter->DeferredDeleter::removeClient();
EXPECT_TRUE(deleter->isQueueEmpty());
EXPECT_EQ(0, deleter->getElementsToRelease());
}
TEST_F(DeferredDeleterTest, WhenReleasingThenAllElementsAreReleased) {
deleter->setElementsToRelease(1);
EXPECT_EQ(1, deleter->getElementsToRelease());
EXPECT_FALSE(deleter->baseAreElementsReleased());
deleter->setElementsToRelease(0);
EXPECT_EQ(0, deleter->getElementsToRelease());
EXPECT_TRUE(deleter->baseAreElementsReleased());
}
TEST_F(DeferredDeleterTest, WhenSettingDoWorkInBackgroundThenThreadShouldStopIsSetCorrectly) {
deleter->setDoWorkInBackgroundValue(false);
EXPECT_TRUE(deleter->baseShouldStop());
deleter->setDoWorkInBackgroundValue(true);
EXPECT_FALSE(deleter->baseShouldStop());
}
TEST_F(DeferredDeleterTest, givenDeferredDeleterWhenBlockingDrainIsCalledThenArElementsReleasedIsCalled) {
deleter->drain(true);
EXPECT_NE(0, deleter->areElementsReleasedCalled);
EXPECT_EQ(1, deleter->drainCalled);
}
TEST_F(DeferredDeleterTest, givenDeferredDeleterWhenNonBlockingDrainIsCalledThenArElementsReleasedIsNotCalled) {
deleter->drain(false);
EXPECT_EQ(0, deleter->areElementsReleasedCalled);
EXPECT_EQ(1, deleter->drainCalled);
}

View File

@ -11,7 +11,7 @@ set(CLOC_SEGFAULT_TEST_SOURCES
${NEO_SHARED_DIRECTORY}/helpers/abort.cpp
${NEO_SHARED_DIRECTORY}/os_interface/os_library.h
${NEO_SHARED_TEST_DIRECTORY}/common/libult/signal_utils.h
${NEO_SHARED_TEST_DIRECTORY}/unit_test/helpers/debug_helpers.cpp
${NEO_SHARED_TEST_DIRECTORY}/common/helpers/debug_helpers.cpp
${NEO_SOURCE_DIR}/opencl/test/unit_test/offline_compiler/ocloc_tests_configuration.cpp
)