From ef6a528ae014a6c48725a9cfaabb9ace019f10ce Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Fri, 3 Nov 2023 16:50:10 -0400 Subject: [PATCH] tests: randomize port used in multicast transport tests Change-Id: I6030317ad10cf6f3c81f29c2a3898b41a1982c0e --- daemon/face/udp-protocol.hpp | 5 ++- .../face/multicast-udp-transport-fixture.hpp | 41 ++++++++++--------- tests/daemon/face/tcp-transport-fixture.hpp | 30 +++++++------- .../face/unicast-udp-transport-fixture.hpp | 12 +++--- .../face/unix-stream-transport-fixture.hpp | 32 ++++++--------- .../face/websocket-transport-fixture.hpp | 12 +++--- 6 files changed, 64 insertions(+), 68 deletions(-) diff --git a/daemon/face/udp-protocol.hpp b/daemon/face/udp-protocol.hpp index 1004c3ca..11bf8ac1 100644 --- a/daemon/face/udp-protocol.hpp +++ b/daemon/face/udp-protocol.hpp @@ -46,7 +46,7 @@ computeMtu(const Endpoint& localEndpoint); inline Endpoint getDefaultMulticastGroup() { - return {boost::asio::ip::make_address_v4(0xE00017AA), 56363}; + return {boost::asio::ip::address_v4(0xE00017AA), 56363}; } /** @@ -55,7 +55,8 @@ getDefaultMulticastGroup() inline Endpoint getDefaultMulticastGroupV6() { - return {boost::asio::ip::make_address_v6("FF02::1234"), 56363}; + return {boost::asio::ip::address_v6({0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x34}), 56363}; } } // namespace nfd::udp diff --git a/tests/daemon/face/multicast-udp-transport-fixture.hpp b/tests/daemon/face/multicast-udp-transport-fixture.hpp index 40c79eeb..7f126e9d 100644 --- a/tests/daemon/face/multicast-udp-transport-fixture.hpp +++ b/tests/daemon/face/multicast-udp-transport-fixture.hpp @@ -34,6 +34,8 @@ #include "tests/daemon/face/dummy-link-service.hpp" #include "tests/daemon/face/transport-test-common.hpp" +#include + namespace nfd::tests { namespace ip = boost::asio::ip; @@ -49,7 +51,7 @@ protected: ip::address mcastAddr; if (address.is_v4()) { // the administratively scoped group 224.0.0.254 is reserved for experimentation (RFC 4727) - mcastAddr = ip::make_address_v4(0xE00000FE); + mcastAddr = ip::make_address_v4("224.0.0.254"); } else { // the group FF0X::114 is reserved for experimentation at all scope levels (RFC 4727) @@ -57,22 +59,22 @@ protected: v6Addr.scope_id(netif->getIndex()); mcastAddr = v6Addr; } - mcastEp = udp::endpoint(mcastAddr, 7373); - remoteMcastEp = udp::endpoint(mcastAddr, 8383); + mcastEp = udp::endpoint(mcastAddr, m_randomPort(ndn::random::getRandomNumberEngine())); + m_remoteMcastEp = udp::endpoint(mcastAddr, m_randomPort(ndn::random::getRandomNumberEngine())); - MulticastUdpTransport::openRxSocket(remoteSockRx, mcastEp, address); - MulticastUdpTransport::openTxSocket(remoteSockTx, udp::endpoint(address, 0), &*netif, true); + MulticastUdpTransport::openRxSocket(m_remoteSockRx, mcastEp, address); + MulticastUdpTransport::openTxSocket(m_remoteSockTx, udp::endpoint(address, 0), &*netif, true); udp::socket sockRx(g_io); udp::socket sockTx(g_io); - MulticastUdpTransport::openRxSocket(sockRx, remoteMcastEp, address); + MulticastUdpTransport::openRxSocket(sockRx, m_remoteMcastEp, address); MulticastUdpTransport::openTxSocket(sockTx, udp::endpoint(address, txPort), &*netif, true); - face = make_unique(make_unique(), - make_unique(mcastEp, std::move(sockRx), std::move(sockTx), - ndn::nfd::LINK_TYPE_MULTI_ACCESS)); - transport = static_cast(face->getTransport()); - receivedPackets = &static_cast(face->getLinkService())->receivedPackets; + m_face = make_unique(make_unique(), + make_unique(mcastEp, std::move(sockRx), std::move(sockTx), + ndn::nfd::LINK_TYPE_MULTI_ACCESS)); + transport = static_cast(m_face->getTransport()); + receivedPackets = &static_cast(m_face->getLinkService())->receivedPackets; BOOST_REQUIRE_EQUAL(transport->getState(), face::TransportState::UP); } @@ -80,8 +82,8 @@ protected: void remoteRead(std::vector& buf, bool needToCheck = true) { - remoteSockRx.async_receive(boost::asio::buffer(buf), - [this, needToCheck] (const boost::system::error_code& error, size_t) { + m_remoteSockRx.async_receive(boost::asio::buffer(buf), + [this, needToCheck] (const auto& error, size_t) { if (needToCheck) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); } @@ -93,14 +95,14 @@ protected: void remoteWrite(const std::vector& buf, bool needToCheck = true) { - sendToGroup(remoteSockTx, buf, needToCheck); + sendToGroup(m_remoteSockTx, buf, needToCheck); limitedIo.defer(1_s); } void sendToGroup(udp::socket& sock, const std::vector& buf, bool needToCheck = true) const { - sock.async_send_to(boost::asio::buffer(buf), remoteMcastEp, + sock.async_send_to(boost::asio::buffer(buf), m_remoteMcastEp, [needToCheck] (const auto& error, size_t) { if (needToCheck) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); @@ -116,10 +118,11 @@ protected: std::vector* receivedPackets = nullptr; private: - unique_ptr face; - udp::endpoint remoteMcastEp; - udp::socket remoteSockRx{g_io}; - udp::socket remoteSockTx{g_io}; + std::uniform_int_distribution m_randomPort{10000}; + udp::endpoint m_remoteMcastEp; + udp::socket m_remoteSockRx{g_io}; + udp::socket m_remoteSockTx{g_io}; + unique_ptr m_face; }; } // namespace nfd::tests diff --git a/tests/daemon/face/tcp-transport-fixture.hpp b/tests/daemon/face/tcp-transport-fixture.hpp index 01114e16..688028e8 100644 --- a/tests/daemon/face/tcp-transport-fixture.hpp +++ b/tests/daemon/face/tcp-transport-fixture.hpp @@ -46,12 +46,12 @@ protected: void startAccept(const tcp::endpoint& remoteEp) { - BOOST_REQUIRE(!acceptor.is_open()); - acceptor.open(remoteEp.protocol()); - acceptor.set_option(boost::asio::socket_base::reuse_address(true)); - acceptor.bind(remoteEp); - acceptor.listen(1); - acceptor.async_accept(remoteSocket, [this] (const boost::system::error_code& error) { + BOOST_REQUIRE(!m_acceptor.is_open()); + m_acceptor.open(remoteEp.protocol()); + m_acceptor.set_option(boost::asio::socket_base::reuse_address(true)); + m_acceptor.bind(remoteEp); + m_acceptor.listen(1); + m_acceptor.async_accept(remoteSocket, [this] (const auto& error) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); limitedIo.afterOp(); }); @@ -60,8 +60,8 @@ protected: void stopAccept() { - BOOST_REQUIRE(acceptor.is_open()); - acceptor.close(); + BOOST_REQUIRE(m_acceptor.is_open()); + m_acceptor.close(); } void @@ -72,7 +72,7 @@ protected: startAccept(remoteEp); tcp::socket sock(g_io); - sock.async_connect(remoteEp, [this] (const boost::system::error_code& error) { + sock.async_connect(remoteEp, [this] (const auto& error) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); limitedIo.afterOp(); }); @@ -89,10 +89,10 @@ protected: scope = ndn::nfd::FACE_SCOPE_NON_LOCAL; } - face = make_unique(make_unique(), - make_unique(std::move(sock), persistency, scope)); - transport = static_cast(face->getTransport()); - receivedPackets = &static_cast(face->getLinkService())->receivedPackets; + m_face = make_unique(make_unique(), + make_unique(std::move(sock), persistency, scope)); + transport = static_cast(m_face->getTransport()); + receivedPackets = &static_cast(m_face->getLinkService())->receivedPackets; BOOST_REQUIRE_EQUAL(transport->getState(), face::TransportState::UP); } @@ -117,8 +117,8 @@ protected: std::vector* receivedPackets = nullptr; private: - tcp::acceptor acceptor{g_io}; - unique_ptr face; + tcp::acceptor m_acceptor{g_io}; + unique_ptr m_face; }; } // namespace nfd::tests diff --git a/tests/daemon/face/unicast-udp-transport-fixture.hpp b/tests/daemon/face/unicast-udp-transport-fixture.hpp index 24d7e265..474d520f 100644 --- a/tests/daemon/face/unicast-udp-transport-fixture.hpp +++ b/tests/daemon/face/unicast-udp-transport-fixture.hpp @@ -53,10 +53,10 @@ protected: remoteConnect(address); - face = make_unique(make_unique(), - make_unique(std::move(sock), persistency, 3_s)); - transport = static_cast(face->getTransport()); - receivedPackets = &static_cast(face->getLinkService())->receivedPackets; + m_face = make_unique(make_unique(), + make_unique(std::move(sock), persistency, 3_s)); + transport = static_cast(m_face->getTransport()); + receivedPackets = &static_cast(m_face->getLinkService())->receivedPackets; BOOST_REQUIRE_EQUAL(transport->getState(), face::TransportState::UP); } @@ -75,7 +75,7 @@ protected: remoteRead(std::vector& buf, bool needToCheck = true) { remoteSocket.async_receive(boost::asio::buffer(buf), - [this, needToCheck] (const boost::system::error_code& error, size_t) { + [this, needToCheck] (const auto& error, size_t) { if (needToCheck) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); } @@ -104,7 +104,7 @@ protected: std::vector* receivedPackets = nullptr; private: - unique_ptr face; + unique_ptr m_face; }; } // namespace nfd::tests diff --git a/tests/daemon/face/unix-stream-transport-fixture.hpp b/tests/daemon/face/unix-stream-transport-fixture.hpp index 2590cda8..43b1ad05 100644 --- a/tests/daemon/face/unix-stream-transport-fixture.hpp +++ b/tests/daemon/face/unix-stream-transport-fixture.hpp @@ -80,14 +80,6 @@ public: class UnixStreamTransportFixture : public GlobalIoFixture { protected: - UnixStreamTransportFixture() - : transport(nullptr) - , remoteSocket(g_io) - , receivedPackets(nullptr) - , acceptor(g_io) - { - } - [[nodiscard]] std::tuple checkPreconditions() const { @@ -98,13 +90,13 @@ protected: initialize() { unix_stream::socket sock(g_io); - acceptor.async_accept(sock, [this] (const boost::system::error_code& error) { + m_acceptor.async_accept(sock, [this] (const auto& error) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); limitedIo.afterOp(); }); - unix_stream::endpoint remoteEp(acceptor.local_endpoint()); - remoteSocket.async_connect(remoteEp, [this] (const boost::system::error_code& error) { + unix_stream::endpoint remoteEp(m_acceptor.local_endpoint()); + remoteSocket.async_connect(remoteEp, [this] (const auto& error) { BOOST_REQUIRE_EQUAL(error, boost::system::errc::success); limitedIo.afterOp(); }); @@ -112,10 +104,10 @@ protected: BOOST_REQUIRE_EQUAL(limitedIo.run(2, 1_s), LimitedIo::EXCEED_OPS); localEp = sock.local_endpoint(); - face = make_unique(make_unique(), - make_unique(std::move(sock))); - transport = static_cast(face->getTransport()); - receivedPackets = &static_cast(face->getLinkService())->receivedPackets; + m_face = make_unique(make_unique(), + make_unique(std::move(sock))); + transport = static_cast(m_face->getTransport()); + receivedPackets = &static_cast(m_face->getLinkService())->receivedPackets; BOOST_REQUIRE_EQUAL(transport->getState(), face::TransportState::UP); } @@ -134,14 +126,14 @@ protected: protected: LimitedIo limitedIo; - UnixStreamTransport* transport; + UnixStreamTransport* transport = nullptr; unix_stream::endpoint localEp; - unix_stream::socket remoteSocket; - std::vector* receivedPackets; + unix_stream::socket remoteSocket{g_io}; + std::vector* receivedPackets = nullptr; private: - AcceptorWithCleanup acceptor; - unique_ptr face; + AcceptorWithCleanup m_acceptor{g_io}; + unique_ptr m_face; }; } // namespace nfd::tests diff --git a/tests/daemon/face/websocket-transport-fixture.hpp b/tests/daemon/face/websocket-transport-fixture.hpp index c6f25da7..ce13198a 100644 --- a/tests/daemon/face/websocket-transport-fixture.hpp +++ b/tests/daemon/face/websocket-transport-fixture.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2022, Regents of the University of California, + * Copyright (c) 2014-2023, Regents of the University of California, * Arizona Board of Regents, * Colorado State University, * University Pierre & Marie Curie, Sorbonne University, @@ -103,10 +103,10 @@ protected: BOOST_REQUIRE_EQUAL(limitedIo.run(2, // serverHandleOpen, clientHandleOpen 1_s), LimitedIo::EXCEED_OPS); - face = make_unique(make_unique(), - make_unique(serverHdl, server, pingInterval)); - transport = static_cast(face->getTransport()); - serverReceivedPackets = &static_cast(face->getLinkService())->receivedPackets; + m_face = make_unique(make_unique(), + make_unique(serverHdl, server, pingInterval)); + transport = static_cast(m_face->getTransport()); + serverReceivedPackets = &static_cast(m_face->getLinkService())->receivedPackets; BOOST_REQUIRE_EQUAL(transport->getState(), face::TransportState::UP); } @@ -205,7 +205,7 @@ protected: std::vector clientReceivedMessages; private: - unique_ptr face; + unique_ptr m_face; }; } // namespace nfd::tests