From 02c1d4efd8baec486f049b4450049d486352b6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Alusarczyk?= Date: Mon, 22 Sep 2025 09:46:05 +0200 Subject: [PATCH 1/4] use fileline in logs in developer mode instead of funcion name --- src/utils/utils_log.h | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/utils/utils_log.h b/src/utils/utils_log.h index c0e0a9572..eced32395 100644 --- a/src/utils/utils_log.h +++ b/src/utils/utils_log.h @@ -24,17 +24,25 @@ typedef enum { LOG_FATAL } utils_log_level_t; -#define LOG_DEBUG(...) utils_log(LOG_DEBUG, __func__, __VA_ARGS__); -#define LOG_INFO(...) utils_log(LOG_INFO, __func__, __VA_ARGS__); -#define LOG_WARN(...) utils_log(LOG_WARNING, __func__, __VA_ARGS__); -#define LOG_ERR(...) utils_log(LOG_ERROR, __func__, __VA_ARGS__); -#define LOG_FATAL(...) utils_log(LOG_FATAL, __func__, __VA_ARGS__); - -#define LOG_PDEBUG(...) utils_plog(LOG_DEBUG, __func__, __VA_ARGS__); -#define LOG_PINFO(...) utils_plog(LOG_INFO, __func__, __VA_ARGS__); -#define LOG_PWARN(...) utils_plog(LOG_WARNING, __func__, __VA_ARGS__); -#define LOG_PERR(...) utils_plog(LOG_ERROR, __func__, __VA_ARGS__); -#define LOG_PFATAL(...) utils_plog(LOG_FATAL, __func__, __VA_ARGS__); +#ifdef UMF_DEVELOPER_MODE +#define UMF_STRINGIFY(x) #x +#define UMF_TOSTRING(x) UMF_STRINGIFY(x) +#define UMF_FUNC_DESC() __FILE__ ":" UMF_TOSTRING(__LINE__) +#else +#define UMF_FUNC_DESC() __func__ +#endif + +#define LOG_DEBUG(...) utils_log(LOG_DEBUG, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_INFO(...) utils_log(LOG_INFO, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_WARN(...) utils_log(LOG_WARNING, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_ERR(...) utils_log(LOG_ERROR, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_FATAL(...) utils_log(LOG_FATAL, UMF_FUNC_DESC(), __VA_ARGS__); + +#define LOG_PDEBUG(...) utils_plog(LOG_DEBUG, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_PINFO(...) utils_plog(LOG_INFO, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_PWARN(...) utils_plog(LOG_WARNING, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_PERR(...) utils_plog(LOG_ERROR, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_PFATAL(...) utils_plog(LOG_FATAL, UMF_FUNC_DESC(), __VA_ARGS__); void utils_log_init(void); #ifdef _WIN32 From c6774a01850a9164277ede9d0a9cee8ff37fd360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Alusarczyk?= Date: Mon, 22 Sep 2025 13:25:08 +0200 Subject: [PATCH 2/4] fix log tests and README --- README.md | 2 +- test/utils/utils_log.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e73b8b727..8ee5b62b7 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ List of options provided by CMake: | UMF_BUILD_EXAMPLES | Build UMF examples | ON/OFF | ON | | UMF_BUILD_FUZZTESTS | Build UMF fuzz tests (supported only on Linux with Clang) | ON/OFF | OFF | | UMF_BUILD_GPU_EXAMPLES | Build UMF GPU examples | ON/OFF | OFF | -| UMF_DEVELOPER_MODE | Enable additional developer checks | ON/OFF | OFF | +| UMF_DEVELOPER_MODE | Enable additional developer checks and logs | ON/OFF | OFF | | UMF_FORMAT_CODE_STYLE | Add clang, cmake, and black -format-check and -format-apply targets to make | ON/OFF | OFF | | UMF_TESTS_FAIL_ON_SKIP | Treat skips in tests as fail | ON/OFF | OFF | | UMF_USE_ASAN | Enable AddressSanitizer checks | ON/OFF | OFF | diff --git a/test/utils/utils_log.cpp b/test/utils/utils_log.cpp index 16d035861..cd23a25b5 100644 --- a/test/utils/utils_log.cpp +++ b/test/utils/utils_log.cpp @@ -31,9 +31,11 @@ int fput_count = 0; int mock_fputs(const char *s, FILE *stream) { fput_count++; +#ifndef UMF_DEVELOPER_MODE if (!expected_message.empty()) { EXPECT_STREQ(s, expected_message.c_str()); } +#endif EXPECT_EQ(stream, expected_stream); return (int)strlen(s); } From e663501a441551a2cec1fa54005238c3e2e474b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Alusarczyk?= Date: Tue, 23 Sep 2025 11:02:56 +0200 Subject: [PATCH 3/4] add function name to logs in developer mode --- src/utils/utils_log.c | 23 +++++++------ src/utils/utils_log.h | 50 ++++++++++++++++------------ test/utils/utils_log.cpp | 70 ++++++++++++++++++++++++---------------- 3 files changed, 87 insertions(+), 56 deletions(-) diff --git a/src/utils/utils_log.c b/src/utils/utils_log.c index 57ab0ef93..73836cd9e 100644 --- a/src/utils/utils_log.c +++ b/src/utils/utils_log.c @@ -99,8 +99,8 @@ static const char *level_to_str(utils_log_level_t l) { #endif // _MSC_VER static void utils_log_internal(utils_log_level_t level, int perror, - const char *func, const char *format, - va_list args) { + const char *fileline, const char *func, + const char *format, va_list args) { if (!loggerConfig.output && level != LOG_FATAL) { return; //logger not enabled } @@ -115,7 +115,12 @@ static void utils_log_internal(utils_log_level_t level, int perror, char *b_pos = buffer; int b_size = sizeof(buffer); - int tmp = snprintf(b_pos, b_size, "%s: ", func); + int tmp = 0; + if (fileline == NULL) { + tmp = snprintf(b_pos, b_size, "%s: ", func); + } else { + tmp = snprintf(b_pos, b_size, "%s %s: ", fileline, func); + } ASSERT(tmp > 0); b_pos += (int)tmp; @@ -229,19 +234,19 @@ static void utils_log_internal(utils_log_level_t level, int perror, #pragma warning(pop) #endif // _MSC_VER -void utils_log(utils_log_level_t level, const char *func, const char *format, - ...) { +void utils_log(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...) { va_list args; va_start(args, format); - utils_log_internal(level, 0, func, format, args); + utils_log_internal(level, 0, fileline, func, format, args); va_end(args); } -void utils_plog(utils_log_level_t level, const char *func, const char *format, - ...) { +void utils_plog(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...) { va_list args; va_start(args, format); - utils_log_internal(level, 1, func, format, args); + utils_log_internal(level, 1, fileline, func, format, args); va_end(args); } diff --git a/src/utils/utils_log.h b/src/utils/utils_log.h index eced32395..15fdabec6 100644 --- a/src/utils/utils_log.h +++ b/src/utils/utils_log.h @@ -27,34 +27,44 @@ typedef enum { #ifdef UMF_DEVELOPER_MODE #define UMF_STRINGIFY(x) #x #define UMF_TOSTRING(x) UMF_STRINGIFY(x) -#define UMF_FUNC_DESC() __FILE__ ":" UMF_TOSTRING(__LINE__) +#define UMF_FILELINE_DESC() __FILE__ ":" UMF_TOSTRING(__LINE__) #else -#define UMF_FUNC_DESC() __func__ +#define UMF_FILELINE_DESC() NULL #endif -#define LOG_DEBUG(...) utils_log(LOG_DEBUG, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_INFO(...) utils_log(LOG_INFO, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_WARN(...) utils_log(LOG_WARNING, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_ERR(...) utils_log(LOG_ERROR, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_FATAL(...) utils_log(LOG_FATAL, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_DEBUG(...) \ + utils_log(LOG_DEBUG, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_INFO(...) \ + utils_log(LOG_INFO, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_WARN(...) \ + utils_log(LOG_WARNING, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_ERR(...) \ + utils_log(LOG_ERROR, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_FATAL(...) \ + utils_log(LOG_FATAL, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); -#define LOG_PDEBUG(...) utils_plog(LOG_DEBUG, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_PINFO(...) utils_plog(LOG_INFO, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_PWARN(...) utils_plog(LOG_WARNING, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_PERR(...) utils_plog(LOG_ERROR, UMF_FUNC_DESC(), __VA_ARGS__); -#define LOG_PFATAL(...) utils_plog(LOG_FATAL, UMF_FUNC_DESC(), __VA_ARGS__); +#define LOG_PDEBUG(...) \ + utils_plog(LOG_DEBUG, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_PINFO(...) \ + utils_plog(LOG_INFO, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_PWARN(...) \ + utils_plog(LOG_WARNING, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_PERR(...) \ + utils_plog(LOG_ERROR, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); +#define LOG_PFATAL(...) \ + utils_plog(LOG_FATAL, UMF_FILELINE_DESC(), __func__, __VA_ARGS__); void utils_log_init(void); #ifdef _WIN32 -void utils_log(utils_log_level_t level, const char *func, const char *format, - ...); -void utils_plog(utils_log_level_t level, const char *func, const char *format, - ...); +void utils_log(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...); +void utils_plog(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...); #else -void utils_log(utils_log_level_t level, const char *func, const char *format, - ...) __attribute__((format(printf, 3, 4))); -void utils_plog(utils_log_level_t level, const char *func, const char *format, - ...) __attribute__((format(printf, 3, 4))); +void utils_log(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...) __attribute__((format(printf, 4, 5))); +void utils_plog(utils_log_level_t level, const char *fileline, const char *func, + const char *format, ...) __attribute__((format(printf, 4, 5))); #endif extern const umf_ctl_node_t CTL_NODE(logger)[]; diff --git a/test/utils/utils_log.cpp b/test/utils/utils_log.cpp index cd23a25b5..e8cc53518 100644 --- a/test/utils/utils_log.cpp +++ b/test/utils/utils_log.cpp @@ -29,13 +29,19 @@ FILE *expected_stream = stderr; int expect_fput_count = 0; int fput_count = 0; +// Some test of logging are disabled because log macros add filename and line +// number to logs in developer mode, therefore check on exact log content fail. +#ifdef UMF_DEVELOPER_MODE +#define DISABLE_IN_DEVELOPER_MODE(TESTNAME) DISABLED_##TESTNAME +#else +#define DISABLE_IN_DEVELOPER_MODE(TESTNAME) TESTNAME +#endif + int mock_fputs(const char *s, FILE *stream) { fput_count++; -#ifndef UMF_DEVELOPER_MODE if (!expected_message.empty()) { EXPECT_STREQ(s, expected_message.c_str()); } -#endif EXPECT_EQ(stream, expected_stream); return (int)strlen(s); } @@ -144,7 +150,7 @@ void helper_checkConfig(utils_log_config_t *expected, utils_log_config_t *is) { EXPECT_EQ(expected->enablePid, is->enablePid); } -TEST_F(test, parseEnv_errors) { +TEST_F(test, DISABLE_IN_DEVELOPER_MODE(parseEnv_errors)) { expected_message = ""; loggerConfig = utils_log_config_t{false, false, LOG_ERROR, LOG_ERROR, NULL, ""}; @@ -170,7 +176,7 @@ TEST_F(test, parseEnv_errors) { helper_log_init(test_env.c_str()); } -TEST_F(test, parseEnv) { +TEST_F(test, DISABLE_IN_DEVELOPER_MODE(parseEnv)) { utils_log_config_t b = loggerConfig; expected_message = ""; @@ -263,10 +269,12 @@ TEST_F(test, parseEnv) { } } -template void helper_test_log(Args... args) { +template +void helper_test_log(utils_log_level_t level, const char *fileline, + const char *func, const char *format, Args... args) { fput_count = 0; fflush_count = 0; - utils_log(args...); + utils_log(level, fileline, func, format, args...); EXPECT_EQ(fput_count, expect_fput_count); EXPECT_EQ(fflush_count, expect_fflush_count); } @@ -305,8 +313,8 @@ TEST_F(test, log_levels) { } expected_message = "[" + helper_log_str(j) + " UMF] " + MOCK_FN_NAME + ": example log\n"; - helper_test_log((utils_log_level_t)j, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_log((utils_log_level_t)j, NULL, MOCK_FN_NAME.c_str(), + "%s", "example log"); } } } @@ -320,7 +328,8 @@ TEST_F(test, log_outputs) { loggerConfig = utils_log_config_t{false, false, LOG_DEBUG, LOG_DEBUG, o, ""}; expected_stream = o; - helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); } } @@ -338,8 +347,8 @@ TEST_F(test, flush_levels) { } expected_message = "[" + helper_log_str(j) + " UMF] " + MOCK_FN_NAME + ": example log\n"; - helper_test_log((utils_log_level_t)j, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_log((utils_log_level_t)j, NULL, MOCK_FN_NAME.c_str(), + "%s", "example log"); } } } @@ -351,12 +360,12 @@ TEST_F(test, long_log) { utils_log_config_t{false, false, LOG_DEBUG, LOG_DEBUG, stderr, ""}; expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.size(), 'x') + "\n"; - helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", + helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", std::string(8189 - MOCK_FN_NAME.size(), 'x').c_str()); expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.size(), 'x') + "[truncated...]\n"; - helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", + helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", std::string(8190 - MOCK_FN_NAME.size(), 'x').c_str()); } @@ -368,7 +377,7 @@ TEST_F(test, timestamp_log) { // TODO: for now we do not check output message, // as it requires more sophisticated message validation (a.k.a regrex) expected_message = ""; - helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, pid_log) { @@ -379,7 +388,7 @@ TEST_F(test, pid_log) { // TODO: for now we do not check output message, // as it requires more sophisticated message validation (a.k.a regrex) expected_message = ""; - helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, log_fatal) { @@ -391,10 +400,10 @@ TEST_F(test, log_fatal) { expected_message = "[FATAL UMF] " + MOCK_FN_NAME + ": example log\n"; strerror_ret_static = 0; - helper_test_log(LOG_FATAL, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_FATAL, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); } -TEST_F(test, log_macros) { +TEST_F(test, DISABLE_IN_DEVELOPER_MODE(log_macros)) { expected_stream = stderr; expect_fput_count = 1; expect_fflush_count = 1; @@ -437,10 +446,12 @@ TEST_F(test, log_macros) { EXPECT_EQ(fflush_count, expect_fflush_count); } -template void helper_test_plog(Args... args) { +template +void helper_test_plog(utils_log_level_t level, const char *fileline, + const char *func, const char *format, Args... args) { fput_count = 0; fflush_count = 0; - utils_plog(args...); + utils_plog(level, fileline, func, format, args...); EXPECT_EQ(fput_count, expect_fput_count); EXPECT_EQ(fflush_count, expect_fflush_count); } @@ -457,9 +468,11 @@ TEST_F(test, plog_basic) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": example log: test error\n"; strerror_ret_static = 1; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); } TEST_F(test, plog_invalid) { @@ -474,9 +487,11 @@ TEST_F(test, plog_invalid) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": example log: unknown error\n"; strerror_ret_static = 1; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); } TEST_F(test, plog_long_message) { @@ -492,12 +507,12 @@ TEST_F(test, plog_long_message) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8178 - MOCK_FN_NAME.length(), 'x') + ": test err" + "o[truncated...]\n"; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", std::string(8178 - MOCK_FN_NAME.length(), 'x').c_str()); expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.length(), 'x') + "[truncated...]\n"; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", std::string(8190 - MOCK_FN_NAME.length(), 'x').c_str()); } @@ -521,11 +536,12 @@ TEST_F(test, plog_long_error) { "[truncated...]\n"; #endif strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + "example log"); strerr = NULL; // do not use tmp.c_str() beyond its scope } -TEST_F(test, log_pmacros) { +TEST_F(test, DISABLE_IN_DEVELOPER_MODE(log_pmacros)) { expected_stream = stderr; expect_fput_count = 1; expect_fflush_count = 1; From 9cda82dbc84d6f7c579fdbe3fd94c8d4672d2944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=C5=9Alusarczyk?= Date: Tue, 23 Sep 2025 11:10:02 +0200 Subject: [PATCH 4/4] simplification --- test/utils/utils_log.cpp | 52 ++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/test/utils/utils_log.cpp b/test/utils/utils_log.cpp index e8cc53518..3a3dd19fa 100644 --- a/test/utils/utils_log.cpp +++ b/test/utils/utils_log.cpp @@ -270,11 +270,11 @@ TEST_F(test, DISABLE_IN_DEVELOPER_MODE(parseEnv)) { } template -void helper_test_log(utils_log_level_t level, const char *fileline, - const char *func, const char *format, Args... args) { +void helper_test_log(utils_log_level_t level, const char *func, + const char *format, Args... args) { fput_count = 0; fflush_count = 0; - utils_log(level, fileline, func, format, args...); + utils_log(level, NULL, func, format, args...); EXPECT_EQ(fput_count, expect_fput_count); EXPECT_EQ(fflush_count, expect_fflush_count); } @@ -313,8 +313,8 @@ TEST_F(test, log_levels) { } expected_message = "[" + helper_log_str(j) + " UMF] " + MOCK_FN_NAME + ": example log\n"; - helper_test_log((utils_log_level_t)j, NULL, MOCK_FN_NAME.c_str(), - "%s", "example log"); + helper_test_log((utils_log_level_t)j, MOCK_FN_NAME.c_str(), "%s", + "example log"); } } } @@ -328,8 +328,7 @@ TEST_F(test, log_outputs) { loggerConfig = utils_log_config_t{false, false, LOG_DEBUG, LOG_DEBUG, o, ""}; expected_stream = o; - helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); } } @@ -347,8 +346,8 @@ TEST_F(test, flush_levels) { } expected_message = "[" + helper_log_str(j) + " UMF] " + MOCK_FN_NAME + ": example log\n"; - helper_test_log((utils_log_level_t)j, NULL, MOCK_FN_NAME.c_str(), - "%s", "example log"); + helper_test_log((utils_log_level_t)j, MOCK_FN_NAME.c_str(), "%s", + "example log"); } } } @@ -360,12 +359,12 @@ TEST_F(test, long_log) { utils_log_config_t{false, false, LOG_DEBUG, LOG_DEBUG, stderr, ""}; expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.size(), 'x') + "\n"; - helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", std::string(8189 - MOCK_FN_NAME.size(), 'x').c_str()); expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.size(), 'x') + "[truncated...]\n"; - helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", std::string(8190 - MOCK_FN_NAME.size(), 'x').c_str()); } @@ -377,7 +376,7 @@ TEST_F(test, timestamp_log) { // TODO: for now we do not check output message, // as it requires more sophisticated message validation (a.k.a regrex) expected_message = ""; - helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, pid_log) { @@ -388,7 +387,7 @@ TEST_F(test, pid_log) { // TODO: for now we do not check output message, // as it requires more sophisticated message validation (a.k.a regrex) expected_message = ""; - helper_test_log(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, log_fatal) { @@ -400,7 +399,7 @@ TEST_F(test, log_fatal) { expected_message = "[FATAL UMF] " + MOCK_FN_NAME + ": example log\n"; strerror_ret_static = 0; - helper_test_log(LOG_FATAL, NULL, MOCK_FN_NAME.c_str(), "%s", "example log"); + helper_test_log(LOG_FATAL, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, DISABLE_IN_DEVELOPER_MODE(log_macros)) { @@ -447,11 +446,11 @@ TEST_F(test, DISABLE_IN_DEVELOPER_MODE(log_macros)) { } template -void helper_test_plog(utils_log_level_t level, const char *fileline, - const char *func, const char *format, Args... args) { +void helper_test_plog(utils_log_level_t level, const char *func, + const char *format, Args... args) { fput_count = 0; fflush_count = 0; - utils_plog(level, fileline, func, format, args...); + utils_plog(level, NULL, func, format, args...); EXPECT_EQ(fput_count, expect_fput_count); EXPECT_EQ(fflush_count, expect_fflush_count); } @@ -468,11 +467,9 @@ TEST_F(test, plog_basic) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": example log: test error\n"; strerror_ret_static = 1; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, plog_invalid) { @@ -487,11 +484,9 @@ TEST_F(test, plog_invalid) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": example log: unknown error\n"; strerror_ret_static = 1; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); } TEST_F(test, plog_long_message) { @@ -507,12 +502,12 @@ TEST_F(test, plog_long_message) { expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8178 - MOCK_FN_NAME.length(), 'x') + ": test err" + "o[truncated...]\n"; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", std::string(8178 - MOCK_FN_NAME.length(), 'x').c_str()); expected_message = "[DEBUG UMF] " + MOCK_FN_NAME + ": " + std::string(8189 - MOCK_FN_NAME.length(), 'x') + "[truncated...]\n"; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", std::string(8190 - MOCK_FN_NAME.length(), 'x').c_str()); } @@ -536,8 +531,7 @@ TEST_F(test, plog_long_error) { "[truncated...]\n"; #endif strerror_ret_static = 0; - helper_test_plog(LOG_DEBUG, NULL, MOCK_FN_NAME.c_str(), "%s", - "example log"); + helper_test_plog(LOG_DEBUG, MOCK_FN_NAME.c_str(), "%s", "example log"); strerr = NULL; // do not use tmp.c_str() beyond its scope }