@@ -91,29 +91,36 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
91
91
92
92
// Test 2: Does Addrman::Add work as expected.
93
93
CService addr1 = ResolveService (" 250.1.1.1" , 8333 );
94
- addrman.Add (CAddress (addr1, NODE_NONE), source);
94
+ BOOST_CHECK ( addrman.Add (CAddress (addr1, NODE_NONE), source) );
95
95
BOOST_CHECK (addrman.size () == 1 );
96
96
CAddrInfo addr_ret1 = addrman.Select ();
97
97
BOOST_CHECK (addr_ret1.ToString () == " 250.1.1.1:8333" );
98
98
99
99
// Test 3: Does IP address deduplication work correctly.
100
100
// Expected dup IP should not be added.
101
101
CService addr1_dup = ResolveService (" 250.1.1.1" , 8333 );
102
- addrman.Add (CAddress (addr1_dup, NODE_NONE), source);
102
+ BOOST_CHECK (! addrman.Add (CAddress (addr1_dup, NODE_NONE), source) );
103
103
BOOST_CHECK (addrman.size () == 1 );
104
104
105
105
106
106
// Test 5: New table has one addr and we add a diff addr we should
107
107
// have two addrs.
108
108
CService addr2 = ResolveService (" 250.1.1.2" , 8333 );
109
- addrman.Add (CAddress (addr2, NODE_NONE), source);
109
+ BOOST_CHECK ( addrman.Add (CAddress (addr2, NODE_NONE), source) );
110
110
BOOST_CHECK (addrman.size () == 2 );
111
111
112
112
// Test 6: AddrMan::Clear() should empty the new table.
113
113
addrman.Clear ();
114
114
BOOST_CHECK (addrman.size () == 0 );
115
115
CAddrInfo addr_null2 = addrman.Select ();
116
116
BOOST_CHECK (addr_null2.ToString () == " [::]:0" );
117
+
118
+ // Test 6.5: AddrMan::Add multiple addresses works as expected
119
+ std::vector<CAddress> vAddr;
120
+ vAddr.push_back (CAddress (ResolveService (" 250.1.1.3" , 8333 ), NODE_NONE));
121
+ vAddr.push_back (CAddress (ResolveService (" 250.1.1.4" , 8333 ), NODE_NONE));
122
+ BOOST_CHECK (addrman.Add (vAddr, source));
123
+ BOOST_CHECK (addrman.size () == 2 );
117
124
}
118
125
119
126
BOOST_AUTO_TEST_CASE (addrman_ports)
@@ -398,9 +405,8 @@ BOOST_AUTO_TEST_CASE(addrman_getaddr)
398
405
// Test 25: Ensure GetAddr still returns 23% when addrman has many addrs.
399
406
for (unsigned int i = 1 ; i < (8 * 256 ); i++) {
400
407
int octet1 = i % 256 ;
401
- int octet2 = (i / 256 ) % 256 ;
402
- int octet3 = (i / (256 * 2 )) % 256 ;
403
- std::string strAddr = boost::to_string (octet1) + " ." + boost::to_string (octet2) + " ." + boost::to_string (octet3) + " .23" ;
408
+ int octet2 = i >> 8 % 256 ;
409
+ std::string strAddr = boost::to_string (octet1) + " ." + boost::to_string (octet2) + " .1.23" ;
404
410
CAddress addr = CAddress (ResolveService (strAddr), NODE_NONE);
405
411
406
412
// Ensure that for all addrs in addrman, isTerrible == false.
@@ -412,10 +418,10 @@ BOOST_AUTO_TEST_CASE(addrman_getaddr)
412
418
std::vector<CAddress> vAddr = addrman.GetAddr ();
413
419
414
420
size_t percent23 = (addrman.size () * 23 ) / 100 ;
415
- BOOST_CHECK (vAddr.size () == percent23);
416
- BOOST_CHECK (vAddr.size () == 461 );
421
+ BOOST_CHECK_EQUAL (vAddr.size (), percent23);
422
+ BOOST_CHECK_EQUAL (vAddr.size (), 461 );
417
423
// (Addrman.size() < number of addresses added) due to address collisions.
418
- BOOST_CHECK (addrman.size () == 2007 );
424
+ BOOST_CHECK_EQUAL (addrman.size (), 2006 );
419
425
}
420
426
421
427
@@ -493,7 +499,9 @@ BOOST_AUTO_TEST_CASE(caddrinfo_get_new_bucket)
493
499
uint256 nKey1 = (uint256)(CHashWriter (SER_GETHASH, 0 ) << 1 ).GetHash ();
494
500
uint256 nKey2 = (uint256)(CHashWriter (SER_GETHASH, 0 ) << 2 ).GetHash ();
495
501
502
+ // Test 29.5: Make sure the buckets are what we expect
496
503
BOOST_CHECK (info1.GetNewBucket (nKey1) == 786 );
504
+ BOOST_CHECK (info1.GetNewBucket (nKey1, source1) == 786 );
497
505
498
506
// Test 30: Make sure key actually randomizes bucket placement. A fail on
499
507
// this test could be a security issue.
0 commit comments