From 8b2f4e2b6190fadc6f6a653603438766e9abcef0 Mon Sep 17 00:00:00 2001 From: qicosmos Date: Thu, 9 Oct 2025 17:47:42 +0800 Subject: [PATCH] add tests for server --- include/rest_rpc/rpc_server.hpp | 4 ---- tests/test_rest_rpc.cpp | 34 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/include/rest_rpc/rpc_server.hpp b/include/rest_rpc/rpc_server.hpp index c7a6597..7b86d2d 100644 --- a/include/rest_rpc/rpc_server.hpp +++ b/include/rest_rpc/rpc_server.hpp @@ -135,10 +135,6 @@ private: auto it = endpoints.begin(); - if (it == endpoints.end()) { - return std::make_error_code(std::errc::bad_address); - } - auto endpoint = it->endpoint(); acceptor_.open(endpoint.protocol(), ec); if (ec) { diff --git a/tests/test_rest_rpc.cpp b/tests/test_rest_rpc.cpp index 72538f7..557c0ca 100644 --- a/tests/test_rest_rpc.cpp +++ b/tests/test_rest_rpc.cpp @@ -400,6 +400,8 @@ TEST_CASE("test reconnect") { rpc_server server("127.0.0.1:9004"); server.async_start(); rpc_server server1("127.0.0.1:9005"); + server1.set_check_conn_interval(std::chrono::milliseconds(100)); + server1.set_conn_max_age(std::chrono::milliseconds(200)); server1.async_start(); rpc_client client{}; @@ -408,7 +410,12 @@ TEST_CASE("test reconnect") { ec = sync_wait(get_global_executor(), client.connect("127.0.0.1:9005")); CHECK(!ec); - ec = sync_wait(get_global_executor(), client.connect("127.0.0.1:9006")); + CHECK(server1.connection_count() == 1); + std::this_thread::sleep_for(std::chrono::milliseconds(600)); + // expired connection has been removed. + CHECK(server1.connection_count() == 0); + + ec = sync_wait(get_global_executor(), client.connect("127.0.0.1:9999")); CHECK(ec); REST_LOG_INFO << ec.message(); ec = sync_wait( @@ -428,6 +435,31 @@ TEST_CASE("test reconnect") { REST_LOG_INFO << ec.message(); } +TEST_CASE("test server address") { + rpc_server server("127.0.0.1", "9004"); + server.enable_tcp_no_delay(false); + auto ec = server.async_start(); + CHECK(!ec); + + server.register_handler(); + server.remove_handler("add"); + CHECK_NOTHROW(server.register_handler()); + server.remove_handler(); + CHECK_NOTHROW(server.register_handler()); + + rpc_server server1("127.0.0.x:9004"); + ec = server1.async_start(); + CHECK(ec); + REST_LOG_INFO << ec.message(); + + rpc_server server2("127.0.0.1:9005"); + std::thread thd([&] { server2.start(); }); + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + std::thread thd2([&] { server2.stop(); }); + thd2.join(); + thd.join(); +} + // doctest comments // 'function' : must be 'attribute' - see issue #182 DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4007)