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_os_library.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_ostime.h
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_ostime.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_product_helper.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.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_sip.h
|
${CMAKE_CURRENT_SOURCE_DIR}/mock_sip.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mock_submissions_aggregator.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/helpers/variable_backup.h"
|
||||||
#include "shared/test/common/mocks/mock_io_functions.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_product_helper.h"
|
||||||
|
#include "shared/test/common/mocks/mock_settings_reader.h"
|
||||||
#include "shared/test/common/test_macros/test.h"
|
#include "shared/test/common/test_macros/test.h"
|
||||||
#include "shared/test/common/utilities/base_object_utils.h"
|
#include "shared/test/common/utilities/base_object_utils.h"
|
||||||
|
|
||||||
|
@ -370,16 +371,11 @@ TEST(DebugSettingsManager, givenDisabledDebugManagerWhenCreateThenOnlyReleaseVar
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(DebugSettingsManager, givenEnabledDebugManagerWhenCreateThenAllVariablesAreRead) {
|
TEST(DebugSettingsManager, givenEnabledDebugManagerWhenCreateThenAllVariablesAreRead) {
|
||||||
bool settingsFileExists = fileExists(SettingsReader::settingsFileName);
|
|
||||||
if (!settingsFileExists) {
|
|
||||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||||
std::ofstream file;
|
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
||||||
file.open(SettingsReader::settingsFileName);
|
|
||||||
file << data;
|
SettingsReader *reader = MockSettingsReader::createFileReader();
|
||||||
file.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsReader *reader = SettingsReader::createFileReader();
|
|
||||||
EXPECT_NE(nullptr, reader);
|
EXPECT_NE(nullptr, reader);
|
||||||
|
|
||||||
FullyEnabledTestDebugManager debugManager;
|
FullyEnabledTestDebugManager debugManager;
|
||||||
|
@ -389,9 +385,7 @@ TEST(DebugSettingsManager, givenEnabledDebugManagerWhenCreateThenAllVariablesAre
|
||||||
EXPECT_EQ(1, debugManager.flags.MakeAllBuffersResident.get());
|
EXPECT_EQ(1, debugManager.flags.MakeAllBuffersResident.get());
|
||||||
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
||||||
|
|
||||||
if (!settingsFileExists) {
|
removeVirtualFile(SettingsReader::settingsFileName);
|
||||||
std::remove(SettingsReader::settingsFileName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(DebugSettingsManager, GivenLogsEnabledAndDumpToFileWhenPrintDebuggerLogCalledThenStringPrintedToFile) {
|
TEST(DebugSettingsManager, GivenLogsEnabledAndDumpToFileWhenPrintDebuggerLogCalledThenStringPrintedToFile) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2020-2024 Intel Corporation
|
* Copyright (C) 2020-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
#include "shared/test/common/debug_settings/debug_settings_manager_fixture.h"
|
#include "shared/test/common/debug_settings/debug_settings_manager_fixture.h"
|
||||||
#include "shared/test/common/helpers/variable_backup.h"
|
#include "shared/test/common/helpers/variable_backup.h"
|
||||||
#include "shared/test/common/mocks/mock_io_functions.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 "shared/test/common/test_macros/test.h"
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -18,15 +19,11 @@
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
TEST(DebugSettingsManager, givenDisabledDebugManagerAndMockEnvVariableWhenCreateThenAllVariablesAreRead) {
|
TEST(DebugSettingsManager, givenDisabledDebugManagerAndMockEnvVariableWhenCreateThenAllVariablesAreRead) {
|
||||||
bool settingsFileExists = fileExists(SettingsReader::settingsFileName);
|
|
||||||
if (!settingsFileExists) {
|
|
||||||
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
const char data[] = "LogApiCalls = 1\nMakeAllBuffersResident = 1";
|
||||||
std::ofstream file;
|
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
||||||
file.open(SettingsReader::settingsFileName);
|
|
||||||
file << data;
|
SettingsReader *reader = MockSettingsReader::createFileReader();
|
||||||
file.close();
|
|
||||||
}
|
|
||||||
SettingsReader *reader = SettingsReader::createFileReader();
|
|
||||||
EXPECT_NE(nullptr, reader);
|
EXPECT_NE(nullptr, reader);
|
||||||
|
|
||||||
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
|
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.MakeAllBuffersResident.get());
|
||||||
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
EXPECT_EQ(1, debugManager.flags.LogApiCalls.get());
|
||||||
|
|
||||||
if (!settingsFileExists) {
|
removeVirtualFile(SettingsReader::settingsFileName);
|
||||||
remove(SettingsReader::settingsFileName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(DebugSettingsManager, givenPrintDebugSettingsAndDebugKeysReadEnabledOnDisabledDebugManagerWhenCallingDumpFlagsThenFlagsAreWrittenToDumpFile) {
|
TEST(DebugSettingsManager, givenPrintDebugSettingsAndDebugKeysReadEnabledOnDisabledDebugManagerWhenCallingDumpFlagsThenFlagsAreWrittenToDumpFile) {
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2018-2024 Intel Corporation
|
* Copyright (C) 2018-2025 Intel Corporation
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* 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/api_specific_config.h"
|
||||||
#include "shared/source/helpers/file_io.h"
|
#include "shared/test/common/mocks/mock_settings_reader.h"
|
||||||
#include "shared/source/utilities/debug_file_reader.h"
|
|
||||||
#include "shared/source/utilities/debug_settings_reader.h"
|
|
||||||
#include "shared/test/common/test_macros/test.h"
|
#include "shared/test/common/test_macros/test.h"
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
@ -19,39 +16,15 @@
|
||||||
|
|
||||||
using namespace NEO;
|
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 {
|
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) {
|
TEST(SettingsReader, WhenCreatingSettingsReaderThenReaderIsCreated) {
|
||||||
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::create(ApiSpecificConfig::getRegistryPath()));
|
auto reader = std::unique_ptr<SettingsReader>(SettingsReader::create(ApiSpecificConfig::getRegistryPath()));
|
||||||
EXPECT_NE(nullptr, reader.get());
|
EXPECT_NE(nullptr, reader.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SettingsReader, GivenNoSettingsFileWhenCreatingSettingsReaderThenOsReaderIsCreated) {
|
TEST(SettingsReader, GivenNoSettingsFileWhenCreatingSettingsReaderThenOsReaderIsCreated) {
|
||||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||||
|
|
||||||
auto fileReader = std::unique_ptr<SettingsReader>(SettingsReader::createFileReader());
|
auto fileReader = std::unique_ptr<SettingsReader>(SettingsReader::createFileReader());
|
||||||
EXPECT_EQ(nullptr, fileReader.get());
|
EXPECT_EQ(nullptr, fileReader.get());
|
||||||
|
@ -61,40 +34,40 @@ TEST(SettingsReader, GivenNoSettingsFileWhenCreatingSettingsReaderThenOsReaderIs
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SettingsReader, GivenSettingsFileExistsWhenCreatingSettingsReaderThenReaderIsCreated) {
|
TEST(SettingsReader, GivenSettingsFileExistsWhenCreatingSettingsReaderThenReaderIsCreated) {
|
||||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||||
|
|
||||||
const char data[] = "ProductFamilyOverride = test";
|
const char data[] = "ProductFamilyOverride = test";
|
||||||
writeDataToFile(SettingsReader::settingsFileName, &data, sizeof(data));
|
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());
|
EXPECT_NE(nullptr, reader.get());
|
||||||
std::string defaultValue("unk");
|
std::string defaultValue("unk");
|
||||||
EXPECT_STREQ("test", reader->getSetting("ProductFamilyOverride", defaultValue).c_str());
|
EXPECT_STREQ("test", reader->getSetting("ProductFamilyOverride", defaultValue).c_str());
|
||||||
|
|
||||||
std::remove(SettingsReader::settingsFileName);
|
removeVirtualFile(SettingsReader::settingsFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SettingsReader, WhenCreatingFileReaderThenReaderIsCreated) {
|
TEST(SettingsReader, WhenCreatingFileReaderThenReaderIsCreated) {
|
||||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||||
char data = 0;
|
char data = 0;
|
||||||
writeDataToFile(SettingsReader::settingsFileName, &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());
|
EXPECT_NE(nullptr, reader.get());
|
||||||
|
|
||||||
std::remove(SettingsReader::settingsFileName);
|
removeVirtualFile(SettingsReader::settingsFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SettingsReader, WhenCreatingFileReaderUseNeoFileIfNoDefault) {
|
TEST(SettingsReader, WhenCreatingFileReaderUseNeoFileIfNoDefault) {
|
||||||
ASSERT_FALSE(fileExists(SettingsReader::settingsFileName));
|
ASSERT_FALSE(virtualFileExists(SettingsReader::settingsFileName));
|
||||||
ASSERT_FALSE(fileExists(SettingsReader::neoSettingsFileName));
|
ASSERT_FALSE(virtualFileExists(SettingsReader::neoSettingsFileName));
|
||||||
char data = 0;
|
char data = 0;
|
||||||
writeDataToFile(SettingsReader::neoSettingsFileName, &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());
|
EXPECT_NE(nullptr, reader.get());
|
||||||
|
|
||||||
std::remove(SettingsReader::neoSettingsFileName);
|
removeVirtualFile(SettingsReader::neoSettingsFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SettingsReader, WhenCreatingOsReaderThenReaderIsCreated) {
|
TEST(SettingsReader, WhenCreatingOsReaderThenReaderIsCreated) {
|
||||||
|
|
Loading…
Reference in New Issue