Changeset View
Changeset View
Standalone View
Standalone View
src/test/net_tests.cpp
// Copyright (c) 2012-2016 The Bitcoin Core developers | // Copyright (c) 2012-2016 The Bitcoin Core developers | ||||
// Copyright (c) 2017-2018 The Bitcoin developers | // Copyright (c) 2017-2018 The Bitcoin developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include "addrman.h" | #include "addrman.h" | ||||
#include "chainparams.h" | #include "chainparams.h" | ||||
#include "clientversion.h" | #include "clientversion.h" | ||||
#include "config.h" | #include "config.h" | ||||
#include "hash.h" | #include "hash.h" | ||||
#include "net.h" | #include "net.h" | ||||
#include "netbase.h" | #include "netbase.h" | ||||
#include "serialize.h" | #include "serialize.h" | ||||
#include "streams.h" | #include "streams.h" | ||||
#include "test/test_bitcoin.h" | #include "test/test_bitcoin.h" | ||||
#include <sstream> | |||||
#include <string> | #include <string> | ||||
#include <boost/test/unit_test.hpp> | #include <boost/test/unit_test.hpp> | ||||
class CAddrManSerializationMock : public CAddrMan { | class CAddrManSerializationMock : public CAddrMan { | ||||
public: | public: | ||||
virtual void Serialize(CDataStream &s) const = 0; | virtual void Serialize(CDataStream &s) const = 0; | ||||
Show All 29 Lines | void Serialize(CDataStream &s) const override { | ||||
CAddress addr = CAddress(serv, NODE_NONE); | CAddress addr = CAddress(serv, NODE_NONE); | ||||
CNetAddr resolved; | CNetAddr resolved; | ||||
LookupHost("252.2.2.2", resolved, false); | LookupHost("252.2.2.2", resolved, false); | ||||
CAddrInfo info = CAddrInfo(addr, resolved); | CAddrInfo info = CAddrInfo(addr, resolved); | ||||
s << info; | s << info; | ||||
} | } | ||||
}; | }; | ||||
class NetTestConfig : public DummyConfig { | |||||
public: | |||||
bool SetMaxBlockSize(uint64_t maxBlockSize) override { | |||||
nMaxBlockSize = maxBlockSize; | |||||
return true; | |||||
} | |||||
uint64_t GetMaxBlockSize() const override { return nMaxBlockSize; } | |||||
private: | |||||
uint64_t nMaxBlockSize; | |||||
}; | |||||
CDataStream AddrmanToStream(CAddrManSerializationMock &_addrman) { | CDataStream AddrmanToStream(CAddrManSerializationMock &_addrman) { | ||||
CDataStream ssPeersIn(SER_DISK, CLIENT_VERSION); | CDataStream ssPeersIn(SER_DISK, CLIENT_VERSION); | ||||
ssPeersIn << FLATDATA(Params().DiskMagic()); | ssPeersIn << FLATDATA(Params().DiskMagic()); | ||||
ssPeersIn << _addrman; | ssPeersIn << _addrman; | ||||
std::string str = ssPeersIn.str(); | std::string str = ssPeersIn.str(); | ||||
std::vector<uint8_t> vchData(str.begin(), str.end()); | std::vector<uint8_t> vchData(str.begin(), str.end()); | ||||
return CDataStream(vchData, SER_DISK, CLIENT_VERSION); | return CDataStream(vchData, SER_DISK, CLIENT_VERSION); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 109 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(test_getSubVersionEB) { | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(14000000), "14.0"); | BOOST_CHECK_EQUAL(getSubVersionEB(14000000), "14.0"); | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(1540000), "1.5"); | BOOST_CHECK_EQUAL(getSubVersionEB(1540000), "1.5"); | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(1560000), "1.5"); | BOOST_CHECK_EQUAL(getSubVersionEB(1560000), "1.5"); | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(210000), "0.2"); | BOOST_CHECK_EQUAL(getSubVersionEB(210000), "0.2"); | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(10000), "0.0"); | BOOST_CHECK_EQUAL(getSubVersionEB(10000), "0.0"); | ||||
BOOST_CHECK_EQUAL(getSubVersionEB(0), "0.0"); | BOOST_CHECK_EQUAL(getSubVersionEB(0), "0.0"); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(test_userAgentLength) { | BOOST_AUTO_TEST_CASE(test_userAgent) { | ||||
GlobalConfig config; | NetTestConfig config; | ||||
config.SetMaxBlockSize(8000000); | config.SetMaxBlockSize(8000000); | ||||
std::string long_uacomment = "very very very very very very very very very " | const std::string uacomment = "A very nice comment"; | ||||
"very very very very very very very very very " | gArgs.ForceSetMultiArg("-uacomment", uacomment); | ||||
"very very very very very very very very very " | |||||
"very very very very very very very very very " | const std::string versionMessage = | ||||
"very very very very very very very very very " | "/Bitcoin ABC:" + std::to_string(CLIENT_VERSION_MAJOR) + "." + | ||||
"very very very very very very very very very " | std::to_string(CLIENT_VERSION_MINOR) + "." + | ||||
"very very very very very very very very very " | std::to_string(CLIENT_VERSION_REVISION) + "(EB8.0; " + uacomment + ")/"; | ||||
"very very very very very very long comment"; | |||||
gArgs.ForceSetMultiArg("-uacomment", long_uacomment); | |||||
std::ostringstream versionMessage; | |||||
versionMessage << "/Bitcoin ABC:" << CLIENT_VERSION_MAJOR << "." | |||||
<< CLIENT_VERSION_MINOR << "." << CLIENT_VERSION_REVISION | |||||
<< "(EB8.0; very very very very very " | |||||
"very very very very very very very very very very very " | |||||
"very very very very very very very very very very very " | |||||
"very very very very very very very very very very very " | |||||
"very very very very very very very ve)/"; | |||||
BOOST_CHECK_EQUAL(userAgent(config).size(), MAX_SUBVERSION_LENGTH); | BOOST_CHECK_EQUAL(userAgent(config), versionMessage); | ||||
BOOST_CHECK_EQUAL(userAgent(config), versionMessage.str()); | |||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |