From fa1015bbcb15453a4a47be51490d1d28c837151e Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 20 Mar 2026 15:52:03 +0100 Subject: [PATCH] refactor: Use NodeClock::time_point for m_connected Also, increase the precision to the native one, over prescribing second precision. --- src/bench/peer_eviction.cpp | 12 +++--- src/net.cpp | 8 ++-- src/net.h | 4 +- src/net_processing.cpp | 15 ++++---- src/node/eviction.cpp | 2 +- src/node/eviction.h | 2 +- src/qt/guiutil.cpp | 5 +-- src/qt/guiutil.h | 2 +- src/qt/rpcconsole.cpp | 2 +- src/rpc/net.cpp | 2 +- src/test/fuzz/node_eviction.cpp | 2 +- src/test/net_peer_eviction_tests.cpp | 56 ++++++++++++++-------------- src/test/util/net.cpp | 2 +- 13 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/bench/peer_eviction.cpp b/src/bench/peer_eviction.cpp index 2360fb49de7..24b78e3179c 100644 --- a/src/bench/peer_eviction.cpp +++ b/src/bench/peer_eviction.cpp @@ -41,7 +41,7 @@ static void EvictionProtection0Networks250Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/250, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_network = NET_IPV4; }); } @@ -52,7 +52,7 @@ static void EvictionProtection1Networks250Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/250, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; if (c.id >= 130 && c.id < 240) { // 110 Tor c.m_network = NET_ONION; @@ -68,7 +68,7 @@ static void EvictionProtection2Networks250Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/250, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; if (c.id >= 90 && c.id < 160) { // 70 Tor c.m_network = NET_ONION; @@ -86,7 +86,7 @@ static void EvictionProtection3Networks050Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/50, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 28 || c.id == 47); // 2 localhost if (c.id >= 30 && c.id < 47) { // 17 I2P c.m_network = NET_I2P; @@ -104,7 +104,7 @@ static void EvictionProtection3Networks100Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/100, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id >= 55 && c.id < 60); // 5 localhost if (c.id >= 70 && c.id < 80) { // 10 I2P c.m_network = NET_I2P; @@ -122,7 +122,7 @@ static void EvictionProtection3Networks250Candidates(benchmark::Bench& bench) bench, /*num_candidates=*/250, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id >= 140 && c.id < 160); // 20 localhost if (c.id >= 170 && c.id < 180) { // 10 I2P c.m_network = NET_I2P; diff --git a/src/net.cpp b/src/net.cpp index 7152f62a691..d046c2a2722 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -566,7 +566,7 @@ void CNode::CloseSocketDisconnect() m_addr_name.c_str(), ConnectionTypeAsString().c_str(), ConnectedThroughNetwork(), - Ticks(m_connected)); + TicksSinceEpoch(m_connected)); } m_i2p_sam_session.reset(); } @@ -1727,7 +1727,7 @@ bool CConnman::AttemptToEvictConnection() pnode->m_addr_name.c_str(), pnode->ConnectionTypeAsString().c_str(), pnode->ConnectedThroughNetwork(), - Ticks(pnode->m_connected)); + TicksSinceEpoch(pnode->m_connected)); pnode->fDisconnect = true; return true; } @@ -2007,7 +2007,7 @@ void CConnman::NotifyNumConnectionsChanged() bool CConnman::ShouldRunInactivityChecks(const CNode& node, NodeClock::time_point now) const { - return node.m_connected + m_peer_connect_timeout < now.time_since_epoch(); + return node.m_connected + m_peer_connect_timeout < now; } bool CConnman::InactivityCheck(const CNode& node, NodeClock::time_point now) const @@ -3987,7 +3987,7 @@ CNode::CNode(NodeId idIn, : m_transport{MakeTransport(idIn, node_opts.use_v2transport, conn_type_in == ConnectionType::INBOUND)}, m_permission_flags{node_opts.permission_flags}, m_sock{sock}, - m_connected{GetTime()}, + m_connected{NodeClock::now()}, addr{addrIn}, addrBind{addrBindIn}, m_addr_name{addrNameIn.empty() ? addr.ToStringAddrPort() : addrNameIn}, diff --git a/src/net.h b/src/net.h index 4f082b4efde..928d518eda6 100644 --- a/src/net.h +++ b/src/net.h @@ -196,7 +196,7 @@ public: NodeClock::time_point m_last_recv; std::chrono::seconds m_last_tx_time; std::chrono::seconds m_last_block_time; - std::chrono::seconds m_connected; + NodeClock::time_point m_connected; std::string m_addr_name; int nVersion; std::string cleanSubVer; @@ -710,7 +710,7 @@ public: std::atomic m_last_send{NodeClock::epoch}; std::atomic m_last_recv{NodeClock::epoch}; //! Unix epoch time at peer connection - const std::chrono::seconds m_connected; + const NodeClock::time_point m_connected; // Address of this peer const CAddress addr; // Bind address of our side of the connection diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 6b35242608b..16d3f6112d3 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -561,7 +561,7 @@ private: void ConsiderEviction(CNode& pto, Peer& peer, std::chrono::seconds time_in_seconds) EXCLUSIVE_LOCKS_REQUIRED(cs_main, g_msgproc_mutex); /** If we have extra outbound peers, try to disconnect the one with the oldest block announcement */ - void EvictExtraOutboundPeers(std::chrono::seconds now) EXCLUSIVE_LOCKS_REQUIRED(cs_main); + void EvictExtraOutboundPeers(NodeClock::time_point now) EXCLUSIVE_LOCKS_REQUIRED(cs_main); /** Retrieve unbroadcast transactions from the mempool and reattempt sending to peers */ void ReattemptInitialBroadcast(CScheduler& scheduler) EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex); @@ -5261,7 +5261,7 @@ void PeerManagerImpl::ConsiderEviction(CNode& pto, Peer& peer, std::chrono::seco } } -void PeerManagerImpl::EvictExtraOutboundPeers(std::chrono::seconds now) +void PeerManagerImpl::EvictExtraOutboundPeers(NodeClock::time_point now) { // If we have any extra block-relay-only peers, disconnect the youngest unless // it's given us a block -- in which case, compare with the second-youngest, and @@ -5302,7 +5302,7 @@ void PeerManagerImpl::EvictExtraOutboundPeers(std::chrono::seconds now) return true; } else { LogDebug(BCLog::NET, "keeping block-relay-only peer=%d chosen for eviction (connect time: %d, blocks_in_flight: %d)\n", - pnode->GetId(), count_seconds(pnode->m_connected), node_state->vBlocksInFlight.size()); + pnode->GetId(), TicksSinceEpoch(pnode->m_connected), node_state->vBlocksInFlight.size()); } return false; }); @@ -5353,7 +5353,7 @@ void PeerManagerImpl::EvictExtraOutboundPeers(std::chrono::seconds now) return true; } else { LogDebug(BCLog::NET, "keeping outbound peer=%d chosen for eviction (connect time: %d, blocks_in_flight: %d)\n", - pnode->GetId(), count_seconds(pnode->m_connected), state.vBlocksInFlight.size()); + pnode->GetId(), TicksSinceEpoch(pnode->m_connected), state.vBlocksInFlight.size()); return false; } }); @@ -5373,9 +5373,10 @@ void PeerManagerImpl::CheckForStaleTipAndEvictPeers() { LOCK(cs_main); + const auto current_time{NodeClock::now()}; auto now{GetTime()}; - EvictExtraOutboundPeers(now); + EvictExtraOutboundPeers(current_time); if (now > m_stale_tip_check_time) { // Check whether our tip is stale, and if so, allow using an extra @@ -5740,7 +5741,7 @@ bool PeerManagerImpl::SendMessages(CNode& node) // Also in CConnman::PushMessage() we make sure that unwanted messages are // not sent. This here is just an optimization. if (node.IsPrivateBroadcastConn()) { - if (node.m_connected + PRIVATE_BROADCAST_MAX_CONNECTION_LIFETIME < current_time) { + if (node.m_connected + PRIVATE_BROADCAST_MAX_CONNECTION_LIFETIME < now) { LogDebug(BCLog::PRIVBROADCAST, "Disconnecting: did not complete the transaction send within %d seconds, %s", count_seconds(PRIVATE_BROADCAST_MAX_CONNECTION_LIFETIME), node.LogPeer()); node.fDisconnect = true; @@ -5748,7 +5749,7 @@ bool PeerManagerImpl::SendMessages(CNode& node) return true; } - if (node.IsAddrFetchConn() && current_time - node.m_connected > 10 * AVG_ADDRESS_BROADCAST_INTERVAL) { + if (node.IsAddrFetchConn() && now - node.m_connected > 10 * AVG_ADDRESS_BROADCAST_INTERVAL) { LogDebug(BCLog::NET, "addrfetch connection timeout, %s", node.DisconnectMsg()); node.fDisconnect = true; return true; diff --git a/src/node/eviction.cpp b/src/node/eviction.cpp index a2267813826..0914ed73a31 100644 --- a/src/node/eviction.cpp +++ b/src/node/eviction.cpp @@ -218,7 +218,7 @@ void ProtectEvictionCandidatesByRatio(std::vector& evicti // (vEvictionCandidates is already sorted by reverse connect time) uint64_t naMostConnections; unsigned int nMostConnections = 0; - std::chrono::seconds nMostConnectionsTime{0}; + NodeClock::time_point nMostConnectionsTime{NodeClock::epoch}; std::map > mapNetGroupNodes; for (const NodeEvictionCandidate &node : vEvictionCandidates) { std::vector &group = mapNetGroupNodes[node.nKeyedNetGroup]; diff --git a/src/node/eviction.h b/src/node/eviction.h index 7230d959df2..3cd40feb38f 100644 --- a/src/node/eviction.h +++ b/src/node/eviction.h @@ -17,7 +17,7 @@ typedef int64_t NodeId; struct NodeEvictionCandidate { NodeId id; - std::chrono::seconds m_connected; + NodeClock::time_point m_connected; NodeClock::duration m_min_ping_time; std::chrono::seconds m_last_block_time; std::chrono::seconds m_last_tx_time; diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index e0210b0570f..e0966b9c38e 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -743,10 +743,9 @@ QString formatDurationStr(std::chrono::nanoseconds dur) return str_list.join(" "); } -QString FormatPeerAge(std::chrono::seconds time_connected) +QString FormatPeerAge(NodeClock::time_point connected) { - const auto time_now{GetTime()}; - const auto age{time_now - time_connected}; + const auto age{NodeClock::now() - connected}; if (age >= 24h) return QObject::tr("%1 d").arg(age / 24h); if (age >= 1h) return QObject::tr("%1 h").arg(age / 1h); if (age >= 1min) return QObject::tr("%1 m").arg(age / 1min); diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 90b8013ef0d..57d042f6c82 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -232,7 +232,7 @@ namespace GUIUtil QString formatDurationStr(std::chrono::nanoseconds dur); /** Convert peer connection time to a QString denominated in the most relevant unit. */ - QString FormatPeerAge(std::chrono::seconds time_connected); + QString FormatPeerAge(NodeClock::time_point connected); /** Format CNodeStats.nServices bitmask into a user-readable string */ QString formatServicesStr(quint64 mask); diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index fef1f687208..4c69ec29dd7 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -1167,7 +1167,7 @@ void RPCConsole::updateDetailWidget() ui->peerHighBandwidth->setText(bip152_hb_settings); const auto now{NodeClock::now()}; const auto time_now{GetTime()}; - ui->peerConnTime->setText(GUIUtil::formatDurationStr(time_now - stats->nodeStats.m_connected)); + ui->peerConnTime->setText(GUIUtil::formatDurationStr(now - stats->nodeStats.m_connected)); ui->peerLastBlock->setText(TimeDurationField(time_now, stats->nodeStats.m_last_block_time)); ui->peerLastTx->setText(TimeDurationField(time_now, stats->nodeStats.m_last_tx_time)); ui->peerLastSend->setText(TimeDurationField(now, stats->nodeStats.m_last_send)); diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index ff2adf82d37..08dafdeed23 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -248,7 +248,7 @@ static RPCHelpMan getpeerinfo() obj.pushKV("last_block", count_seconds(stats.m_last_block_time)); obj.pushKV("bytessent", stats.nSendBytes); obj.pushKV("bytesrecv", stats.nRecvBytes); - obj.pushKV("conntime", count_seconds(stats.m_connected)); + obj.pushKV("conntime", TicksSinceEpoch(stats.m_connected)); obj.pushKV("timeoffset", Ticks(statestats.time_offset)); if (stats.m_last_ping_time > 0us) { obj.pushKV("pingtime", Ticks(stats.m_last_ping_time)); diff --git a/src/test/fuzz/node_eviction.cpp b/src/test/fuzz/node_eviction.cpp index 2ecc91a05e3..562ece8be47 100644 --- a/src/test/fuzz/node_eviction.cpp +++ b/src/test/fuzz/node_eviction.cpp @@ -23,7 +23,7 @@ FUZZ_TARGET(node_eviction) { eviction_candidates.push_back({ /*id=*/fuzzed_data_provider.ConsumeIntegral(), - /*m_connected=*/ConsumeTime(fuzzed_data_provider).time_since_epoch(), + /*m_connected=*/ConsumeTime(fuzzed_data_provider), /*m_min_ping_time=*/ConsumeDuration(fuzzed_data_provider, /*min=*/std::chrono::years{-1}, /*max=*/decltype(CNode::m_min_ping_time.load())::max()), /*m_last_block_time=*/ConsumeTime(fuzzed_data_provider).time_since_epoch(), /*m_last_tx_time=*/ConsumeTime(fuzzed_data_provider).time_since_epoch(), diff --git a/src/test/net_peer_eviction_tests.cpp b/src/test/net_peer_eviction_tests.cpp index 5dc2061a188..ab55b75f1ac 100644 --- a/src/test/net_peer_eviction_tests.cpp +++ b/src/test/net_peer_eviction_tests.cpp @@ -68,7 +68,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // to be protected from eviction. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; c.m_network = NET_IPV4; }, @@ -79,7 +79,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // Verify in the opposite direction. BOOST_CHECK(IsProtected( num_peers, [num_peers](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{num_peers - c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{num_peers - c.id}}; c.m_is_local = false; c.m_network = NET_IPV6; }, @@ -104,7 +104,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // sorted by longest uptime (lowest m_connected), if no localhost, I2P or CJDNS peers. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; c.m_network = (c.id == 3 || c.id > 7) ? NET_ONION : NET_IPV6; }, @@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // sorted by longest uptime (lowest m_connected), if no onion, I2P, or CJDNS peers. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id > 6); c.m_network = NET_IPV6; }, @@ -150,7 +150,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by longest uptime (lowest m_connected), if no onion, localhost, or CJDNS peers. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; c.m_network = (c.id == 4 || c.id > 8) ? NET_I2P : NET_IPV6; }, @@ -173,7 +173,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by longest uptime (lowest m_connected), if no onion, localhost, or I2P peers. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; c.m_network = (c.id == 4 || c.id > 8) ? NET_CJDNS : NET_IPV6; }, @@ -188,7 +188,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // stable sort breaks tie with array order of localhost first. BOOST_CHECK(IsProtected( 4, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 4); c.m_network = (c.id == 3) ? NET_ONION : NET_IPV4; }, @@ -201,7 +201,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // uptime; stable sort breaks tie with array order of localhost first. BOOST_CHECK(IsProtected( 7, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6); c.m_network = (c.id == 5) ? NET_ONION : NET_IPV4; }, @@ -214,7 +214,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by uptime; stable sort breaks tie with array order of localhost first. BOOST_CHECK(IsProtected( 8, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6); c.m_network = (c.id == 5) ? NET_ONION : NET_IPV4; }, @@ -227,7 +227,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // uptime; stable sort breaks ties with the array order of localhost first. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6 || c.id == 9 || c.id == 11); c.m_network = (c.id == 7 || c.id == 8 || c.id == 10) ? NET_ONION : NET_IPV6; }, @@ -239,7 +239,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // protect 2 localhost and 1 onion, plus 3 other peers, sorted by longest uptime. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id > 4 && c.id < 9); c.m_network = (c.id == 10) ? NET_ONION : NET_IPV4; }, @@ -251,7 +251,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // protect 2 localhost and 2 onions, plus 4 other peers, sorted by longest uptime. BOOST_CHECK(IsProtected( 16, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6 || c.id == 9 || c.id == 11 || c.id == 12); c.m_network = (c.id == 8 || c.id == 10) ? NET_ONION : NET_IPV6; }, @@ -264,7 +264,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // others, sorted by longest uptime. BOOST_CHECK(IsProtected( 16, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id > 10); c.m_network = (c.id == 10) ? NET_ONION : NET_IPV4; }, @@ -277,7 +277,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // plus 4 others, sorted by longest uptime. BOOST_CHECK(IsProtected( 16, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 15); c.m_network = (c.id > 6 && c.id < 11) ? NET_ONION : NET_IPV6; }, @@ -290,7 +290,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // others, sorted by longest uptime. BOOST_CHECK(IsProtected( num_peers, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = false; if (c.id == 8 || c.id == 10) { c.m_network = NET_ONION; @@ -311,7 +311,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by longest uptime; stable sort breaks tie with array order of I2P first. BOOST_CHECK(IsProtected( 4, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 2); if (c.id == 3) { c.m_network = NET_I2P; @@ -330,7 +330,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by longest uptime; stable sort breaks tie with array order of I2P first. BOOST_CHECK(IsProtected( 7, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 4); if (c.id == 6) { c.m_network = NET_I2P; @@ -349,7 +349,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // by uptime; stable sort breaks tie with array order of I2P then localhost. BOOST_CHECK(IsProtected( 8, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6); if (c.id == 5) { c.m_network = NET_I2P; @@ -368,7 +368,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // for 8 total, sorted by longest uptime. BOOST_CHECK(IsProtected( 16, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 6 || c.id > 11); if (c.id == 7 || c.id == 11) { c.m_network = NET_I2P; @@ -387,7 +387,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // sorted by longest uptime. BOOST_CHECK(IsProtected( 24, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 12); if (c.id > 14 && c.id < 23) { // 4 protected instead of usual 2 c.m_network = NET_I2P; @@ -406,7 +406,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // unused localhost slot), plus 6 others for 12/24 total, sorted by longest uptime. BOOST_CHECK(IsProtected( 24, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 15); if (c.id == 12 || c.id == 14 || c.id == 17) { c.m_network = NET_I2P; @@ -425,7 +425,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // for 12/24 total, sorted by longest uptime. BOOST_CHECK(IsProtected( 24, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 13); if (c.id > 16) { c.m_network = NET_I2P; @@ -444,7 +444,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // sorted by longest uptime. BOOST_CHECK(IsProtected( 24, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id > 15); if (c.id > 10 && c.id < 15) { c.m_network = NET_CJDNS; @@ -466,7 +466,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // order of CJDNS first. BOOST_CHECK(IsProtected( 5, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 3); if (c.id == 4) { c.m_network = NET_CJDNS; @@ -488,7 +488,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // array order of CJDNS first. BOOST_CHECK(IsProtected( 7, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 4); if (c.id == 6) { c.m_network = NET_CJDNS; @@ -510,7 +510,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // array order of CJDNS first. BOOST_CHECK(IsProtected( 8, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 3); if (c.id == 5) { c.m_network = NET_CJDNS; @@ -531,7 +531,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // total), plus 4 others for 8 total, sorted by longest uptime. BOOST_CHECK(IsProtected( 16, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id > 5); if (c.id == 11 || c.id == 15) { c.m_network = NET_CJDNS; @@ -552,7 +552,7 @@ BOOST_AUTO_TEST_CASE(peer_protection_test) // total), plus 6 others for 12/24 total, sorted by longest uptime. BOOST_CHECK(IsProtected( 24, [](NodeEvictionCandidate& c) { - c.m_connected = std::chrono::seconds{c.id}; + c.m_connected = NodeSeconds{std::chrono::seconds{c.id}}; c.m_is_local = (c.id == 13); if (c.id > 17) { c.m_network = NET_CJDNS; diff --git a/src/test/util/net.cpp b/src/test/util/net.cpp index 73e5a58d5d9..f20dda419bf 100644 --- a/src/test/util/net.cpp +++ b/src/test/util/net.cpp @@ -140,7 +140,7 @@ std::vector GetRandomNodeEvictionCandidates(int n_candida for (int id = 0; id < n_candidates; ++id) { candidates.push_back({ .id=id, - .m_connected=std::chrono::seconds{random_context.randrange(100)}, + .m_connected=NodeSeconds{std::chrono::seconds{random_context.randrange(100)}}, .m_min_ping_time=std::chrono::microseconds{random_context.randrange(100)}, .m_last_block_time=std::chrono::seconds{random_context.randrange(100)}, .m_last_tx_time=std::chrono::seconds{random_context.randrange(100)},