Skip to content

Commit e880bb7

Browse files
committed
test: Add test for updating addrman entries
This covers Connected() which updates nTime, and SetServices() which updates nServices
1 parent f02eee8 commit e880bb7

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

src/test/addrman_tests.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,5 +915,35 @@ BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
915915
BOOST_CHECK_THROW(ReadFromStream(addrman2, ssPeers2), std::ios_base::failure);
916916
}
917917

918+
BOOST_AUTO_TEST_CASE(addrman_update_address)
919+
{
920+
// Tests updating nTime via Connected() and nServices via SetServices()
921+
auto addrman = TestAddrMan();
922+
CNetAddr source{ResolveIP("252.2.2.2")};
923+
CAddress addr{CAddress(ResolveService("250.1.1.1", 8333), NODE_NONE)};
924+
925+
int64_t start_time{GetAdjustedTime() - 10000};
926+
addr.nTime = start_time;
927+
BOOST_CHECK(addrman->Add({addr}, source));
928+
BOOST_CHECK_EQUAL(addrman->size(), 1U);
929+
930+
// Updating an addrman entry with a different port doesn't change it
931+
CAddress addr_diff_port{CAddress(ResolveService("250.1.1.1", 8334), NODE_NONE)};
932+
addr_diff_port.nTime = start_time;
933+
addrman->Connected(addr_diff_port);
934+
addrman->SetServices(addr_diff_port, NODE_NETWORK_LIMITED);
935+
std::vector<CAddress> vAddr1{addrman->GetAddr(/*max_addresses=*/0, /*max_pct=*/0, /*network=*/std::nullopt)};
936+
BOOST_CHECK_EQUAL(vAddr1.size(), 1U);
937+
BOOST_CHECK_EQUAL(vAddr1.at(0).nTime, start_time);
938+
BOOST_CHECK_EQUAL(vAddr1.at(0).nServices, NODE_NONE);
939+
940+
// Updating an addrman entry with the correct port is successful
941+
addrman->Connected(addr);
942+
addrman->SetServices(addr, NODE_NETWORK_LIMITED);
943+
std::vector<CAddress> vAddr2 = addrman->GetAddr(/*max_addresses=*/0, /*max_pct=*/0, /*network=*/std::nullopt);
944+
BOOST_CHECK_EQUAL(vAddr2.size(), 1U);
945+
BOOST_CHECK(vAddr2.at(0).nTime >= start_time + 10000);
946+
BOOST_CHECK_EQUAL(vAddr2.at(0).nServices, NODE_NETWORK_LIMITED);
947+
}
918948

919949
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)