refactor: use virtualFileSystem in FileLogger ULTs

restored the possibility of different writing modes in the FileLogger
mocked writeToFile in TestFileLogger

Related-To: NEO-7006
Signed-off-by: Marcel Skierkowski <marcel.skierkowski@intel.com>
This commit is contained in:
Marcel Skierkowski
2024-12-18 16:26:44 +00:00
committed by Compute-Runtime-Automation
parent 6d96572c2c
commit ee0648c365
6 changed files with 35 additions and 12 deletions

View File

@@ -153,6 +153,7 @@ TEST(FileLogger, GivenMdiWhenDumpingKernelArgsThenFileIsCreated) {
flags.DumpKernelArgs.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
FullyEnabledClFileLogger clFileLogger(fileLogger, flags);
fileLogger.useRealFiles(false);
clFileLogger.dumpKernelArgs(multiDispatchInfo.get());
@@ -217,6 +218,7 @@ TEST(FileLogger, GivenImmediateWhenDumpingKernelArgsThenFileIsCreated) {
flags.DumpKernelArgs.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
FullyEnabledClFileLogger clFileLogger(fileLogger, flags);
fileLogger.useRealFiles(false);
clFileLogger.dumpKernelArgs(multiDispatchInfo.get());
@@ -332,6 +334,7 @@ TEST(FileLogger, GivenBufferWhenDumpingKernelArgsThenFileIsCreated) {
flags.DumpKernelArgs.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
FullyEnabledClFileLogger clFileLogger(fileLogger, flags);
fileLogger.useRealFiles(false);
clFileLogger.dumpKernelArgs(multiDispatchInfo.get());

View File

@@ -20,7 +20,7 @@ template <DebugFunctionalityLevel debugLevel>
class TestClFileLogger : public NEO::ClFileLogger<debugLevel> {
public:
TestClFileLogger(TestFileLogger<debugLevel> &baseLoggerInm, const NEO::DebugVariables &flags)
: NEO::ClFileLogger<debugLevel>(baseLoggerInm, flags), baseLogger(baseLoggerInm) { ; }
: NEO::ClFileLogger<debugLevel>(baseLoggerInm, flags), baseLogger(baseLoggerInm) { baseLogger.useRealFiles(false); }
protected:
TestFileLogger<debugLevel> &baseLogger;

View File

@@ -45,7 +45,11 @@ FileLogger<debugLevel>::~FileLogger() = default;
template <DebugFunctionalityLevel debugLevel>
void FileLogger<debugLevel>::writeToFile(std::string filename, const char *str, size_t length, std::ios_base::openmode mode) {
std::lock_guard theLock(mutex);
writeDataToFile(filename.c_str(), str, length);
std::ofstream outFile(filename, mode);
if (outFile.is_open()) {
outFile.write(str, length);
outFile.close();
}
}
template <DebugFunctionalityLevel debugLevel>

View File

@@ -35,12 +35,20 @@ class TestFileLogger : public NEO::FileLogger<debugLevel> {
}
}
void useRealFiles(bool value) {
mockFileSystem = !value;
}
void writeToFile(std::string filename,
const char *str,
size_t length,
std::ios_base::openmode mode) override {
NEO::FileLogger<debugLevel>::writeToFile(filename, str, length, mode);
if (mockFileSystem == false) {
NEO::FileLogger<debugLevel>::writeToFile(filename, str, length, mode);
return;
}
writeDataToFile(filename.c_str(), str, length);
}
int32_t createdFilesCount() {
@@ -54,6 +62,9 @@ class TestFileLogger : public NEO::FileLogger<debugLevel> {
std::string getFileString(std::string filename) {
return NEO::virtualFileList[filename].str();
}
protected:
bool mockFileSystem = false;
};
using FullyEnabledFileLogger = TestFileLogger<DebugFunctionalityLevel::full>;

View File

@@ -13,7 +13,6 @@
#include "shared/test/common/debug_settings/debug_settings_manager_fixture.h"
#include "shared/test/common/helpers/debug_manager_state_restore.h"
#include "shared/test/common/helpers/gtest_helpers.h"
#include "shared/test/common/helpers/mock_file_io.h"
#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"
@@ -403,25 +402,21 @@ TEST(DebugSettingsManager, GivenLogsEnabledAndDumpToFileWhenPrintDebuggerLogCall
auto logFile = NEO::fileLoggerInstance().getLogFileName();
if (virtualFileExists(logFile)) {
removeVirtualFile(logFile);
}
std::remove(logFile);
::testing::internal::CaptureStdout();
PRINT_DEBUGGER_LOG(stdout, "test %s", "log");
auto output = ::testing::internal::GetCapturedStdout();
EXPECT_EQ(0u, output.size());
auto logFileExists = virtualFileExists(logFile);
auto logFileExists = fileExists(logFile);
EXPECT_TRUE(logFileExists);
size_t retSize;
auto data = loadDataFromVirtualFile(logFile, retSize);
auto data = loadDataFromFile(logFile, retSize);
EXPECT_STREQ("test log", data.get());
if (virtualFileExists(logFile)) {
removeVirtualFile(logFile);
}
std::remove(logFile);
}
TEST(DebugSettingsManager, GivenLogsDisabledAndDumpToFileWhenPrintDebuggerLogCalledThenStringIsNotPrintedToFile) {

View File

@@ -52,6 +52,7 @@ TEST(FileLogger, GivenFullyDisabledFileLoggerIsCreatedThenItIsDisabled) {
TEST(FileLogger, GivenFileLoggerWhenSettingFileNameThenCorrectFilenameIsSet) {
DebugVariables flags;
FullyEnabledFileLogger fileLogger(std::string(""), flags);
fileLogger.useRealFiles(false);
fileLogger.setLogFileName("new_filename");
EXPECT_STREQ("new_filename", fileLogger.getLogFileName());
}
@@ -60,6 +61,7 @@ TEST(FileLogger, GivenEnabledDebugFunctinalityWhenLoggingApiCallsThenDumpToFile)
DebugVariables flags;
flags.LogApiCalls.set(true);
FullyEnabledFileLogger fileLogger(std::string("test.log"), flags);
fileLogger.useRealFiles(false);
fileLogger.logApiCall("searchString", true, 0);
fileLogger.logApiCall("searchString2", false, 0);
@@ -119,6 +121,7 @@ TEST(FileLogger, GivenCorrectFilenameFileWhenLoggingApiCallsThenFileIsCreated) {
std::string testFile = "testfile";
DebugVariables flags;
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
fileLogger.writeToFile(testFile, "test", 4, std::fstream::out);
EXPECT_TRUE(virtualFileExists(fileLogger.getLogFileName()));
@@ -132,6 +135,7 @@ TEST(FileLogger, GivenSameFileNameWhenCreatingNewInstanceThenOldFileIsRemoved) {
DebugVariables flags;
flags.LogApiCalls.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
fileLogger.writeToFile(fileLogger.getLogFileName(), "test", 4, std::fstream::out);
EXPECT_TRUE(virtualFileExists(fileLogger.getLogFileName()));
@@ -144,6 +148,7 @@ TEST(FileLogger, GivenSameFileNameWhenCreatingNewFullyDisabledLoggerThenOldFileI
DebugVariables flags;
flags.LogApiCalls.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
fileLogger.writeToFile(fileLogger.getLogFileName(), "test", 4, std::fstream::out);
EXPECT_TRUE(virtualFileExists(fileLogger.getLogFileName()));
@@ -160,6 +165,7 @@ TEST(FileLogger, GivenFlagIsFalseWhenLoggingThenOnlyCustomLogsAreDumped) {
flags.LogApiCalls.set(false);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
// Log file not created
bool logFileCreated = virtualFileExists(fileLogger.getLogFileName());
@@ -258,6 +264,7 @@ TEST(FileLogger, WhenDumpingKernelThenFileIsCreated) {
DebugVariables flags;
flags.DumpKernels.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
std::string kernelDumpFile = "testDumpKernel";
// test kernel dumping
@@ -282,6 +289,7 @@ TEST(FileLogger, WhenDumpingBinaryFileThenFileIsCreated) {
DebugVariables flags;
flags.DumpKernels.set(true);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
std::string programDumpFile = "programBinary.bin";
size_t length = 4;
unsigned char binary[4];
@@ -427,6 +435,7 @@ TEST(FileLogger, givenEnabledLogWhenLogDebugStringCalledThenStringIsWrittenToFil
std::string testFile = "testfile";
DebugVariables flags;
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
fileLogger.logDebugString(true, "test log");
EXPECT_EQ(std::string("test log"), fileLogger.getFileString(testFile));
@@ -549,6 +558,7 @@ TEST(AllocationTypeLoggingSingle, givenLogAllocationTypeWhenLoggingAllocationThe
flags.LogAllocationType.set(1);
FullyEnabledFileLogger fileLogger(testFile, flags);
fileLogger.useRealFiles(false);
GraphicsAllocation graphicsAllocation(0, 1u /*num gmms*/, AllocationType::commandBuffer, nullptr, 0, 0, MemoryPool::memoryNull, MemoryManager::maxOsContextCount, 0llu);