mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
Use mockable time for peer connection time
This allows to revert the temporary commit
0bfb9208df
(test: fix test failures in
test/functional/p2p_timeouts.py).
This commit is contained in:
parent
fad7ead146
commit
fa663a4c0d
3 changed files with 8 additions and 3 deletions
|
@ -2975,7 +2975,7 @@ ServiceFlags CConnman::GetLocalServices() const
|
||||||
unsigned int CConnman::GetReceiveFloodSize() const { return nReceiveFloodSize; }
|
unsigned int CConnman::GetReceiveFloodSize() const { return nReceiveFloodSize; }
|
||||||
|
|
||||||
CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, SOCKET hSocketIn, const CAddress& addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress& addrBindIn, const std::string& addrNameIn, ConnectionType conn_type_in, bool inbound_onion)
|
CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, SOCKET hSocketIn, const CAddress& addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress& addrBindIn, const std::string& addrNameIn, ConnectionType conn_type_in, bool inbound_onion)
|
||||||
: nTimeConnected(GetTimeSeconds()),
|
: nTimeConnected{GetTime<std::chrono::seconds>()},
|
||||||
addr(addrIn),
|
addr(addrIn),
|
||||||
addrBind(addrBindIn),
|
addrBind(addrBindIn),
|
||||||
m_addr_name{addrNameIn.empty() ? addr.ToStringIPPort() : addrNameIn},
|
m_addr_name{addrNameIn.empty() ? addr.ToStringIPPort() : addrNameIn},
|
||||||
|
|
|
@ -131,6 +131,9 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
options.m_max_outbound_full_relay = max_outbound_full_relay;
|
options.m_max_outbound_full_relay = max_outbound_full_relay;
|
||||||
options.nMaxFeeler = MAX_FEELER_CONNECTIONS;
|
options.nMaxFeeler = MAX_FEELER_CONNECTIONS;
|
||||||
|
|
||||||
|
const auto time_init{GetTime<std::chrono::seconds>()};
|
||||||
|
SetMockTime(time_init);
|
||||||
|
const auto time_later{time_init + 3 * std::chrono::seconds{chainparams.GetConsensus().nPowTargetSpacing} + 1s};
|
||||||
connman->Init(options);
|
connman->Init(options);
|
||||||
std::vector<CNode *> vNodes;
|
std::vector<CNode *> vNodes;
|
||||||
|
|
||||||
|
@ -146,7 +149,7 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
BOOST_CHECK(node->fDisconnect == false);
|
BOOST_CHECK(node->fDisconnect == false);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetMockTime(GetTime() + 3 * chainparams.GetConsensus().nPowTargetSpacing + 1);
|
SetMockTime(time_later);
|
||||||
|
|
||||||
// Now tip should definitely be stale, and we should look for an extra
|
// Now tip should definitely be stale, and we should look for an extra
|
||||||
// outbound peer
|
// outbound peer
|
||||||
|
@ -161,7 +164,9 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
// If we add one more peer, something should get marked for eviction
|
// If we add one more peer, something should get marked for eviction
|
||||||
// on the next check (since we're mocking the time to be in the future, the
|
// on the next check (since we're mocking the time to be in the future, the
|
||||||
// required time connected check should be satisfied).
|
// required time connected check should be satisfied).
|
||||||
|
SetMockTime(time_init);
|
||||||
AddRandomOutboundPeer(vNodes, *peerLogic, *connman, ConnectionType::OUTBOUND_FULL_RELAY);
|
AddRandomOutboundPeer(vNodes, *peerLogic, *connman, ConnectionType::OUTBOUND_FULL_RELAY);
|
||||||
|
SetMockTime(time_later);
|
||||||
|
|
||||||
peerLogic->CheckForStaleTipAndEvictPeers();
|
peerLogic->CheckForStaleTipAndEvictPeers();
|
||||||
for (int i = 0; i < max_outbound_full_relay; ++i) {
|
for (int i = 0; i < max_outbound_full_relay; ++i) {
|
||||||
|
|
|
@ -86,7 +86,7 @@ class TimeoutsTest(BitcoinTestFramework):
|
||||||
]
|
]
|
||||||
|
|
||||||
with self.nodes[0].assert_debug_log(expected_msgs=expected_timeout_logs):
|
with self.nodes[0].assert_debug_log(expected_msgs=expected_timeout_logs):
|
||||||
self.mock_forward(5)
|
self.mock_forward(2)
|
||||||
no_verack_node.wait_for_disconnect(timeout=1)
|
no_verack_node.wait_for_disconnect(timeout=1)
|
||||||
no_version_node.wait_for_disconnect(timeout=1)
|
no_version_node.wait_for_disconnect(timeout=1)
|
||||||
no_send_node.wait_for_disconnect(timeout=1)
|
no_send_node.wait_for_disconnect(timeout=1)
|
||||||
|
|
Loading…
Reference in a new issue