Changeset View
Changeset View
Standalone View
Standalone View
src/seeder/test/message_writer_tests.cpp
Show All 38 Lines | BOOST_AUTO_TEST_CASE(simple_header_and_payload_message_writer_test) { | ||||
int start_height = 1; | int start_height = 1; | ||||
CDataStream versionPayload(SER_NETWORK, PROTOCOL_VERSION); | CDataStream versionPayload(SER_NETWORK, PROTOCOL_VERSION); | ||||
versionPayload << PROTOCOL_VERSION << serviceFlags << now << addrTo | versionPayload << PROTOCOL_VERSION << serviceFlags << now << addrTo | ||||
<< addrFrom << nonce << user_agent << start_height; | << addrFrom << nonce << user_agent << start_height; | ||||
CMessageHeader versionhdr(Params().NetMagic(), NetMsgType::VERSION, | CMessageHeader versionhdr(Params().NetMagic(), NetMsgType::VERSION, | ||||
versionPayload.size()); | versionPayload.size()); | ||||
uint256 hash = Hash(versionPayload.data(), | uint256 hash = Hash(versionPayload); | ||||
versionPayload.data() + versionPayload.size()); | |||||
memcpy(versionhdr.pchChecksum, hash.begin(), CMessageHeader::CHECKSUM_SIZE); | memcpy(versionhdr.pchChecksum, hash.begin(), CMessageHeader::CHECKSUM_SIZE); | ||||
CDataStream expectedVersion(SER_NETWORK, PROTOCOL_VERSION); | CDataStream expectedVersion(SER_NETWORK, PROTOCOL_VERSION); | ||||
expectedVersion << versionhdr; | expectedVersion << versionhdr; | ||||
expectedVersion += versionPayload; | expectedVersion += versionPayload; | ||||
CheckMessage(expectedVersion, NetMsgType::VERSION, PROTOCOL_VERSION, | CheckMessage(expectedVersion, NetMsgType::VERSION, PROTOCOL_VERSION, | ||||
serviceFlags, now, addrTo, addrFrom, nonce, user_agent, | serviceFlags, now, addrTo, addrFrom, nonce, user_agent, | ||||
start_height); | start_height); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(header_empty_payload_message_writer_test) { | BOOST_AUTO_TEST_CASE(header_empty_payload_message_writer_test) { | ||||
SelectParams(CBaseChainParams::MAIN); | SelectParams(CBaseChainParams::MAIN); | ||||
CMessageHeader verackHeader(Params().NetMagic(), NetMsgType::VERACK, 0); | CMessageHeader verackHeader(Params().NetMagic(), NetMsgType::VERACK, 0); | ||||
CDataStream expectedVerack(SER_NETWORK, PROTOCOL_VERSION); | CDataStream expectedVerack(SER_NETWORK, PROTOCOL_VERSION); | ||||
// This is an empty payload, but is still necessary for the checksum | // This is an empty payload, but is still necessary for the checksum | ||||
std::vector<uint8_t> payload; | std::vector<uint8_t> payload; | ||||
uint256 hash = Hash(payload.data(), payload.data() + payload.size()); | uint256 hash = Hash(payload); | ||||
memcpy(verackHeader.pchChecksum, hash.begin(), | memcpy(verackHeader.pchChecksum, hash.begin(), | ||||
CMessageHeader::CHECKSUM_SIZE); | CMessageHeader::CHECKSUM_SIZE); | ||||
expectedVerack << verackHeader; | expectedVerack << verackHeader; | ||||
CheckMessage(expectedVerack, NetMsgType::VERACK); | CheckMessage(expectedVerack, NetMsgType::VERACK); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(write_getheaders_message_test) { | BOOST_AUTO_TEST_CASE(write_getheaders_message_test) { | ||||
SelectParams(CBaseChainParams::MAIN); | SelectParams(CBaseChainParams::MAIN); | ||||
CDataStream payload(SER_NETWORK, PROTOCOL_VERSION); | CDataStream payload(SER_NETWORK, PROTOCOL_VERSION); | ||||
BlockHash bhash(uint256S( | BlockHash bhash(uint256S( | ||||
"0000000099f5509b5f36b1926bcf82b21d936ebeadee811030dfbbb7fae915d7")); | "0000000099f5509b5f36b1926bcf82b21d936ebeadee811030dfbbb7fae915d7")); | ||||
std::vector<BlockHash> vlocator(1, bhash); | std::vector<BlockHash> vlocator(1, bhash); | ||||
CBlockLocator locatorhash(vlocator); | CBlockLocator locatorhash(vlocator); | ||||
payload << locatorhash << uint256(); | payload << locatorhash << uint256(); | ||||
uint256 hash = Hash(payload.data(), payload.data() + payload.size()); | uint256 hash = Hash(payload); | ||||
CMessageHeader msgHeader(Params().NetMagic(), NetMsgType::GETHEADERS, | CMessageHeader msgHeader(Params().NetMagic(), NetMsgType::GETHEADERS, | ||||
payload.size()); | payload.size()); | ||||
memcpy(msgHeader.pchChecksum, hash.begin(), CMessageHeader::CHECKSUM_SIZE); | memcpy(msgHeader.pchChecksum, hash.begin(), CMessageHeader::CHECKSUM_SIZE); | ||||
CDataStream expectedMsg(SER_NETWORK, PROTOCOL_VERSION); | CDataStream expectedMsg(SER_NETWORK, PROTOCOL_VERSION); | ||||
expectedMsg << msgHeader; | expectedMsg << msgHeader; | ||||
expectedMsg += payload; | expectedMsg += payload; | ||||
CheckMessage(expectedMsg, NetMsgType::GETHEADERS, locatorhash, uint256()); | CheckMessage(expectedMsg, NetMsgType::GETHEADERS, locatorhash, uint256()); | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |