@@ -49,12 +49,17 @@ static std::vector<bool> FromBytes(const unsigned char* source, int vector_size)
49
49
return result;
50
50
}
51
51
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
+ }
52
57
53
58
BOOST_FIXTURE_TEST_SUITE (addrman_tests, BasicTestingSetup)
54
59
55
60
BOOST_AUTO_TEST_CASE(addrman_simple)
56
61
{
57
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
62
+ auto addrman = TestAddrMan ( );
58
63
59
64
CNetAddr source = ResolveIP (" 252.2.2.2" );
60
65
@@ -88,7 +93,7 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
88
93
BOOST_CHECK (addrman->size () >= 1 );
89
94
90
95
// 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 ( );
92
97
std::vector<CAddress> vAddr;
93
98
vAddr.push_back (CAddress (ResolveService (" 250.1.1.3" , 8333 ), NODE_NONE));
94
99
vAddr.push_back (CAddress (ResolveService (" 250.1.1.4" , 8333 ), NODE_NONE));
@@ -98,7 +103,7 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
98
103
99
104
BOOST_AUTO_TEST_CASE (addrman_ports)
100
105
{
101
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
106
+ auto addrman = TestAddrMan ( );
102
107
103
108
CNetAddr source = ResolveIP (" 252.2.2.2" );
104
109
@@ -127,7 +132,7 @@ BOOST_AUTO_TEST_CASE(addrman_ports)
127
132
128
133
BOOST_AUTO_TEST_CASE (addrman_select)
129
134
{
130
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
135
+ auto addrman = TestAddrMan ( );
131
136
132
137
CNetAddr source = ResolveIP (" 252.2.2.2" );
133
138
@@ -186,7 +191,7 @@ BOOST_AUTO_TEST_CASE(addrman_select)
186
191
187
192
BOOST_AUTO_TEST_CASE (addrman_new_collisions)
188
193
{
189
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
194
+ auto addrman = TestAddrMan ( );
190
195
191
196
CNetAddr source = ResolveIP (" 252.2.2.2" );
192
197
@@ -215,7 +220,7 @@ BOOST_AUTO_TEST_CASE(addrman_new_collisions)
215
220
216
221
BOOST_AUTO_TEST_CASE (addrman_tried_collisions)
217
222
{
218
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
223
+ auto addrman = TestAddrMan ( );
219
224
220
225
CNetAddr source = ResolveIP (" 252.2.2.2" );
221
226
@@ -246,7 +251,7 @@ BOOST_AUTO_TEST_CASE(addrman_tried_collisions)
246
251
247
252
BOOST_AUTO_TEST_CASE (addrman_getaddr)
248
253
{
249
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
254
+ auto addrman = TestAddrMan ( );
250
255
251
256
// Test: Sanity check, GetAddr should never return anything if addrman
252
257
// is empty.
@@ -567,9 +572,9 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
567
572
{
568
573
std::vector<bool > asmap1 = FromBytes (asmap_raw, sizeof (asmap_raw) * 8 );
569
574
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 ( );
573
578
CDataStream stream (SER_NETWORK, PROTOCOL_VERSION);
574
579
575
580
CAddress addr = CAddress (ResolveService (" 250.1.1.1" ), NODE_NONE);
@@ -597,8 +602,8 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
597
602
BOOST_CHECK (addr_pos1.position != addr_pos3.position );
598
603
599
604
// 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 ( );
602
607
addrman_noasmap->Add ({addr}, default_source);
603
608
stream << *addrman_noasmap;
604
609
stream >> *addrman_asmap1;
@@ -609,8 +614,8 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
609
614
BOOST_CHECK (addr_pos4 == addr_pos2);
610
615
611
616
// 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 ( );
614
619
CAddress addr1 = CAddress (ResolveService (" 250.1.1.1" ), NODE_NONE);
615
620
CAddress addr2 = CAddress (ResolveService (" 250.2.1.1" ), NODE_NONE);
616
621
addrman_noasmap->Add ({addr, addr2}, default_source);
@@ -629,7 +634,7 @@ BOOST_AUTO_TEST_CASE(remove_invalid)
629
634
{
630
635
// Confirm that invalid addresses are ignored in unserialization.
631
636
632
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
637
+ auto addrman = TestAddrMan ( );
633
638
CDataStream stream (SER_NETWORK, PROTOCOL_VERSION);
634
639
635
640
const CAddress new1{ResolveService (" 5.5.5.5" ), NODE_NONE};
@@ -661,14 +666,14 @@ BOOST_AUTO_TEST_CASE(remove_invalid)
661
666
BOOST_REQUIRE (pos + sizeof (tried2_raw_replacement) <= stream.size ());
662
667
memcpy (stream.data () + pos, tried2_raw_replacement, sizeof (tried2_raw_replacement));
663
668
664
- addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
669
+ addrman = TestAddrMan ( );
665
670
stream >> *addrman;
666
671
BOOST_CHECK_EQUAL (addrman->size (), 2 );
667
672
}
668
673
669
674
BOOST_AUTO_TEST_CASE (addrman_selecttriedcollision)
670
675
{
671
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
676
+ auto addrman = TestAddrMan ( );
672
677
673
678
BOOST_CHECK (addrman->size () == 0 );
674
679
@@ -701,7 +706,7 @@ BOOST_AUTO_TEST_CASE(addrman_selecttriedcollision)
701
706
702
707
BOOST_AUTO_TEST_CASE (addrman_noevict)
703
708
{
704
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
709
+ auto addrman = TestAddrMan ( );
705
710
706
711
// Add 35 addresses.
707
712
CNetAddr source = ResolveIP (" 252.2.2.2" );
@@ -753,7 +758,7 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
753
758
754
759
BOOST_AUTO_TEST_CASE (addrman_evictionworks)
755
760
{
756
- auto addrman = std::make_unique<AddrMan>(std::vector< bool >(), /* deterministic= */ true , /* consistency_check_ratio= */ 100 );
761
+ auto addrman = TestAddrMan ( );
757
762
758
763
BOOST_CHECK (addrman->size () == 0 );
759
764
0 commit comments