From ee0648c3654770783423804f5a95dd8d991e0736 Mon Sep 17 00:00:00 2001 From: Marcel Skierkowski Date: Wed, 18 Dec 2024 16:26:44 +0000 Subject: [PATCH] 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 --- .../test/unit_test/utilities/file_logger_tests.cpp | 3 +++ opencl/test/unit_test/utilities/file_logger_tests.h | 2 +- shared/source/utilities/logger.cpp | 6 +++++- shared/test/common/utilities/logger_tests.h | 13 ++++++++++++- .../debug_settings/debug_settings_manager_tests.cpp | 13 ++++--------- shared/test/unit_test/utilities/logger_tests.cpp | 10 ++++++++++ 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/opencl/test/unit_test/utilities/file_logger_tests.cpp b/opencl/test/unit_test/utilities/file_logger_tests.cpp index 6f28834e3f..e783cbda7e 100644 --- a/opencl/test/unit_test/utilities/file_logger_tests.cpp +++ b/opencl/test/unit_test/utilities/file_logger_tests.cpp @@ -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()); diff --git a/opencl/test/unit_test/utilities/file_logger_tests.h b/opencl/test/unit_test/utilities/file_logger_tests.h index e97358b6e8..a5fa01719f 100644 --- a/opencl/test/unit_test/utilities/file_logger_tests.h +++ b/opencl/test/unit_test/utilities/file_logger_tests.h @@ -20,7 +20,7 @@ template class TestClFileLogger : public NEO::ClFileLogger { public: TestClFileLogger(TestFileLogger &baseLoggerInm, const NEO::DebugVariables &flags) - : NEO::ClFileLogger(baseLoggerInm, flags), baseLogger(baseLoggerInm) { ; } + : NEO::ClFileLogger(baseLoggerInm, flags), baseLogger(baseLoggerInm) { baseLogger.useRealFiles(false); } protected: TestFileLogger &baseLogger; diff --git a/shared/source/utilities/logger.cpp b/shared/source/utilities/logger.cpp index 2942d7ba62..0d5413bd85 100644 --- a/shared/source/utilities/logger.cpp +++ b/shared/source/utilities/logger.cpp @@ -45,7 +45,11 @@ FileLogger::~FileLogger() = default; template void FileLogger::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 diff --git a/shared/test/common/utilities/logger_tests.h b/shared/test/common/utilities/logger_tests.h index 66f357bbea..69f05091b3 100644 --- a/shared/test/common/utilities/logger_tests.h +++ b/shared/test/common/utilities/logger_tests.h @@ -35,12 +35,20 @@ class TestFileLogger : public NEO::FileLogger { } } + 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::writeToFile(filename, str, length, mode); + if (mockFileSystem == false) { + NEO::FileLogger::writeToFile(filename, str, length, mode); + return; + } + writeDataToFile(filename.c_str(), str, length); } int32_t createdFilesCount() { @@ -54,6 +62,9 @@ class TestFileLogger : public NEO::FileLogger { std::string getFileString(std::string filename) { return NEO::virtualFileList[filename].str(); } + + protected: + bool mockFileSystem = false; }; using FullyEnabledFileLogger = TestFileLogger; diff --git a/shared/test/unit_test/debug_settings/debug_settings_manager_tests.cpp b/shared/test/unit_test/debug_settings/debug_settings_manager_tests.cpp index 2e650dae6c..836a3e128b 100644 --- a/shared/test/unit_test/debug_settings/debug_settings_manager_tests.cpp +++ b/shared/test/unit_test/debug_settings/debug_settings_manager_tests.cpp @@ -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) { diff --git a/shared/test/unit_test/utilities/logger_tests.cpp b/shared/test/unit_test/utilities/logger_tests.cpp index bce333dad5..d3ab0f65fa 100644 --- a/shared/test/unit_test/utilities/logger_tests.cpp +++ b/shared/test/unit_test/utilities/logger_tests.cpp @@ -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);