From 2336acaf9826b123035ac483ec2b8ef7399a774e Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Wed, 31 Jan 2018 20:23:48 +0100 Subject: [PATCH 1/2] tests: override some criteriod_log() functions in order to use spdlog style log output --- fpga/tests/CMakeLists.txt | 1 + fpga/tests/logging.cpp | 101 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 fpga/tests/logging.cpp diff --git a/fpga/tests/CMakeLists.txt b/fpga/tests/CMakeLists.txt index 152413de1..843c1b6a6 100644 --- a/fpga/tests/CMakeLists.txt +++ b/fpga/tests/CMakeLists.txt @@ -1,6 +1,7 @@ set(SOURCES main.cpp fpga.cpp + logging.cpp # dma.c fifo.cpp # hls.c diff --git a/fpga/tests/logging.cpp b/fpga/tests/logging.cpp new file mode 100644 index 000000000..64be9274f --- /dev/null +++ b/fpga/tests/logging.cpp @@ -0,0 +1,101 @@ +#include +#include + +#include +#include + +#include +#include + +extern "C" { + /* We override criterions function here */ + void criterion_log_noformat(enum criterion_severity severity, const char *msg); + void criterion_plog(enum criterion_logging_level level, const struct criterion_prefix_data *prefix, const char *msg, ...); + void criterion_vlog(enum criterion_logging_level level, const char *msg, va_list args); +} + +struct criterion_prefix_data { + const char *prefix; + const char *color; +}; + +static void format_msg(char *buf, size_t buflen, const char *msg, va_list args) +{ + int len = vsnprintf(buf, buflen, msg, args); + + /* Strip new line */ + char *nl = strchr(buf, '\n'); + if (nl) + *nl = 0; +} + +void criterion_log_noformat(enum criterion_severity severity, const char *msg) +{ + auto logger = loggerGetOrCreate("criterion"); + + switch (severity) { + case CR_LOG_INFO: + logger->info(msg); + break; + + case CR_LOG_WARNING: + logger->warn(msg); + break; + + case CR_LOG_ERROR: + logger->error(msg); + break; + } +} + +void criterion_vlog(enum criterion_logging_level level, const char *msg, va_list args) +{ + char formatted_msg[1024]; + + if (level < criterion_options.logging_threshold) + return; + + format_msg(formatted_msg, sizeof(formatted_msg), msg, args); + + auto logger = loggerGetOrCreate("criterion"); + logger->info(formatted_msg); +} + +void criterion_plog(enum criterion_logging_level level, const struct criterion_prefix_data *prefix, const char *msg, ...) +{ + char formatted_msg[1024]; + + va_list args; + + if (level < criterion_options.logging_threshold) + return; + + va_start(args, msg); + format_msg(formatted_msg, sizeof(formatted_msg), msg, args); + va_end(args); + + auto logger = loggerGetOrCreate("criterion"); + + if (strstr(formatted_msg, "Warning")) + logger->warn(formatted_msg); + else if (strstr(formatted_msg, "Failed")) + logger->error(formatted_msg); + else if(!strcmp(prefix->prefix, "----") && !strcmp(prefix->color, "\33[0;34m")) + logger->info(formatted_msg); + else if (!strcmp(prefix->prefix, "----") && !strcmp(prefix->color, "\33[1;30m")) + logger->debug(formatted_msg); + else if (!strcmp(prefix->prefix, "====")) + logger->info(formatted_msg); + else if (!strcmp(prefix->prefix, "RUN ")) + logger->info("Run: {}", formatted_msg); + else if (!strcmp(prefix->prefix, "SKIP")) + logger->info("Skip: {}", formatted_msg); + else if (!strcmp(prefix->prefix, "PASS")) + logger->info("Pass: {}", formatted_msg); + else if (!strcmp(prefix->prefix, "FAIL")) + logger->error("Fail: {}", formatted_msg); + else if (!strcmp(prefix->prefix, "WARN")) + logger->warn(formatted_msg); + else if (!strcmp(prefix->prefix, "ERR ")) + logger->error(formatted_msg); +} From 8206f867a56a23fe3ed214d833826326175a29ec Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Wed, 31 Jan 2018 20:24:11 +0100 Subject: [PATCH 2/2] logging: use similar log style in all modules --- fpga/include/villas/plugin.hpp | 2 +- fpga/tests/graph.cpp | 15 ++++----------- fpga/tests/main.cpp | 2 -- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/fpga/include/villas/plugin.hpp b/fpga/include/villas/plugin.hpp index c07501e83..35a4912ba 100644 --- a/fpga/include/villas/plugin.hpp +++ b/fpga/include/villas/plugin.hpp @@ -81,7 +81,7 @@ public: protected: static SpdLogger getStaticLogger() - { return loggerGetOrCreate("Plugin"); } + { return loggerGetOrCreate("plugin"); } private: /* Just using a standard std::list<> to hold plugins is problematic, because diff --git a/fpga/tests/graph.cpp b/fpga/tests/graph.cpp index b49659e5c..2dd8e6c9b 100644 --- a/fpga/tests/graph.cpp +++ b/fpga/tests/graph.cpp @@ -4,23 +4,16 @@ #include #include -static void init_graph() -{ - spdlog::set_pattern("[%T] [%l] [%n] %v"); - spdlog::set_level(spdlog::level::debug); -} - TestSuite(graph, - .init = init_graph, .description = "Graph library" ); Test(graph, basic, .description = "DirectedGraph") { - auto logger = loggerGetOrCreate("unittest:basic"); + auto logger = loggerGetOrCreate("test:graph:basic"); logger->info("Testing basic graph construction and modification"); - villas::graph::DirectedGraph<> g("unittest:basic"); + villas::graph::DirectedGraph<> g("test:graph:basic"); std::shared_ptr v1(new villas::graph::Vertex); std::shared_ptr v2(new villas::graph::Vertex); @@ -48,11 +41,11 @@ Test(graph, basic, .description = "DirectedGraph") Test(graph, path, .description = "Find path") { - auto logger = loggerGetOrCreate("unittest:path"); + auto logger = loggerGetOrCreate("test:graph:path"); logger->info("Testing path finding algorithm"); using Graph = villas::graph::DirectedGraph<>; - Graph g("unittest:path"); + Graph g("test:graph:path"); std::shared_ptr v1(new villas::graph::Vertex); std::shared_ptr v2(new villas::graph::Vertex); diff --git a/fpga/tests/main.cpp b/fpga/tests/main.cpp index 844e3b64b..beb56f6b9 100644 --- a/fpga/tests/main.cpp +++ b/fpga/tests/main.cpp @@ -64,8 +64,6 @@ int main(int argc, char *argv[]) { int ret; - auto logger = loggerGetOrCreate("unittest"); - spdlog::set_pattern("[%T] [%l] [%n] %v"); spdlog::set_level(spdlog::level::debug); /* Run criterion tests */