// // Copyright (c) 2025 Marcelo Zimbres Silva (mzimbres@gmail.com), // Ruben Perez Hidalgo (rubenperez038 at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #include #include #include #include #include #include #include #include "common.hpp" #include #include #include #include using boost::system::error_code; namespace net = boost::asio; using namespace boost::redis; namespace { template void run_with_invalid_config(net::io_context& ioc, Conn& conn) { config cfg; cfg.use_ssl = true; cfg.unix_socket = "/tmp/sock"; conn.async_run(cfg, [](error_code ec) { BOOST_TEST_NE(ec, error_code()); }); ioc.run_for(test_timeout); } template void test_connection_constructor_executor_1() { // Setup net::io_context ioc; std::vector messages; logger lgr(logger::level::info, [&](logger::level, std::string_view msg) { messages.emplace_back(msg); }); Conn conn{ioc.get_executor(), std::move(lgr)}; // Produce some logging run_with_invalid_config(ioc, conn); // Some logging was produced BOOST_TEST_EQ(messages.size(), 1u); } template void test_connection_constructor_context_1() { // Setup net::io_context ioc; std::vector messages; logger lgr(logger::level::info, [&](logger::level, std::string_view msg) { messages.emplace_back(msg); }); Conn conn{ioc, std::move(lgr)}; // Produce some logging run_with_invalid_config(ioc, conn); // Some logging was produced BOOST_TEST_EQ(messages.size(), 1u); } template void test_connection_constructor_executor_2() { // Setup net::io_context ioc; std::vector messages; logger lgr(logger::level::info, [&](logger::level, std::string_view msg) { messages.emplace_back(msg); }); Conn conn{ ioc.get_executor(), net::ssl::context{net::ssl::context::tlsv12_client}, std::move(lgr)}; // Produce some logging run_with_invalid_config(ioc, conn); // Some logging was produced BOOST_TEST_EQ(messages.size(), 1u); } template void test_connection_constructor_context_2() { // Setup net::io_context ioc; std::vector messages; logger lgr(logger::level::info, [&](logger::level, std::string_view msg) { messages.emplace_back(msg); }); Conn conn{ioc, net::ssl::context{net::ssl::context::tlsv12_client}, std::move(lgr)}; // Produce some logging run_with_invalid_config(ioc, conn); // Some logging was produced BOOST_TEST_EQ(messages.size(), 1u); } void test_disable_logging() { // Setup net::io_context ioc; std::vector messages; logger lgr(logger::level::disabled, [&](logger::level, std::string_view msg) { messages.emplace_back(msg); }); connection conn{ioc, std::move(lgr)}; // Produce some logging run_with_invalid_config(ioc, conn); // Some logging was produced BOOST_TEST_EQ(messages.size(), 0u); } } // namespace int main() { // basic_connection using basic_conn_t = basic_connection; test_connection_constructor_executor_1(); test_connection_constructor_executor_2(); test_connection_constructor_context_1(); test_connection_constructor_context_2(); // connection test_connection_constructor_executor_1(); test_connection_constructor_executor_2(); test_connection_constructor_context_1(); test_connection_constructor_context_2(); test_disable_logging(); return boost::report_errors(); }