diff --git a/tests/test_async.cpp b/tests/test_async.cpp index 2d86dafd..ce1d6ed8 100644 --- a/tests/test_async.cpp +++ b/tests/test_async.cpp @@ -103,30 +103,42 @@ TEST_CASE("multi threads", "[async]") TEST_CASE("to_file", "[async]") { - prepare_logdir(); - size_t queue_size = 512; - size_t messages = 512; - size_t n_threads = 4; - spdlog::init_thread_pool(queue_size, n_threads); - auto logger = spdlog::basic_logger_mt("as", "logs/async_test.log", true); + prepare_logdir(); + size_t messages = 1024; + size_t tp_threads = 1; + std::string filename = "logs/async_test.log"; + { + auto file_sink = std::make_shared(filename, true); + auto tp = std::make_shared(messages, tp_threads); + auto logger = std::make_shared("as", std::move(file_sink), std::move(tp)); - std::vector threads; - for (size_t i = 0; i < n_threads; i++) - { - threads.emplace_back([logger, messages] { - for (size_t j = 0; j < messages; j++) - { - logger->info("Hello message #{}", j); - } - }); - } - - for (auto &t : threads) - { - t.join(); - } - logger.reset(); - spdlog::drop("as"); - std::this_thread::sleep_for(std::chrono::seconds(1)); - REQUIRE(count_lines("logs/async_test.log") == messages * n_threads); + for (size_t j = 0; j < messages; j++) + { + logger->info("Hello message #{}", j); + } + } + + REQUIRE(count_lines(filename) == messages); + auto contents = file_contents(filename); + REQUIRE(ends_with (contents, std::string("Hello message #1023") + SPDLOG_EOL)); +} + +TEST_CASE("to_file multi-workers", "[async]") +{ + prepare_logdir(); + size_t messages = 1024*10; + size_t tp_threads = 10; + std::string filename = "logs/async_test.log"; + { + auto file_sink = std::make_shared(filename, true); + auto tp = std::make_shared(messages, tp_threads); + auto logger = std::make_shared("as", std::move(file_sink), std::move(tp)); + + for (size_t j = 0; j < messages; j++) + { + logger->info("Hello message #{}", j); + } + } + + REQUIRE(count_lines(filename) == messages); }