Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/test/peermanager_tests.cpp
Show First 20 Lines • Show All 351 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(compact_slots) { | ||||
BOOST_CHECK_EQUAL(pm.getFragmentation(), 0); | BOOST_CHECK_EQUAL(pm.getFragmentation(), 0); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(node_crud) { | BOOST_AUTO_TEST_CASE(node_crud) { | ||||
PeerManager pm; | PeerManager pm; | ||||
// Create one peer. | // Create one peer. | ||||
PeerId peerid = pm.addPeer(100); | PeerId peerid = pm.addPeer(100); | ||||
BOOST_CHECK_EQUAL(pm.getSuitableNodeToQuery(), NO_NODE); | BOOST_CHECK_EQUAL(pm.selectNode(), NO_NODE); | ||||
// Add 4 nodes. | // Add 4 nodes. | ||||
for (int i = 0; i < 4; i++) { | for (int i = 0; i < 4; i++) { | ||||
BOOST_CHECK(pm.addNodeToPeer(peerid, i, CPubKey())); | BOOST_CHECK(pm.addNodeToPeer(peerid, i, CPubKey())); | ||||
} | } | ||||
for (int i = 0; i < 100; i++) { | for (int i = 0; i < 100; i++) { | ||||
NodeId n = pm.getSuitableNodeToQuery(); | NodeId n = pm.selectNode(); | ||||
BOOST_CHECK(n >= 0 && n < 4); | BOOST_CHECK(n >= 0 && n < 4); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | ||||
} | } | ||||
// Remove a node, check that it doesn't show up. | // Remove a node, check that it doesn't show up. | ||||
BOOST_CHECK(pm.removeNode(2)); | BOOST_CHECK(pm.removeNode(2)); | ||||
for (int i = 0; i < 100; i++) { | for (int i = 0; i < 100; i++) { | ||||
NodeId n = pm.getSuitableNodeToQuery(); | NodeId n = pm.selectNode(); | ||||
BOOST_CHECK(n == 0 || n == 1 || n == 3); | BOOST_CHECK(n == 0 || n == 1 || n == 3); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | ||||
} | } | ||||
// Push a node's timeout in the future, so that it doesn't show up. | // Push a node's timeout in the future, so that it doesn't show up. | ||||
BOOST_CHECK(pm.updateNextRequestTime(1, std::chrono::steady_clock::now() + | BOOST_CHECK(pm.updateNextRequestTime(1, std::chrono::steady_clock::now() + | ||||
std::chrono::hours(24))); | std::chrono::hours(24))); | ||||
for (int i = 0; i < 100; i++) { | for (int i = 0; i < 100; i++) { | ||||
NodeId n = pm.getSuitableNodeToQuery(); | NodeId n = pm.selectNode(); | ||||
BOOST_CHECK(n == 0 || n == 3); | BOOST_CHECK(n == 0 || n == 3); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | ||||
} | } | ||||
// Move a node from a peer to another. | // Move a node from a peer to another. | ||||
PeerId altpeer = pm.addPeer(0); | PeerId altpeer = pm.addPeer(0); | ||||
BOOST_CHECK(pm.addNodeToPeer(altpeer, 3, CPubKey())); | BOOST_CHECK(pm.addNodeToPeer(altpeer, 3, CPubKey())); | ||||
for (int i = 0; i < 100; i++) { | for (int i = 0; i < 100; i++) { | ||||
NodeId n = pm.getSuitableNodeToQuery(); | NodeId n = pm.selectNode(); | ||||
BOOST_CHECK(n == 0); | BOOST_CHECK(n == 0); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | ||||
} | } | ||||
// Rescore peers and cheks node selection is affected as expected. | // Rescore peers and cheks node selection is affected as expected. | ||||
BOOST_CHECK(pm.rescorePeer(peerid, 0)); | BOOST_CHECK(pm.rescorePeer(peerid, 0)); | ||||
BOOST_CHECK(pm.rescorePeer(altpeer, 100)); | BOOST_CHECK(pm.rescorePeer(altpeer, 100)); | ||||
BOOST_CHECK_EQUAL(pm.compact(), 100); | BOOST_CHECK_EQUAL(pm.compact(), 100); | ||||
for (int i = 0; i < 100; i++) { | for (int i = 0; i < 100; i++) { | ||||
NodeId n = pm.getSuitableNodeToQuery(); | NodeId n = pm.selectNode(); | ||||
BOOST_CHECK(n == 3); | BOOST_CHECK(n == 3); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | pm.updateNextRequestTime(n, std::chrono::steady_clock::now())); | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |