From 13e9135935da599c95e7ea656eaf2e9897ec64a3 Mon Sep 17 00:00:00 2001 From: gabime Date: Tue, 27 Aug 2019 19:45:21 +0300 Subject: [PATCH] Update test_backtrace.cpp --- tests/test_backtrace.cpp | 52 +++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/tests/test_backtrace.cpp b/tests/test_backtrace.cpp index 2cef6215..4c6f123f 100644 --- a/tests/test_backtrace.cpp +++ b/tests/test_backtrace.cpp @@ -1,5 +1,6 @@ #include "includes.h" #include "test_sink.h" +#include "spdlog/async.h" @@ -11,7 +12,7 @@ TEST_CASE("bactrace1", "[bactrace]") auto test_sink = std::make_shared(); int backtrace_size = 5; - spdlog::logger logger("test", test_sink); + spdlog::logger logger("test-backtrace", test_sink); logger.set_pattern("%v"); logger.enable_backtrace(backtrace_size); @@ -23,14 +24,47 @@ TEST_CASE("bactrace1", "[bactrace]") REQUIRE(test_sink->lines()[0] == "info message"); logger.dump_backtrace(); - REQUIRE(test_sink->lines().size() == 8); + REQUIRE(test_sink->lines().size() == backtrace_size +3); REQUIRE(test_sink->lines()[1] == "****************** Backtrace Start ******************"); - - for(int i = 0; i < backtrace_size; i++) - { - REQUIRE(test_sink->lines()[i+2] == fmt::format("debug message {}", 100 - backtrace_size + i)); - } - REQUIRE(test_sink->lines()[7] == "****************** Backtrace End ********************"); - + REQUIRE(test_sink->lines()[2] == "debug message 95"); + REQUIRE(test_sink->lines()[3] == "debug message 96"); + REQUIRE(test_sink->lines()[4] == "debug message 97"); + REQUIRE(test_sink->lines()[5] == "debug message 98"); + REQUIRE(test_sink->lines()[6] == "debug message 99"); + REQUIRE(test_sink->lines()[7] == "****************** Backtrace End ********************"); +} + + +TEST_CASE("bactrace-async", "[bactrace]") +{ + using spdlog::sinks::test_sink_mt; + auto test_sink = std::make_shared(); + using spdlog::details::os::sleep_for_millis; + + int backtrace_size = 5; + + spdlog::init_thread_pool(120, 1); + auto logger = std::make_shared("test-bactrace-async", test_sink, spdlog::thread_pool()); + logger->set_pattern("%v"); + logger->enable_backtrace(backtrace_size); + + logger->info("info message"); + for(int i = 0; i < 100; i++) + logger->debug("debug message {}", i); + + sleep_for_millis(10); + REQUIRE(test_sink->lines().size() == 1); + REQUIRE(test_sink->lines()[0] == "info message"); + + logger->dump_backtrace(); + sleep_for_millis(100); // give time for the async dump to complete + REQUIRE(test_sink->lines().size() == backtrace_size +3); + REQUIRE(test_sink->lines()[1] == "****************** Backtrace Start ******************"); + REQUIRE(test_sink->lines()[2] == "debug message 95"); + REQUIRE(test_sink->lines()[3] == "debug message 96"); + REQUIRE(test_sink->lines()[4] == "debug message 97"); + REQUIRE(test_sink->lines()[5] == "debug message 98"); + REQUIRE(test_sink->lines()[6] == "debug message 99"); + REQUIRE(test_sink->lines()[7] == "****************** Backtrace End ********************"); }