Changeset View
Changeset View
Standalone View
Standalone View
src/seeder/test/p2p_messaging_tests.cpp
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | |||||
static CDataStream CreateAddrMessage(std::vector<CAddress> sendAddrs, | static CDataStream CreateAddrMessage(std::vector<CAddress> sendAddrs, | ||||
uint32_t nVersion = INIT_PROTO_VERSION) { | uint32_t nVersion = INIT_PROTO_VERSION) { | ||||
CDataStream payload(SER_NETWORK, 0); | CDataStream payload(SER_NETWORK, 0); | ||||
payload.SetVersion(nVersion); | payload.SetVersion(nVersion); | ||||
payload << sendAddrs; | payload << sendAddrs; | ||||
return payload; | return payload; | ||||
} | } | ||||
// After the 1000th addr, the seeder will only add one more address per addr | |||||
// message. | |||||
static const int ADDR_SOFT_CAP = 1000; | |||||
jasonbcox: This should be the hint that this isn't a maximum number of addresses per message. Just because… | |||||
BOOST_AUTO_TEST_CASE(seeder_node_addr_test) { | BOOST_AUTO_TEST_CASE(seeder_node_addr_test) { | ||||
// vAddrs starts with 1 entry. | // vAddrs starts with 1 entry. | ||||
std::vector<CAddress> sendAddrs(ADDR_SOFT_CAP - 1, vAddr[0]); | std::vector<CAddress> sendAddrs(MAX_ADDRS_PER_MESSAGE - 1, vAddr[0]); | ||||
// Happy path | // Happy path | ||||
// addrs are added normally to vAddr until ADDR_SOFT_CAP is reached. | // addrs are added normally to vAddr until MAX_ADDRS_PER_MESSAGE is reached. | ||||
// Add addrs up to the soft cap. | // Add addrs up to the soft cap. | ||||
CDataStream addrMessage = CreateAddrMessage(sendAddrs); | CDataStream addrMessage = CreateAddrMessage(sendAddrs); | ||||
BOOST_CHECK_EQUAL(1, vAddr.size()); | BOOST_CHECK_EQUAL(1, vAddr.size()); | ||||
testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | ||||
PeerMessagingState::AwaitingMessages); | PeerMessagingState::AwaitingMessages); | ||||
BOOST_CHECK_EQUAL(ADDR_SOFT_CAP, vAddr.size()); | BOOST_CHECK_EQUAL(MAX_ADDRS_PER_MESSAGE, vAddr.size()); | ||||
// ADDR_SOFT_CAP is exceeded | // MAX_ADDRS_PER_MESSAGE is exceeded | ||||
sendAddrs.resize(1); | sendAddrs.resize(1); | ||||
addrMessage = CreateAddrMessage(sendAddrs); | addrMessage = CreateAddrMessage(sendAddrs); | ||||
testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | ||||
PeerMessagingState::Finished); | PeerMessagingState::Finished); | ||||
BOOST_CHECK_EQUAL(ADDR_SOFT_CAP + 1, vAddr.size()); | BOOST_CHECK_EQUAL(MAX_ADDRS_PER_MESSAGE + 1, vAddr.size()); | ||||
// Test the seeder's behavior after ADDR_SOFT_CAP addrs | // Test the seeder's behavior after MAX_ADDRS_PER_MESSAGE addrs | ||||
// Only one addr per ADDR message will be added, the rest are ignored | // Only one addr per ADDR message will be added, the rest are ignored | ||||
size_t expectedSize = vAddr.size() + 1; | size_t expectedSize = vAddr.size() + 1; | ||||
for (size_t i = 1; i < 10; i++) { | for (size_t i = 1; i < 10; i++) { | ||||
sendAddrs.resize(i, sendAddrs[0]); | sendAddrs.resize(i, sendAddrs[0]); | ||||
addrMessage = CreateAddrMessage(sendAddrs); | addrMessage = CreateAddrMessage(sendAddrs); | ||||
testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | testNode->TestProcessMessage(NetMsgType::ADDR, addrMessage, | ||||
PeerMessagingState::Finished); | PeerMessagingState::Finished); | ||||
BOOST_CHECK_EQUAL(expectedSize, vAddr.size()); | BOOST_CHECK_EQUAL(expectedSize, vAddr.size()); | ||||
++expectedSize; | ++expectedSize; | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |
This should be the hint that this isn't a maximum number of addresses per message. Just because they happen to be the same number, doesn't mean they're the same thing (or even related at all).