mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-26 11:13:23 -03:00
test: Use ConnmanTestMsg from test lib in denialofservice_tests
This commit is contained in:
parent
82bc7faec8
commit
fa72fce7c9
1 changed files with 14 additions and 31 deletions
|
@ -14,36 +14,19 @@
|
||||||
#include <script/signingprovider.h>
|
#include <script/signingprovider.h>
|
||||||
#include <script/standard.h>
|
#include <script/standard.h>
|
||||||
#include <serialize.h>
|
#include <serialize.h>
|
||||||
|
#include <test/util/net.h>
|
||||||
|
#include <test/util/setup_common.h>
|
||||||
#include <txorphanage.h>
|
#include <txorphanage.h>
|
||||||
#include <util/string.h>
|
#include <util/string.h>
|
||||||
#include <util/system.h>
|
#include <util/system.h>
|
||||||
#include <util/time.h>
|
#include <util/time.h>
|
||||||
#include <validation.h>
|
#include <validation.h>
|
||||||
|
|
||||||
#include <test/util/setup_common.h>
|
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <boost/test/unit_test.hpp>
|
#include <boost/test/unit_test.hpp>
|
||||||
|
|
||||||
struct CConnmanTest : public CConnman {
|
|
||||||
using CConnman::CConnman;
|
|
||||||
void AddNode(CNode& node)
|
|
||||||
{
|
|
||||||
LOCK(cs_vNodes);
|
|
||||||
vNodes.push_back(&node);
|
|
||||||
}
|
|
||||||
void ClearNodes()
|
|
||||||
{
|
|
||||||
LOCK(cs_vNodes);
|
|
||||||
for (CNode* node : vNodes) {
|
|
||||||
delete node;
|
|
||||||
}
|
|
||||||
vNodes.clear();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static CService ip(uint32_t i)
|
static CService ip(uint32_t i)
|
||||||
{
|
{
|
||||||
struct in_addr s;
|
struct in_addr s;
|
||||||
|
@ -120,7 +103,7 @@ BOOST_AUTO_TEST_CASE(outbound_slow_chain_eviction)
|
||||||
peerLogic->FinalizeNode(dummyNode1);
|
peerLogic->FinalizeNode(dummyNode1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AddRandomOutboundPeer(std::vector<CNode *> &vNodes, PeerManager &peerLogic, CConnmanTest* connman)
|
static void AddRandomOutboundPeer(std::vector<CNode*>& vNodes, PeerManager& peerLogic, ConnmanTestMsg& connman)
|
||||||
{
|
{
|
||||||
CAddress addr(ip(g_insecure_rand_ctx.randbits(32)), NODE_NONE);
|
CAddress addr(ip(g_insecure_rand_ctx.randbits(32)), NODE_NONE);
|
||||||
vNodes.emplace_back(new CNode(id++, ServiceFlags(NODE_NETWORK | NODE_WITNESS), INVALID_SOCKET, addr, /* nKeyedNetGroupIn */ 0, /* nLocalHostNonceIn */ 0, CAddress(), /* pszDest */ "", ConnectionType::OUTBOUND_FULL_RELAY, /* inbound_onion */ false));
|
vNodes.emplace_back(new CNode(id++, ServiceFlags(NODE_NETWORK | NODE_WITNESS), INVALID_SOCKET, addr, /* nKeyedNetGroupIn */ 0, /* nLocalHostNonceIn */ 0, CAddress(), /* pszDest */ "", ConnectionType::OUTBOUND_FULL_RELAY, /* inbound_onion */ false));
|
||||||
|
@ -130,13 +113,13 @@ static void AddRandomOutboundPeer(std::vector<CNode *> &vNodes, PeerManager &pee
|
||||||
peerLogic.InitializeNode(&node);
|
peerLogic.InitializeNode(&node);
|
||||||
node.fSuccessfullyConnected = true;
|
node.fSuccessfullyConnected = true;
|
||||||
|
|
||||||
connman->AddNode(node);
|
connman.AddTestNode(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
{
|
{
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto connman = std::make_unique<CConnmanTest>(0x1337, 0x1337, *m_node.addrman);
|
auto connman = std::make_unique<ConnmanTestMsg>(0x1337, 0x1337, *m_node.addrman);
|
||||||
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr,
|
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, nullptr,
|
||||||
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
|
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
|
@ -150,8 +133,8 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
std::vector<CNode *> vNodes;
|
std::vector<CNode *> vNodes;
|
||||||
|
|
||||||
// Mock some outbound peers
|
// Mock some outbound peers
|
||||||
for (int i=0; i<max_outbound_full_relay; ++i) {
|
for (int i = 0; i < max_outbound_full_relay; ++i) {
|
||||||
AddRandomOutboundPeer(vNodes, *peerLogic, connman.get());
|
AddRandomOutboundPeer(vNodes, *peerLogic, *connman);
|
||||||
}
|
}
|
||||||
|
|
||||||
peerLogic->CheckForStaleTipAndEvictPeers();
|
peerLogic->CheckForStaleTipAndEvictPeers();
|
||||||
|
@ -176,7 +159,7 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
// If we add one more peer, something should get marked for eviction
|
// If we add one more peer, something should get marked for eviction
|
||||||
// on the next check (since we're mocking the time to be in the future, the
|
// on the next check (since we're mocking the time to be in the future, the
|
||||||
// required time connected check should be satisfied).
|
// required time connected check should be satisfied).
|
||||||
AddRandomOutboundPeer(vNodes, *peerLogic, connman.get());
|
AddRandomOutboundPeer(vNodes, *peerLogic, *connman);
|
||||||
|
|
||||||
peerLogic->CheckForStaleTipAndEvictPeers();
|
peerLogic->CheckForStaleTipAndEvictPeers();
|
||||||
for (int i = 0; i < max_outbound_full_relay; ++i) {
|
for (int i = 0; i < max_outbound_full_relay; ++i) {
|
||||||
|
@ -202,14 +185,14 @@ BOOST_AUTO_TEST_CASE(stale_tip_peer_management)
|
||||||
peerLogic->FinalizeNode(*node);
|
peerLogic->FinalizeNode(*node);
|
||||||
}
|
}
|
||||||
|
|
||||||
connman->ClearNodes();
|
connman->ClearTestNodes();
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(peer_discouragement)
|
BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
{
|
{
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
auto banman = std::make_unique<BanMan>(m_args.GetDataDirBase() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
auto banman = std::make_unique<BanMan>(m_args.GetDataDirBase() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
|
||||||
auto connman = std::make_unique<CConnmanTest>(0x1337, 0x1337, *m_node.addrman);
|
auto connman = std::make_unique<ConnmanTestMsg>(0x1337, 0x1337, *m_node.addrman);
|
||||||
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
|
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
|
||||||
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
|
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
|
||||||
|
|
||||||
|
@ -233,7 +216,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
nodes[0]->SetCommonVersion(PROTOCOL_VERSION);
|
nodes[0]->SetCommonVersion(PROTOCOL_VERSION);
|
||||||
peerLogic->InitializeNode(nodes[0]);
|
peerLogic->InitializeNode(nodes[0]);
|
||||||
nodes[0]->fSuccessfullyConnected = true;
|
nodes[0]->fSuccessfullyConnected = true;
|
||||||
connman->AddNode(*nodes[0]);
|
connman->AddTestNode(*nodes[0]);
|
||||||
peerLogic->Misbehaving(nodes[0]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ ""); // Should be discouraged
|
peerLogic->Misbehaving(nodes[0]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ ""); // Should be discouraged
|
||||||
{
|
{
|
||||||
LOCK(nodes[0]->cs_sendProcessing);
|
LOCK(nodes[0]->cs_sendProcessing);
|
||||||
|
@ -249,7 +232,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
nodes[1]->SetCommonVersion(PROTOCOL_VERSION);
|
nodes[1]->SetCommonVersion(PROTOCOL_VERSION);
|
||||||
peerLogic->InitializeNode(nodes[1]);
|
peerLogic->InitializeNode(nodes[1]);
|
||||||
nodes[1]->fSuccessfullyConnected = true;
|
nodes[1]->fSuccessfullyConnected = true;
|
||||||
connman->AddNode(*nodes[1]);
|
connman->AddTestNode(*nodes[1]);
|
||||||
peerLogic->Misbehaving(nodes[1]->GetId(), DISCOURAGEMENT_THRESHOLD - 1, /* message */ "");
|
peerLogic->Misbehaving(nodes[1]->GetId(), DISCOURAGEMENT_THRESHOLD - 1, /* message */ "");
|
||||||
{
|
{
|
||||||
LOCK(nodes[1]->cs_sendProcessing);
|
LOCK(nodes[1]->cs_sendProcessing);
|
||||||
|
@ -280,7 +263,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
nodes[2]->SetCommonVersion(PROTOCOL_VERSION);
|
nodes[2]->SetCommonVersion(PROTOCOL_VERSION);
|
||||||
peerLogic->InitializeNode(nodes[2]);
|
peerLogic->InitializeNode(nodes[2]);
|
||||||
nodes[2]->fSuccessfullyConnected = true;
|
nodes[2]->fSuccessfullyConnected = true;
|
||||||
connman->AddNode(*nodes[2]);
|
connman->AddTestNode(*nodes[2]);
|
||||||
peerLogic->Misbehaving(nodes[2]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ "");
|
peerLogic->Misbehaving(nodes[2]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ "");
|
||||||
{
|
{
|
||||||
LOCK(nodes[2]->cs_sendProcessing);
|
LOCK(nodes[2]->cs_sendProcessing);
|
||||||
|
@ -296,7 +279,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
|
||||||
for (CNode* node : nodes) {
|
for (CNode* node : nodes) {
|
||||||
peerLogic->FinalizeNode(*node);
|
peerLogic->FinalizeNode(*node);
|
||||||
}
|
}
|
||||||
connman->ClearNodes();
|
connman->ClearTestNodes();
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(DoS_bantime)
|
BOOST_AUTO_TEST_CASE(DoS_bantime)
|
||||||
|
|
Loading…
Add table
Reference in a new issue