Skip to content

Commit 776ba23

Browse files
author
MarcoFalke
committed
Merge #10287: [tests] Update Unit Test for addrman.h/addrman.cpp
ed36de5 [tests] Update Unit Test for addrman.h/addrman.cpp (Jimmy Song) Tree-SHA512: e7c08c19e227c34c230900e14a176b2290022b78b0ece387452e673662491c11f26249cbf1711235276c07a964c339e27b4cda9a2730ded5c0e23a650e0d72db
2 parents c973cc5 + ed36de5 commit 776ba23

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/test/addrman_tests.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

119126
BOOST_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

Comments
 (0)