From 0d7570a12b9ca47616885704fddbb44ac22bc58e Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Tue, 11 Dec 2018 20:33:19 +0100 Subject: [PATCH] tests: add libdlog base unit tests Change-Id: I9d489ed607d9917aaf782339b7db700259955ac9 Signed-off-by: Michal Bloch --- Makefile.am | 5 ++ src/libdlog/log.c | 8 ++-- src/tests/libdlog_base.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 src/tests/libdlog_base.c diff --git a/Makefile.am b/Makefile.am index 3711e52..eebdd31 100644 --- a/Makefile.am +++ b/Makefile.am @@ -189,6 +189,7 @@ check_PROGRAMS = \ src/tests/dynamic_config \ src/tests/libdlog_pipe \ src/tests/libdlog_android \ + src/tests/libdlog_base \ src/tests/filters check_CFLAGS = $(AM_CFLAGS) -O0 -fprofile-arcs -ftest-coverage @@ -224,6 +225,10 @@ src_tests_libdlog_android_SOURCES = src/tests/libdlog_android.c src/libdlog/log_ src_tests_libdlog_android_CFLAGS = $(check_CFLAGS) src_tests_libdlog_android_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev +src_tests_libdlog_base_SOURCES = src/tests/libdlog_base.c src/libdlog/log.c src/shared/logcommon.c src/shared/logconfig.c +src_tests_libdlog_base_CFLAGS = $(check_CFLAGS) +src_tests_libdlog_base_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=log_config_read + src_tests_config_SOURCES = src/tests/config.c src/shared/logconfig.c src/shared/logcommon.c src_tests_config_CFLAGS = $(check_CFLAGS) src_tests_config_LDFLAGS = $(AM_LDFLAGS) diff --git a/src/libdlog/log.c b/src/libdlog/log.c index 7c93a1a..fb499fa 100644 --- a/src/libdlog/log.c +++ b/src/libdlog/log.c @@ -70,9 +70,9 @@ static int limiter_apply_to_all_buffers; * @param[in] msg The contents of the message. * @return DLOG_ERROR_NOT_PERMITTED */ -static int __write_to_log_null(log_id_t log_id, log_priority prio, const char *tag, const char *msg)// LCOV_EXCL_LINE +static int __write_to_log_null(log_id_t log_id, log_priority prio, const char *tag, const char *msg) { - return DLOG_ERROR_NOT_PERMITTED; // LCOV_EXCL_LINE + return DLOG_ERROR_NOT_PERMITTED; } static void __configure_limiter(struct log_config *config) @@ -173,7 +173,7 @@ static void __configure(void) return; failure: - log_config_free(&config); // LCOV_EXCL_LINE + log_config_free(&config); return; } @@ -244,7 +244,6 @@ static int dlog_check_limiter(log_id_t log_id, int prio, const char *tag) if (dynamic_config) __dynamic_config_update(); - // LCOV_EXCL_START : disabled feature (limiter) if (limiter) { pthread_mutex_lock(&log_init_lock); int should_log = __log_limiter_pass_log(tag, prio); @@ -258,7 +257,6 @@ static int dlog_check_limiter(log_id_t log_id, int prio, const char *tag) return DLOG_ERROR_NOT_PERMITTED; } } - // LCOV_EXCL_STOP if (!plog[log_id]) return DLOG_ERROR_NOT_PERMITTED; diff --git a/src/tests/libdlog_base.c b/src/tests/libdlog_base.c new file mode 100644 index 0000000..7b6a501 --- /dev/null +++ b/src/tests/libdlog_base.c @@ -0,0 +1,116 @@ +// C +#include +#include +#include +#include + +// DLog +#include +#include + +extern int (*write_to_log)(log_id_t, log_priority, const char *tag, const char *msg); +void __attribute__((destructor)) __dlog_fini(void); + +void __log_limiter_update(struct log_config *config) { } +void __log_limiter_destroy(void) { } +void __dynamic_config_destroy() { } + +int wtl_android(log_id_t buf_id, log_priority pri, const char *tag, const char *msg) { return 45835705; } +int wtl_pipe (log_id_t buf_id, log_priority pri, const char *tag, const char *msg) { return 0xDECC16; } +void __dlog_init_android(const struct log_config *conf) { write_to_log = wtl_android; } +void __dlog_init_pipe (const struct log_config *conf) { write_to_log = wtl_pipe; } + +static struct log_config CONFIG; +static bool fail_conf_read; +static bool conf_read_called; +int __wrap_log_config_read(struct log_config *config) +{ + conf_read_called = true; + if (fail_conf_read) + return -1; + + config->begin = config->last = NULL; + log_config_copy(config, &CONFIG); + return 0; +} + +int limiter_ret; +int __log_limiter_pass_log(const char* tag, int prio) { return limiter_ret; } + +static bool limiter_created; +int __log_limiter_create(struct log_config *config) +{ + limiter_created = true; + return 1; +} + +static bool use_dynamic_conf; +bool __dynamic_config_create(struct log_config *config) { return use_dynamic_conf; } + +static bool dynamic_config_called; +void __dynamic_config_update() { dynamic_config_called = true; } + +int main() +{ + __dlog_fini(); + __dlog_fini(); + + fail_conf_read = true; + assert(dlog_print(DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NOT_PERMITTED); + assert(write_to_log != wtl_android); + assert(write_to_log != wtl_pipe); + fail_conf_read = false; + __dlog_fini(); + + assert(dlog_print(DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NOT_PERMITTED); + assert(write_to_log != wtl_android); + assert(write_to_log != wtl_pipe); + conf_read_called = false; + assert(dlog_print(DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NOT_PERMITTED); + assert(!conf_read_called); // no duplicate init + __dlog_fini(); + + log_config_set(&CONFIG, "backend", "Hej, zamawiam Bentoye. Czekam do 11:15."); + assert(dlog_print(DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NOT_PERMITTED); + assert(write_to_log != wtl_pipe); + assert(write_to_log != wtl_android); + __dlog_fini(); + + log_config_set(&CONFIG, "backend", "pipe"); + log_config_set(&CONFIG, "limiter", "0"); + assert(dlog_print(DLOG_ERROR, "tag", "msg") == 0xDECC16); + assert(!dynamic_config_called); + assert(write_to_log == wtl_pipe); + assert(!limiter_created); + __dlog_fini(); + + log_config_set(&CONFIG, "backend", "logger"); + log_config_set(&CONFIG, "limiter", "1"); + log_config_set(&CONFIG, "debugmode", "0"); + use_dynamic_conf = true; + limiter_ret = 1; + assert( dlog_print( DLOG_ERROR, "tag", "msg") == 45835705); + assert(__dlog_print(LOG_ID_MAIN, DLOG_ERROR, "tag", "msg") == 45835705); + assert(write_to_log != wtl_pipe); // ceci n'est pas une pipe + assert(write_to_log == wtl_android); + assert(limiter_created); + assert(dynamic_config_called); + + limiter_ret = 0; + assert( dlog_print( DLOG_ERROR, "tag", "msg") == 45835705); + assert(__dlog_print(LOG_ID_MAIN, DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NONE); + limiter_ret = -1; + assert( dlog_print( DLOG_ERROR, "tag", "msg") == 45835705); + assert(__dlog_print(LOG_ID_MAIN, DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NONE); + + assert(__dlog_print((log_id_t) -1, DLOG_ERROR, "tag", "msg") == DLOG_ERROR_INVALID_PARAMETER); + assert(__dlog_print( LOG_ID_MAIN, DLOG_ERROR, NULL , "msg") == DLOG_ERROR_INVALID_PARAMETER); + assert(__dlog_print( LOG_ID_MAIN, DLOG_DEBUG, "tag", "msg") == DLOG_ERROR_NONE); // limited + + limiter_ret = 1; + __dlog_fini(); + + log_config_set(&CONFIG, "enable_system", "0"); + assert(__dlog_print(LOG_ID_SYSTEM, DLOG_ERROR, "tag", "msg") == DLOG_ERROR_NONE); + __dlog_fini(); +} -- 2.7.4