Move Drm cleanup logic to separated method

Related-To: NEO-6999
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2022-07-19 17:13:51 +00:00
committed by Compute-Runtime-Automation
parent 07bb2e7b0b
commit 2d151ec0fe
14 changed files with 69 additions and 32 deletions

View File

@@ -38,7 +38,7 @@ class DrmNullDeviceTestsFixture {
void TearDown() { // NOLINT(readability-identifier-naming)
}
std::unique_ptr<DrmWrap> drmNullDevice;
std::unique_ptr<DrmWrap, std::function<void(Drm *)>> drmNullDevice;
ExecutionEnvironment executionEnvironment;
protected:

View File

@@ -12,6 +12,8 @@
#include "shared/source/os_interface/linux/hw_device_id.h"
#include "shared/source/os_interface/os_interface.h"
#include <functional>
class DrmWrap : public NEO::Drm {
public:
using Drm::deviceId;
@@ -19,10 +21,13 @@ class DrmWrap : public NEO::Drm {
using Drm::queryDeviceIdAndRevision;
using Drm::revisionId;
using Drm::virtualMemoryIds;
static std::unique_ptr<DrmWrap> createDrm(RootDeviceEnvironment &rootDeviceEnvironment) {
static std::unique_ptr<DrmWrap, std::function<void(Drm *)>> createDrm(RootDeviceEnvironment &rootDeviceEnvironment) {
auto hwDeviceIds = OSInterface::discoverDevices(rootDeviceEnvironment.executionEnvironment);
if (!hwDeviceIds.empty()) {
return std::unique_ptr<DrmWrap>{static_cast<DrmWrap *>(NEO::Drm::create(std::unique_ptr<HwDeviceIdDrm>(hwDeviceIds[0].release()->as<HwDeviceIdDrm>()), rootDeviceEnvironment))};
return std::unique_ptr<DrmWrap, std::function<void(Drm *)>>{static_cast<DrmWrap *>(NEO::Drm::create(std::unique_ptr<HwDeviceIdDrm>(hwDeviceIds[0].release()->as<HwDeviceIdDrm>()), rootDeviceEnvironment)), [](Drm *drm) {
drm->cleanup();
delete drm;
}};
}
return nullptr;
}

View File

@@ -260,7 +260,7 @@ TEST_F(DrmSimpleTests, givenPrintIoctlTimesWhenCallIoctlThenStatisticsAreGathere
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
executionEnvironment->prepareRootDeviceEnvironments(1);
auto drm = DrmWrap::createDrm(*executionEnvironment->rootDeviceEnvironments[0]).release();
auto drm = DrmWrap::createDrm(*executionEnvironment->rootDeviceEnvironments[0]);
DebugManagerStateRestore restorer;
DebugManager.flags.PrintIoctlTimes.set(true);
@@ -343,7 +343,7 @@ TEST_F(DrmSimpleTests, givenPrintIoctlTimesWhenCallIoctlThenStatisticsAreGathere
::testing::internal::CaptureStdout();
delete drm;
drm.reset();
std::string output = ::testing::internal::GetCapturedStdout();
EXPECT_STRNE("", output.c_str());