mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-23 15:22:46 +02:00
test: Add test for updating addrman entries
This covers Connected() which updates nTime, and SetServices() which updates nServices
This commit is contained in:
parent
f02eee8c87
commit
e880bb7836
@ -915,5 +915,35 @@ BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
|
|||||||
BOOST_CHECK_THROW(ReadFromStream(addrman2, ssPeers2), std::ios_base::failure);
|
BOOST_CHECK_THROW(ReadFromStream(addrman2, ssPeers2), std::ios_base::failure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(addrman_update_address)
|
||||||
|
{
|
||||||
|
// Tests updating nTime via Connected() and nServices via SetServices()
|
||||||
|
auto addrman = TestAddrMan();
|
||||||
|
CNetAddr source{ResolveIP("252.2.2.2")};
|
||||||
|
CAddress addr{CAddress(ResolveService("250.1.1.1", 8333), NODE_NONE)};
|
||||||
|
|
||||||
|
int64_t start_time{GetAdjustedTime() - 10000};
|
||||||
|
addr.nTime = start_time;
|
||||||
|
BOOST_CHECK(addrman->Add({addr}, source));
|
||||||
|
BOOST_CHECK_EQUAL(addrman->size(), 1U);
|
||||||
|
|
||||||
|
// Updating an addrman entry with a different port doesn't change it
|
||||||
|
CAddress addr_diff_port{CAddress(ResolveService("250.1.1.1", 8334), NODE_NONE)};
|
||||||
|
addr_diff_port.nTime = start_time;
|
||||||
|
addrman->Connected(addr_diff_port);
|
||||||
|
addrman->SetServices(addr_diff_port, NODE_NETWORK_LIMITED);
|
||||||
|
std::vector<CAddress> vAddr1{addrman->GetAddr(/*max_addresses=*/0, /*max_pct=*/0, /*network=*/std::nullopt)};
|
||||||
|
BOOST_CHECK_EQUAL(vAddr1.size(), 1U);
|
||||||
|
BOOST_CHECK_EQUAL(vAddr1.at(0).nTime, start_time);
|
||||||
|
BOOST_CHECK_EQUAL(vAddr1.at(0).nServices, NODE_NONE);
|
||||||
|
|
||||||
|
// Updating an addrman entry with the correct port is successful
|
||||||
|
addrman->Connected(addr);
|
||||||
|
addrman->SetServices(addr, NODE_NETWORK_LIMITED);
|
||||||
|
std::vector<CAddress> vAddr2 = addrman->GetAddr(/*max_addresses=*/0, /*max_pct=*/0, /*network=*/std::nullopt);
|
||||||
|
BOOST_CHECK_EQUAL(vAddr2.size(), 1U);
|
||||||
|
BOOST_CHECK(vAddr2.at(0).nTime >= start_time + 10000);
|
||||||
|
BOOST_CHECK_EQUAL(vAddr2.at(0).nServices, NODE_NETWORK_LIMITED);
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user