Skip to content

Commit 637bb6d

Browse files
vasildMarcoFalke
authored andcommitted
test: also check disconnect in denialofservice_tests/peer_discouragement
Use `CConnmanTest` instead of `CConnman` and add the nodes to it so that their `fDisconnect` flag is set during disconnection.
1 parent 4d6e246 commit 637bb6d

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/test/denialofservice_tests.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
210210
{
211211
const CChainParams& chainparams = Params();
212212
auto banman = std::make_unique<BanMan>(GetDataDir() / "banlist.dat", nullptr, DEFAULT_MISBEHAVING_BANTIME);
213-
auto connman = std::make_unique<CConnman>(0x1337, 0x1337, *m_node.addrman);
213+
auto connman = std::make_unique<CConnmanTest>(0x1337, 0x1337, *m_node.addrman);
214214
auto peerLogic = PeerManager::make(chainparams, *connman, *m_node.addrman, banman.get(),
215215
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false);
216216

@@ -228,12 +228,14 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
228228
nodes[0]->SetCommonVersion(PROTOCOL_VERSION);
229229
peerLogic->InitializeNode(nodes[0]);
230230
nodes[0]->fSuccessfullyConnected = true;
231+
connman->AddNode(*nodes[0]);
231232
peerLogic->Misbehaving(nodes[0]->GetId(), DISCOURAGEMENT_THRESHOLD, /* message */ ""); // Should be discouraged
232233
{
233234
LOCK(nodes[0]->cs_sendProcessing);
234235
BOOST_CHECK(peerLogic->SendMessages(nodes[0]));
235236
}
236237
BOOST_CHECK(banman->IsDiscouraged(addr[0]));
238+
BOOST_CHECK(nodes[0]->fDisconnect);
237239
BOOST_CHECK(!banman->IsDiscouraged(other_addr)); // Different address, not discouraged
238240

239241
nodes[1] = new CNode{id++, NODE_NETWORK, INVALID_SOCKET, addr[1], /* nKeyedNetGroupIn */ 1,
@@ -242,26 +244,33 @@ BOOST_AUTO_TEST_CASE(peer_discouragement)
242244
nodes[1]->SetCommonVersion(PROTOCOL_VERSION);
243245
peerLogic->InitializeNode(nodes[1]);
244246
nodes[1]->fSuccessfullyConnected = true;
247+
connman->AddNode(*nodes[1]);
245248
peerLogic->Misbehaving(nodes[1]->GetId(), DISCOURAGEMENT_THRESHOLD - 1, /* message */ "");
246249
{
247250
LOCK(nodes[1]->cs_sendProcessing);
248251
BOOST_CHECK(peerLogic->SendMessages(nodes[1]));
249252
}
250-
BOOST_CHECK(!banman->IsDiscouraged(addr[1])); // [1] not discouraged yet...
251-
BOOST_CHECK(banman->IsDiscouraged(addr[0])); // ... but [0] still should be
253+
// [0] is still discouraged/disconnected.
254+
BOOST_CHECK(banman->IsDiscouraged(addr[0]));
255+
BOOST_CHECK(nodes[0]->fDisconnect);
256+
// [1] is not discouraged/disconnected yet.
257+
BOOST_CHECK(!banman->IsDiscouraged(addr[1]));
258+
BOOST_CHECK(!nodes[1]->fDisconnect);
252259
peerLogic->Misbehaving(nodes[1]->GetId(), 1, /* message */ ""); // [1] reaches discouragement threshold
253260
{
254261
LOCK(nodes[1]->cs_sendProcessing);
255262
BOOST_CHECK(peerLogic->SendMessages(nodes[1]));
256263
}
257-
// Expect both [0] and [1] to be discouraged now.
264+
// Expect both [0] and [1] to be discouraged/disconnected now.
258265
BOOST_CHECK(banman->IsDiscouraged(addr[0]));
266+
BOOST_CHECK(nodes[0]->fDisconnect);
259267
BOOST_CHECK(banman->IsDiscouraged(addr[1]));
268+
BOOST_CHECK(nodes[1]->fDisconnect);
260269

261270
for (CNode* node : nodes) {
262271
peerLogic->FinalizeNode(*node);
263-
delete node;
264272
}
273+
connman->ClearNodes();
265274
}
266275

267276
BOOST_AUTO_TEST_CASE(DoS_bantime)

0 commit comments

Comments
 (0)