Skip to content

Commit f02eee8

Browse files
committed
test: introduce utility function to retrieve an addrman
1 parent f0e5efb commit f02eee8

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

src/test/addrman_tests.cpp

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,17 @@ static std::vector<bool> FromBytes(const unsigned char* source, int vector_size)
4949
return result;
5050
}
5151

52+
/* Utility function to create a deterministic addrman, as used in most tests */
53+
static std::unique_ptr<AddrMan> TestAddrMan(std::vector<bool> asmap = std::vector<bool>())
54+
{
55+
return std::make_unique<AddrMan>(asmap, /*deterministic=*/true, /*consistency_check_ratio=*/100);
56+
}
5257

5358
BOOST_FIXTURE_TEST_SUITE(addrman_tests, BasicTestingSetup)
5459

5560
BOOST_AUTO_TEST_CASE(addrman_simple)
5661
{
57-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
62+
auto addrman = TestAddrMan();
5863

5964
CNetAddr source = ResolveIP("252.2.2.2");
6065

@@ -88,7 +93,7 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
8893
BOOST_CHECK(addrman->size() >= 1);
8994

9095
// Test: reset addrman and test AddrMan::Add multiple addresses works as expected
91-
addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
96+
addrman = TestAddrMan();
9297
std::vector<CAddress> vAddr;
9398
vAddr.push_back(CAddress(ResolveService("250.1.1.3", 8333), NODE_NONE));
9499
vAddr.push_back(CAddress(ResolveService("250.1.1.4", 8333), NODE_NONE));
@@ -98,7 +103,7 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
98103

99104
BOOST_AUTO_TEST_CASE(addrman_ports)
100105
{
101-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
106+
auto addrman = TestAddrMan();
102107

103108
CNetAddr source = ResolveIP("252.2.2.2");
104109

@@ -127,7 +132,7 @@ BOOST_AUTO_TEST_CASE(addrman_ports)
127132

128133
BOOST_AUTO_TEST_CASE(addrman_select)
129134
{
130-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
135+
auto addrman = TestAddrMan();
131136

132137
CNetAddr source = ResolveIP("252.2.2.2");
133138

@@ -186,7 +191,7 @@ BOOST_AUTO_TEST_CASE(addrman_select)
186191

187192
BOOST_AUTO_TEST_CASE(addrman_new_collisions)
188193
{
189-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
194+
auto addrman = TestAddrMan();
190195

191196
CNetAddr source = ResolveIP("252.2.2.2");
192197

@@ -215,7 +220,7 @@ BOOST_AUTO_TEST_CASE(addrman_new_collisions)
215220

216221
BOOST_AUTO_TEST_CASE(addrman_tried_collisions)
217222
{
218-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
223+
auto addrman = TestAddrMan();
219224

220225
CNetAddr source = ResolveIP("252.2.2.2");
221226

@@ -246,7 +251,7 @@ BOOST_AUTO_TEST_CASE(addrman_tried_collisions)
246251

247252
BOOST_AUTO_TEST_CASE(addrman_getaddr)
248253
{
249-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
254+
auto addrman = TestAddrMan();
250255

251256
// Test: Sanity check, GetAddr should never return anything if addrman
252257
// is empty.
@@ -567,9 +572,9 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
567572
{
568573
std::vector<bool> asmap1 = FromBytes(asmap_raw, sizeof(asmap_raw) * 8);
569574

570-
auto addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
571-
auto addrman_asmap1_dup = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
572-
auto addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
575+
auto addrman_asmap1 = TestAddrMan(asmap1);
576+
auto addrman_asmap1_dup = TestAddrMan(asmap1);
577+
auto addrman_noasmap = TestAddrMan();
573578
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
574579

575580
CAddress addr = CAddress(ResolveService("250.1.1.1"), NODE_NONE);
@@ -597,8 +602,8 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
597602
BOOST_CHECK(addr_pos1.position != addr_pos3.position);
598603

599604
// deserializing non-asmaped peers.dat to asmaped addrman
600-
addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
601-
addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
605+
addrman_asmap1 = TestAddrMan(asmap1);
606+
addrman_noasmap = TestAddrMan();
602607
addrman_noasmap->Add({addr}, default_source);
603608
stream << *addrman_noasmap;
604609
stream >> *addrman_asmap1;
@@ -609,8 +614,8 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
609614
BOOST_CHECK(addr_pos4 == addr_pos2);
610615

611616
// used to map to different buckets, now maps to the same bucket.
612-
addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
613-
addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
617+
addrman_asmap1 = TestAddrMan(asmap1);
618+
addrman_noasmap = TestAddrMan();
614619
CAddress addr1 = CAddress(ResolveService("250.1.1.1"), NODE_NONE);
615620
CAddress addr2 = CAddress(ResolveService("250.2.1.1"), NODE_NONE);
616621
addrman_noasmap->Add({addr, addr2}, default_source);
@@ -629,7 +634,7 @@ BOOST_AUTO_TEST_CASE(remove_invalid)
629634
{
630635
// Confirm that invalid addresses are ignored in unserialization.
631636

632-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
637+
auto addrman = TestAddrMan();
633638
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
634639

635640
const CAddress new1{ResolveService("5.5.5.5"), NODE_NONE};
@@ -661,14 +666,14 @@ BOOST_AUTO_TEST_CASE(remove_invalid)
661666
BOOST_REQUIRE(pos + sizeof(tried2_raw_replacement) <= stream.size());
662667
memcpy(stream.data() + pos, tried2_raw_replacement, sizeof(tried2_raw_replacement));
663668

664-
addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
669+
addrman = TestAddrMan();
665670
stream >> *addrman;
666671
BOOST_CHECK_EQUAL(addrman->size(), 2);
667672
}
668673

669674
BOOST_AUTO_TEST_CASE(addrman_selecttriedcollision)
670675
{
671-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
676+
auto addrman = TestAddrMan();
672677

673678
BOOST_CHECK(addrman->size() == 0);
674679

@@ -701,7 +706,7 @@ BOOST_AUTO_TEST_CASE(addrman_selecttriedcollision)
701706

702707
BOOST_AUTO_TEST_CASE(addrman_noevict)
703708
{
704-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
709+
auto addrman = TestAddrMan();
705710

706711
// Add 35 addresses.
707712
CNetAddr source = ResolveIP("252.2.2.2");
@@ -753,7 +758,7 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
753758

754759
BOOST_AUTO_TEST_CASE(addrman_evictionworks)
755760
{
756-
auto addrman = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
761+
auto addrman = TestAddrMan();
757762

758763
BOOST_CHECK(addrman->size() == 0);
759764

0 commit comments

Comments
 (0)