test: mock filesystem in setting manager
Related-To: NEO-14084 Signed-off-by: Marcel Skierkowski <marcel.skierkowski@intel.com>
This commit is contained in:
parent
6a313a2f04
commit
4b75d9b218
|
@ -87,6 +87,7 @@ set(NEO_CORE_tests_mocks
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/mock_os_library.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_ostime.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_product_helper.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_settings_reader.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_sip.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_sip.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_submissions_aggregator.h
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright (C) 2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared/source/helpers/debug_helpers.h"
|
||||
#include "shared/source/utilities/debug_file_reader.h"
|
||||
#include "shared/source/utilities/debug_settings_reader.h"
|
||||
#include "shared/test/common/helpers/mock_file_io.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
namespace NEO {
|
||||
class MockSettingsFileReader : public SettingsFileReader {
|
||||
public:
|
||||
MockSettingsFileReader(const char *filePath) : SettingsFileReader("") {
|
||||
UNRECOVERABLE_IF(!filePath);
|
||||
UNRECOVERABLE_IF(!virtualFileExists(filePath));
|
||||
|
||||
if (virtualFileExists(filePath)) {
|
||||
size_t fileSize = 0;
|
||||
std::unique_ptr<char[]> fileData = loadDataFromVirtualFile(filePath, fileSize);
|
||||
|
||||
if (fileData && fileSize > 0) {
|
||||
std::istringstream settingsFile(std::string(fileData.get(), fileSize));
|
||||
parseStream(settingsFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class MockSettingsReader : public SettingsReader {
|
||||
public:
|
||||
static SettingsReader *createFileReader() {
|
||||
std::vector<const char *> fileName;
|
||||
fileName.push_back(settingsFileName);
|
||||
fileName.push_back(neoSettingsFileName);
|
||||
for (const auto &file : fileName) {
|
||||
if (virtualFileExists(file)) {
|
||||
return new MockSettingsFileReader(file);
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static SettingsReader *create(const std::string ®Key) {
|
||||
SettingsReader *readerImpl = MockSettingsReader::createFileReader();
|
||||
if (readerImpl != nullptr)
|
||||
return readerImpl;
|
||||
|
||||
return createOsReader(false, regKey);
|
||||
}
|
||||
};
|
||||
} // namespace NEO
|
|
@ -17,6 +17,7 @@
|
|||
#include "shared/test/common/helpers/variable_backup.h"
|
||||
#include "shared/test/common/mocks/mock_io_functions.h"
|
||||
#include "shared/test/common/mocks/mock_product_helper.h"
|
||||
#include "shared/test/common/mocks/mock_settings_reader.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
#include "shared/test/common/utilities/base_object_utils.h"
|
||||
|
||||
|
@ -370,16 +371,11 @@ TEST(DebugSettingsManager, givenDisabledDebugManagerWhenCreateThenOnlyReleaseVar
|
|||
}
|
||||
|
||||
TEST(DebugSettingsManager, givenEnabledDebugManagerWhenCreateThenAllVariablesAreRead) {
|
||||
bool settingsFileExists = fileExists(SettingsReader::settingsFileName);
|
||||
if (!settingsFileExists) {
|
||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||
std::ofstream file;
|
||||
file.open(SettingsReader::settingsFileName);
|
||||
file << data;
|
||||
file.close();
|
||||
}
|
||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
||||
|
||||
SettingsReader *reader = MockSettingsReader::createFileReader();
|
||||
|
||||
SettingsReader *reader = SettingsReader::createFileReader();
|
||||
EXPECT_NE(nullptr, reader);
|
||||
|
||||
FullyEnabledTestDebugManager debugManager;
|
||||
|
@ -389,9 +385,7 @@ TEST(DebugSettingsManager, givenEnabledDebugManagerWhenCreateThenAllVariablesAre
|
|||
EXPECT_EQ(1, debugManager.flags.MakeAllBuffersResident.get());
|
||||
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
||||
|
||||
if (!settingsFileExists) {
|
||||
std::remove(SettingsReader::settingsFileName);
|
||||
}
|
||||
removeVirtualFile(SettingsReader::settingsFileName);
|
||||
}
|
||||
|
||||
TEST(DebugSettingsManager, GivenLogsEnabledAndDumpToFileWhenPrintDebuggerLogCalledThenStringPrintedToFile) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2020-2024 Intel Corporation
|
||||
* Copyright (C) 2020-2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -10,6 +10,7 @@
|
|||
#include "shared/test/common/debug_settings/debug_settings_manager_fixture.h"
|
||||
#include "shared/test/common/helpers/variable_backup.h"
|
||||
#include "shared/test/common/mocks/mock_io_functions.h"
|
||||
#include "shared/test/common/mocks/mock_settings_reader.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
#include <fstream>
|
||||
|
@ -18,15 +19,11 @@
|
|||
namespace NEO {
|
||||
|
||||
TEST(DebugSettingsManager, givenDisabledDebugManagerAndMockEnvVariableWhenCreateThenAllVariablesAreRead) {
|
||||
bool settingsFileExists = fileExists(SettingsReader::settingsFileName);
|
||||
if (!settingsFileExists) {
|
||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||
std::ofstream file;
|
||||
file.open(SettingsReader::settingsFileName);
|
||||
file << data;
|
||||
file.close();
|
||||
}
|
||||
SettingsReader *reader = SettingsReader::createFileReader();
|
||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
||||
|
||||
SettingsReader *reader = MockSettingsReader::createFileReader();
|
||||
|
||||
EXPECT_NE(nullptr, reader);
|
||||
|
||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
||||
|
@ -40,9 +37,7 @@ TEST(DebugSettingsManager, givenDisabledDebugManagerAndMockEnvVariableWhenCreate
|
|||
EXPECT_EQ(1, debugManager.flags.MakeAllBuffersResident.get());
|
||||
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
||||
|
||||
if (!settingsFileExists) {
|
||||
remove(SettingsReader::settingsFileName);
|
||||
}
|
||||
removeVirtualFile(SettingsReader::settingsFileName);
|
||||
}
|
||||
|
||||
TEST(DebugSettingsManager, givenPrintDebugSettingsAndDebugKeysReadEnabledOnDisabledDebugManagerWhenCallingDumpFlagsThenFlagsAreWrittenToDumpFile) {
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2024 Intel Corporation
|
||||
* Copyright (C) 2018-2025 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/helpers/api_specific_config.h"
|
||||
#include "shared/source/helpers/file_io.h"
|
||||
#include "shared/source/utilities/debug_file_reader.h"
|
||||
#include "shared/source/utilities/debug_settings_reader.h"
|
||||
#include "shared/test/common/mocks/mock_settings_reader.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
@ -19,39 +16,15 @@
|
|||
|
||||
using namespace NEO;
|
||||
|
||||
class MockSettingsReader : public SettingsReader {
|
||||
public:
|
||||
std::string getSetting(const char *settingName, const std::string &value, DebugVarPrefix &type) override {
|
||||
return value;
|
||||
}
|
||||
std::string getSetting(const char *settingName, const std::string &value) override {
|
||||
return value;
|
||||
}
|
||||
bool getSetting(const char *settingName, bool defaultValue, DebugVarPrefix &type) override { return defaultValue; };
|
||||
bool getSetting(const char *settingName, bool defaultValue) override { return defaultValue; };
|
||||
int64_t getSetting(const char *settingName, int64_t defaultValue, DebugVarPrefix &type) override { return defaultValue; };
|
||||
int64_t getSetting(const char *settingName, int64_t defaultValue) override { return defaultValue; };
|
||||
int32_t getSetting(const char *settingName, int32_t defaultValue, DebugVarPrefix &type) override { return defaultValue; };
|
||||
int32_t getSetting(const char *settingName, int32_t defaultValue) override { return defaultValue; };
|
||||
const char *appSpecificLocation(const std::string &name) override { return name.c_str(); };
|
||||
};
|
||||
|
||||
namespace SettingsReaderTests {
|
||||
|
||||
void writeDataToFile(const char *filename, const void *pData, size_t dataSize) {
|
||||
std::ofstream file;
|
||||
file.open(filename);
|
||||
file.write(static_cast<const char *>(pData), dataSize);
|
||||
file.close();
|
||||
}
|
||||
|
||||
TEST(SettingsReader, WhenCreatingSettingsReaderThenReaderIsCreated) {
|
||||
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::create(ApiSpecificConfig::getRegistryPath()));
|
||||
EXPECT_NE(nullptr, reader.get());
|
||||
}
|
||||
|
||||
TEST(SettingsReader, GivenNoSettingsFileWhenCreatingSettingsReaderThenOsReaderIsCreated) {
|
||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
||||
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||
|
||||
auto fileReader = std::unique_ptr<SettingsReader>(SettingsReader::createFileReader());
|
||||
EXPECT_EQ(nullptr, fileReader.get());
|
||||
|
@ -61,40 +34,40 @@ TEST(SettingsReader, GivenNoSettingsFileWhenCreatingSettingsReaderThenOsReaderIs
|
|||
}
|
||||
|
||||
TEST(SettingsReader, GivenSettingsFileExistsWhenCreatingSettingsReaderThenReaderIsCreated) {
|
||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
||||
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||
|
||||
const char data[] = "ProductFamilyOverride = test";
|
||||
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
||||
|
||||
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::create(ApiSpecificConfig::getRegistryPath()));
|
||||
auto reader = std::unique_ptr<SettingsReader>(MockSettingsReader::create(ApiSpecificConfig::getRegistryPath()));
|
||||
EXPECT_NE(nullptr, reader.get());
|
||||
std::string defaultValue("unk");
|
||||
EXPECT_STREQ("test", reader->getSetting("ProductFamilyOverride", defaultValue).c_str());
|
||||
|
||||
std::remove(SettingsReader::settingsFileName);
|
||||
removeVirtualFile(SettingsReader::settingsFileName);
|
||||
}
|
||||
|
||||
TEST(SettingsReader, WhenCreatingFileReaderThenReaderIsCreated) {
|
||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
||||
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||
char data = 0;
|
||||
writeDataToFile(SettingsReader::settingsFileName, &data, 0);
|
||||
|
||||
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::createFileReader());
|
||||
auto reader = std::unique_ptr<SettingsReader>(MockSettingsReader::createFileReader());
|
||||
EXPECT_NE(nullptr, reader.get());
|
||||
|
||||
std::remove(SettingsReader::settingsFileName);
|
||||
removeVirtualFile(SettingsReader::settingsFileName);
|
||||
}
|
||||
|
||||
TEST(SettingsReader, WhenCreatingFileReaderUseNeoFileIfNoDefault) {
|
||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
||||
ASSERT_FALSE(fileExists(SettingsReader::neoSettingsFileName));
|
||||
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||
ASSERT_FALSE(virtualFileExists(SettingsReader::neoSettingsFileName));
|
||||
char data = 0;
|
||||
writeDataToFile(SettingsReader::neoSettingsFileName, &data, 0);
|
||||
|
||||
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::createFileReader());
|
||||
auto reader = std::unique_ptr<SettingsReader>(MockSettingsReader::createFileReader());
|
||||
EXPECT_NE(nullptr, reader.get());
|
||||
|
||||
std::remove(SettingsReader::neoSettingsFileName);
|
||||
removeVirtualFile(SettingsReader::neoSettingsFileName);
|
||||
}
|
||||
|
||||
TEST(SettingsReader, WhenCreatingOsReaderThenReaderIsCreated) {
|
||||
|
|
Loading…
Reference in New Issue