mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Add Unit test for deferred deleter
- test run() function Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
c012034c19
commit
4292a47c53
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
#include "shared/source/memory_manager/deferrable_deletion.h"
|
||||
#include "shared/source/os_interface/os_thread.h"
|
||||
#include "shared/test/common/mocks/mock_deferrable_deletion.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
@ -51,7 +52,16 @@ bool MockDeferredDeleter::areElementsReleased() {
|
||||
}
|
||||
|
||||
bool MockDeferredDeleter::shouldStop() {
|
||||
|
||||
shouldStopCalled++;
|
||||
if (stopAfter3loopsInRun && shouldStopCalled < 3) {
|
||||
auto deletion = new MockDeferrableDeletion();
|
||||
elementsToRelease++;
|
||||
queue.pushTailOne(*deletion);
|
||||
condition.notify_one();
|
||||
|
||||
return false;
|
||||
}
|
||||
return shouldStopCalled > 1;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@ -11,6 +11,7 @@
|
||||
namespace NEO {
|
||||
class MockDeferredDeleter : public DeferredDeleter {
|
||||
public:
|
||||
using DeferredDeleter::run;
|
||||
MockDeferredDeleter();
|
||||
|
||||
~MockDeferredDeleter() override;
|
||||
@ -60,6 +61,7 @@ class MockDeferredDeleter : public DeferredDeleter {
|
||||
std::atomic<int> clearCalled;
|
||||
|
||||
int deferDeletionCalled = 0;
|
||||
bool stopAfter3loopsInRun = false;
|
||||
|
||||
void forceStop();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019-2021 Intel Corporation
|
||||
* Copyright (C) 2019-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@ -7,6 +7,8 @@
|
||||
|
||||
#include "shared/source/helpers/deferred_deleter_helper.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
#include "shared/test/common/mocks/mock_deferrable_deletion.h"
|
||||
#include "shared/test/common/mocks/mock_deferred_deleter.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
@ -22,3 +24,14 @@ TEST(deferredDeleterHelper, DeferredDeleterIsEnabledWhenCheckIFDeferrDeleterIsEn
|
||||
DebugManager.flags.EnableDeferredDeleter.set(true);
|
||||
EXPECT_TRUE(isDeferredDeleterEnabled());
|
||||
}
|
||||
|
||||
TEST(DeferredDeleter, GivenNoShouldStopWhenRunIsExecutingThenQueueIsProcessedInTheLoop) {
|
||||
MockDeferredDeleter deleter;
|
||||
|
||||
deleter.stopAfter3loopsInRun = true;
|
||||
auto deletion = new MockDeferrableDeletion();
|
||||
deleter.DeferredDeleter::deferDeletion(deletion);
|
||||
|
||||
MockDeferredDeleter::run(&deleter);
|
||||
EXPECT_EQ(3, deleter.shouldStopCalled);
|
||||
}
|
Reference in New Issue
Block a user