mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-23 02:10:51 +02:00
test: increase coverage of addrman select (without network)
Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
This commit is contained in:
parent
a98e542e0c
commit
22a4d1489c
@ -132,41 +132,40 @@ BOOST_AUTO_TEST_CASE(addrman_ports)
|
||||
BOOST_CHECK_EQUAL(addr_ret3.ToStringAddrPort(), "250.1.1.1:8333");
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(addrman_select)
|
||||
{
|
||||
auto addrman = std::make_unique<AddrMan>(EMPTY_NETGROUPMAN, DETERMINISTIC, GetCheckRatio(m_node));
|
||||
BOOST_CHECK(!addrman->Select(false).first.IsValid());
|
||||
BOOST_CHECK(!addrman->Select(true).first.IsValid());
|
||||
|
||||
CNetAddr source = ResolveIP("252.2.2.2");
|
||||
|
||||
// Test: Select from new with 1 addr in new.
|
||||
// Add 1 address to the new table
|
||||
CService addr1 = ResolveService("250.1.1.1", 8333);
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr1, NODE_NONE)}, source));
|
||||
BOOST_CHECK_EQUAL(addrman->Size(), 1U);
|
||||
|
||||
bool new_only = true;
|
||||
auto addr_ret1 = addrman->Select(new_only).first;
|
||||
BOOST_CHECK_EQUAL(addr_ret1.ToStringAddrPort(), "250.1.1.1:8333");
|
||||
BOOST_CHECK(addrman->Select(/*new_only=*/true).first == addr1);
|
||||
BOOST_CHECK(addrman->Select(/*new_only=*/false).first == addr1);
|
||||
|
||||
// Test: move addr to tried, select from new expected nothing returned.
|
||||
// Move address to the tried table
|
||||
BOOST_CHECK(addrman->Good(CAddress(addr1, NODE_NONE)));
|
||||
BOOST_CHECK_EQUAL(addrman->Size(), 1U);
|
||||
auto addr_ret2 = addrman->Select(new_only).first;
|
||||
BOOST_CHECK_EQUAL(addr_ret2.ToStringAddrPort(), "[::]:0");
|
||||
|
||||
auto addr_ret3 = addrman->Select().first;
|
||||
BOOST_CHECK_EQUAL(addr_ret3.ToStringAddrPort(), "250.1.1.1:8333");
|
||||
|
||||
BOOST_CHECK_EQUAL(addrman->Size(), 1U);
|
||||
BOOST_CHECK(!addrman->Select(/*new_only=*/true).first.IsValid());
|
||||
BOOST_CHECK(addrman->Select().first == addr1);
|
||||
BOOST_CHECK_EQUAL(addrman->Size(), 1U);
|
||||
|
||||
|
||||
// Add three addresses to new table.
|
||||
// Add one address to the new table
|
||||
CService addr2 = ResolveService("250.3.1.1", 8333);
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr2, NODE_NONE)}, addr2));
|
||||
BOOST_CHECK(addrman->Select(/*new_only=*/true).first == addr2);
|
||||
|
||||
// Add two more addresses to the new table
|
||||
CService addr3 = ResolveService("250.3.2.2", 9999);
|
||||
CService addr4 = ResolveService("250.3.3.3", 9999);
|
||||
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr2, NODE_NONE)}, ResolveService("250.3.1.1", 8333)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr3, NODE_NONE)}, ResolveService("250.3.1.1", 8333)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr3, NODE_NONE)}, addr2));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr4, NODE_NONE)}, ResolveService("250.4.1.1", 8333)));
|
||||
|
||||
// Add three addresses to tried table.
|
||||
@ -174,17 +173,17 @@ BOOST_AUTO_TEST_CASE(addrman_select)
|
||||
CService addr6 = ResolveService("250.4.5.5", 7777);
|
||||
CService addr7 = ResolveService("250.4.6.6", 8333);
|
||||
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr5, NODE_NONE)}, ResolveService("250.3.1.1", 8333)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr5, NODE_NONE)}, addr3));
|
||||
BOOST_CHECK(addrman->Good(CAddress(addr5, NODE_NONE)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr6, NODE_NONE)}, ResolveService("250.3.1.1", 8333)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr6, NODE_NONE)}, addr3));
|
||||
BOOST_CHECK(addrman->Good(CAddress(addr6, NODE_NONE)));
|
||||
BOOST_CHECK(addrman->Add({CAddress(addr7, NODE_NONE)}, ResolveService("250.1.1.3", 8333)));
|
||||
BOOST_CHECK(addrman->Good(CAddress(addr7, NODE_NONE)));
|
||||
|
||||
// Test: 6 addrs + 1 addr from last test = 7.
|
||||
// 6 addrs + 1 addr from last test = 7.
|
||||
BOOST_CHECK_EQUAL(addrman->Size(), 7U);
|
||||
|
||||
// Test: Select pulls from new and tried regardless of port number.
|
||||
// Select pulls from new and tried regardless of port number.
|
||||
std::set<uint16_t> ports;
|
||||
for (int i = 0; i < 20; ++i) {
|
||||
ports.insert(addrman->Select().first.GetPort());
|
||||
|
Loading…
x
Reference in New Issue
Block a user