@@ -91,29 +91,36 @@ BOOST_AUTO_TEST_CASE(addrman_simple)
9191
9292 // Test 2: Does Addrman::Add work as expected.
9393 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) );
9595 BOOST_CHECK (addrman.size () == 1 );
9696 CAddrInfo addr_ret1 = addrman.Select ();
9797 BOOST_CHECK (addr_ret1.ToString () == " 250.1.1.1:8333" );
9898
9999 // Test 3: Does IP address deduplication work correctly.
100100 // Expected dup IP should not be added.
101101 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) );
103103 BOOST_CHECK (addrman.size () == 1 );
104104
105105
106106 // Test 5: New table has one addr and we add a diff addr we should
107107 // have two addrs.
108108 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) );
110110 BOOST_CHECK (addrman.size () == 2 );
111111
112112 // Test 6: AddrMan::Clear() should empty the new table.
113113 addrman.Clear ();
114114 BOOST_CHECK (addrman.size () == 0 );
115115 CAddrInfo addr_null2 = addrman.Select ();
116116 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 );
117124}
118125
119126BOOST_AUTO_TEST_CASE (addrman_ports)
@@ -398,9 +405,8 @@ BOOST_AUTO_TEST_CASE(addrman_getaddr)
398405 // Test 25: Ensure GetAddr still returns 23% when addrman has many addrs.
399406 for (unsigned int i = 1 ; i < (8 * 256 ); i++) {
400407 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" ;
404410 CAddress addr = CAddress (ResolveService (strAddr), NODE_NONE);
405411
406412 // Ensure that for all addrs in addrman, isTerrible == false.
@@ -412,10 +418,10 @@ BOOST_AUTO_TEST_CASE(addrman_getaddr)
412418 std::vector<CAddress> vAddr = addrman.GetAddr ();
413419
414420 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 );
417423 // (Addrman.size() < number of addresses added) due to address collisions.
418- BOOST_CHECK (addrman.size () == 2007 );
424+ BOOST_CHECK_EQUAL (addrman.size (), 2006 );
419425}
420426
421427
@@ -493,7 +499,9 @@ BOOST_AUTO_TEST_CASE(caddrinfo_get_new_bucket)
493499 uint256 nKey1 = (uint256)(CHashWriter (SER_GETHASH, 0 ) << 1 ).GetHash ();
494500 uint256 nKey2 = (uint256)(CHashWriter (SER_GETHASH, 0 ) << 2 ).GetHash ();
495501
502+ // Test 29.5: Make sure the buckets are what we expect
496503 BOOST_CHECK (info1.GetNewBucket (nKey1) == 786 );
504+ BOOST_CHECK (info1.GetNewBucket (nKey1, source1) == 786 );
497505
498506 // Test 30: Make sure key actually randomizes bucket placement. A fail on
499507 // this test could be a security issue.
0 commit comments