mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
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:
committed by
Compute-Runtime-Automation
parent
3f5c3a8cdf
commit
7e7f8b5bc2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -117,8 +117,8 @@ set(neo_libult_common_SRCS_LIB_ULT
|
||||
${NEO_SHARED_TEST_DIRECTORY}/common/test_macros/test_excludes.h
|
||||
${NEO_SHARED_TEST_DIRECTORY}/common/base_ult_config_listener.cpp
|
||||
${NEO_SHARED_TEST_DIRECTORY}/common/base_ult_config_listener.h
|
||||
${NEO_SHARED_TEST_DIRECTORY}/unit_test/helpers/debug_helpers.cpp
|
||||
${NEO_SHARED_TEST_DIRECTORY}/unit_test/utilities/cpuintrinsics.cpp
|
||||
${NEO_SHARED_TEST_DIRECTORY}/common/helpers/debug_helpers.cpp
|
||||
${NEO_SHARED_TEST_DIRECTORY}/common/utilities/cpuintrinsics.cpp
|
||||
${NEO_SHARED_DIRECTORY}/gmm_helper/resource_info_impl.cpp
|
||||
)
|
||||
|
||||
|
||||
10
shared/test/common/page_fault_manager/CMakeLists.txt
Normal file
10
shared/test/common/page_fault_manager/CMakeLists.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
#
|
||||
# Copyright (C) 2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
target_sources(neo_libult_common PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/default_asan_options.cpp
|
||||
)
|
||||
@@ -9,4 +9,4 @@ extern "C" {
|
||||
const char *__asan_default_options() { // NOLINT(readability-identifier-naming0
|
||||
return "allow_user_segv_handler=1";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/address_mapper_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/alignment_selector_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/deferrable_allocation_deletion_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/deferred_deleter_mt_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/deferred_deleter_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gfx_partition_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/graphics_allocation_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/host_ptr_manager_tests.cpp
|
||||
|
||||
@@ -1,236 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 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;
|
||||
|
||||
TEST(DeferredDeleter, WhenDeferredDeleterIsCreatedThenItIsNotMoveableOrCopyable) {
|
||||
EXPECT_FALSE(std::is_move_constructible<DeferredDeleter>::value);
|
||||
EXPECT_FALSE(std::is_copy_constructible<DeferredDeleter>::value);
|
||||
}
|
||||
|
||||
TEST(DeferredDeleter, WhenDeferredDeleterIsCreatedThenItIsNotAssignable) {
|
||||
EXPECT_FALSE(std::is_move_assignable<DeferredDeleter>::value);
|
||||
EXPECT_FALSE(std::is_copy_assignable<DeferredDeleter>::value);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/test/common/mocks/mock_deferred_deleter.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
TEST(DeferredDeleter, WhenDeferredDeleterIsCreatedThenItIsNotMoveableOrCopyable) {
|
||||
EXPECT_FALSE(std::is_move_constructible<DeferredDeleter>::value);
|
||||
EXPECT_FALSE(std::is_copy_constructible<DeferredDeleter>::value);
|
||||
}
|
||||
|
||||
TEST(DeferredDeleter, WhenDeferredDeleterIsCreatedThenItIsNotAssignable) {
|
||||
EXPECT_FALSE(std::is_move_assignable<DeferredDeleter>::value);
|
||||
EXPECT_FALSE(std::is_copy_assignable<DeferredDeleter>::value);
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/test/common/mocks/mock_l0_debugger.h"
|
||||
|
||||
NEO::DebugerL0CreateFn mockDebuggerL0HwFactory[IGFX_MAX_CORE];
|
||||
|
||||
namespace NEO {
|
||||
|
||||
std::unique_ptr<Debugger> DebuggerL0::create(NEO::Device *device) {
|
||||
initDebuggingInOs(device->getRootDeviceEnvironment().osInterface.get());
|
||||
auto debugger = mockDebuggerL0HwFactory[device->getHardwareInfo().platform.eRenderCoreFamily](device);
|
||||
return std::unique_ptr<DebuggerL0>(debugger);
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
@@ -4,11 +4,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
set(NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_tests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/default_asan_options.cpp
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_tests.cpp
|
||||
)
|
||||
set_property(GLOBAL PROPERTY NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS ${NEO_CORE_CPU_PAGE_FAULT_MANAGER_TESTS})
|
||||
|
||||
add_subdirectories()
|
||||
add_subdirectories()
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
#
|
||||
# Copyright (C) 2019-2020 Intel Corporation
|
||||
# Copyright (C) 2019-2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
set(NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_linux_tests.cpp
|
||||
)
|
||||
|
||||
if(UNIX)
|
||||
set_property(GLOBAL PROPERTY NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS ${NEO_CORE_PAGE_FAULT_MANAGER_LINUX_TESTS})
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_linux_tests.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
#
|
||||
# Copyright (C) 2019-2020 Intel Corporation
|
||||
# Copyright (C) 2019-2022 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
set(NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_windows_tests.cpp
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set_property(GLOBAL PROPERTY NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS ${NEO_CORE_PAGE_FAULT_MANAGER_WINDOWS_TESTS})
|
||||
target_sources(neo_shared_tests PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_page_fault_manager_windows_tests.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user