diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp index aea29169bb3..ff2083dee0b 100644 --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -16,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -802,6 +803,7 @@ BOOST_AUTO_TEST_CASE(LocalAddress_BasicLifecycle) BOOST_AUTO_TEST_CASE(initial_advertise_from_version_message) { LOCK(NetEventsInterface::g_msgproc_mutex); + auto& connman{static_cast(*m_node.connman)}; // Tests the following scenario: // * -bind=3.4.5.6:20001 is specified @@ -845,22 +847,24 @@ BOOST_AUTO_TEST_CASE(initial_advertise_from_version_message) m_node.peerman->InitializeNode(peer, NODE_NETWORK); - std::atomic interrupt_dummy{false}; - std::chrono::microseconds time_received_dummy{0}; + m_node.peerman->SendMessages(&peer); + connman.FlushSendBuffer(peer); // Drop sent version message - const auto msg_version = + auto msg_version_receive = NetMsg::Make(NetMsgType::VERSION, PROTOCOL_VERSION, services, time, services, CAddress::V1_NETWORK(peer_us)); - DataStream msg_version_stream{msg_version.data}; + Assert(connman.ReceiveMsgFrom(peer, std::move(msg_version_receive))); + peer.fPauseSend = false; + bool more_work{connman.ProcessMessagesOnce(peer)}; + Assert(!more_work); - m_node.peerman->ProcessMessage( - peer, NetMsgType::VERSION, msg_version_stream, time_received_dummy, interrupt_dummy); - - const auto msg_verack = NetMsg::Make(NetMsgType::VERACK); - DataStream msg_verack_stream{msg_verack.data}; + m_node.peerman->SendMessages(&peer); + connman.FlushSendBuffer(peer); // Drop sent verack message + Assert(connman.ReceiveMsgFrom(peer, NetMsg::Make(NetMsgType::VERACK))); + peer.fPauseSend = false; // Will set peer.fSuccessfullyConnected to true (necessary in SendMessages()). - m_node.peerman->ProcessMessage( - peer, NetMsgType::VERACK, msg_verack_stream, time_received_dummy, interrupt_dummy); + more_work = connman.ProcessMessagesOnce(peer); + Assert(!more_work); // Ensure that peer_us_addr:bind_port is sent to the peer. const CService expected{peer_us_addr, bind_port};