Mercurial > irccd
changeset 404:91fc587ddae0
Tests: randomize port for concurrent tests
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 11 Jan 2017 15:10:36 +0100 |
parents | 8b7d1366c75c |
children | 31837008f7e2 |
files | libirccd-test/irccd/command-tester.cpp libirccd/irccd/transport.cpp libirccd/irccd/transport.hpp |
diffstat | 3 files changed, 21 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd-test/irccd/command-tester.cpp Wed Jan 11 14:46:09 2017 +0100 +++ b/libirccd-test/irccd/command-tester.cpp Wed Jan 11 15:10:36 2017 +0100 @@ -32,8 +32,11 @@ log::setLogger(std::make_unique<log::SilentLogger>()); log::setVerbose(false); - m_irccd.transports().add(std::make_unique<TransportServerIp>("*", 5000)); - m_irccdctl.client().connect(net::ipv4::pton("127.0.0.1", 5000)); + auto tpt = std::make_unique<TransportServerIp>("*", 0); + auto port = tpt->port(); + + m_irccd.transports().add(std::move(tpt)); + m_irccdctl.client().connect(net::ipv4::pton("127.0.0.1", port)); if (cmd) m_irccd.commands().add(std::move(cmd));
--- a/libirccd/irccd/transport.cpp Wed Jan 11 14:46:09 2017 +0100 +++ b/libirccd/irccd/transport.cpp Wed Jan 11 15:10:36 2017 +0100 @@ -394,6 +394,15 @@ m_socket.listen(); } +std::uint16_t TransportServerIp::port() const +{ + auto addr = m_socket.getsockname(); + + return addr.domain() == AF_INET + ? ntohs(addr.as<sockaddr_in>().sin_port) + : ntohs(addr.as<sockaddr_in6>().sin6_port); +} + /* * TransportServerTls * ------------------------------------------------------------------
--- a/libirccd/irccd/transport.hpp Wed Jan 11 14:46:09 2017 +0100 +++ b/libirccd/irccd/transport.hpp Wed Jan 11 15:10:36 2017 +0100 @@ -350,6 +350,13 @@ IRCCD_EXPORT TransportServerIp(const std::string &address, std::uint16_t port, std::uint8_t mode = v4); + + /** + * Get the associated port. + * + * \return the port + */ + std::uint16_t port() const; }; #if defined(WITH_SSL)