Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/test/processor_tests.cpp
Show First 20 Lines • Show All 101 Lines • ▼ Show 20 Lines | AvalancheTestingSetup() | ||||
m_node.peerman = ::PeerManager::make( | m_node.peerman = ::PeerManager::make( | ||||
config.GetChainParams(), *m_connman, m_node.banman.get(), | config.GetChainParams(), *m_connman, m_node.banman.get(), | ||||
*m_node.scheduler, *m_node.chainman, *m_node.mempool, false); | *m_node.scheduler, *m_node.chainman, *m_node.mempool, false); | ||||
m_node.chain = interfaces::MakeChain(m_node, config.GetChainParams()); | m_node.chain = interfaces::MakeChain(m_node, config.GetChainParams()); | ||||
// Get the processor ready. | // Get the processor ready. | ||||
bilingual_str error; | bilingual_str error; | ||||
m_processor = Processor::MakeProcessor(*m_node.args, *m_node.chain, | m_processor = Processor::MakeProcessor(*m_node.args, *m_node.chain, | ||||
m_node.connman.get(), error); | m_node.connman.get(), | ||||
*m_node.scheduler, error); | |||||
BOOST_CHECK(m_processor); | BOOST_CHECK(m_processor); | ||||
gArgs.ForceSetArg("-avaproofstakeutxoconfirmations", "1"); | gArgs.ForceSetArg("-avaproofstakeutxoconfirmations", "1"); | ||||
} | } | ||||
~AvalancheTestingSetup() { | ~AvalancheTestingSetup() { | ||||
m_connman->ClearNodes(); | m_connman->ClearNodes(); | ||||
SyncWithValidationInterfaceQueue(); | SyncWithValidationInterfaceQueue(); | ||||
▲ Show 20 Lines • Show All 1,019 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(quorum_detection) { | ||||
const CKey key = CKey::MakeCompressedKey(); | const CKey key = CKey::MakeCompressedKey(); | ||||
auto localProof = buildRandomProof(minScore / 4, 100, key); | auto localProof = buildRandomProof(minScore / 4, 100, key); | ||||
gArgs.ForceSetArg("-avamasterkey", EncodeSecret(key)); | gArgs.ForceSetArg("-avamasterkey", EncodeSecret(key)); | ||||
gArgs.ForceSetArg("-avaproof", localProof->ToHex()); | gArgs.ForceSetArg("-avaproof", localProof->ToHex()); | ||||
bilingual_str error; | bilingual_str error; | ||||
std::unique_ptr<Processor> processor = Processor::MakeProcessor( | std::unique_ptr<Processor> processor = Processor::MakeProcessor( | ||||
*m_node.args, *m_node.chain, m_node.connman.get(), error); | *m_node.args, *m_node.chain, m_node.connman.get(), *m_node.scheduler, | ||||
error); | |||||
BOOST_CHECK(processor != nullptr); | BOOST_CHECK(processor != nullptr); | ||||
BOOST_CHECK(processor->getLocalProof() != nullptr); | BOOST_CHECK(processor->getLocalProof() != nullptr); | ||||
BOOST_CHECK_EQUAL(processor->getLocalProof()->getId(), localProof->getId()); | BOOST_CHECK_EQUAL(processor->getLocalProof()->getId(), localProof->getId()); | ||||
BOOST_CHECK_EQUAL(AvalancheTest::getMinQuorumScore(*processor), minScore); | BOOST_CHECK_EQUAL(AvalancheTest::getMinQuorumScore(*processor), minScore); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
AvalancheTest::getMinQuorumConnectedScoreRatio(*processor), 0.5); | AvalancheTest::getMinQuorumConnectedScoreRatio(*processor), 0.5); | ||||
▲ Show 20 Lines • Show All 131 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(quorum_detection_parameter_validation) { | ||||
// succeeds or fails as expected | // succeeds or fails as expected | ||||
for (auto it = tests.begin(); it != tests.end(); ++it) { | for (auto it = tests.begin(); it != tests.end(); ++it) { | ||||
gArgs.ForceSetArg("-avaminquorumstake", std::get<0>(*it)); | gArgs.ForceSetArg("-avaminquorumstake", std::get<0>(*it)); | ||||
gArgs.ForceSetArg("-avaminquorumconnectedstakeratio", std::get<1>(*it)); | gArgs.ForceSetArg("-avaminquorumconnectedstakeratio", std::get<1>(*it)); | ||||
gArgs.ForceSetArg("-avaminavaproofsnodecount", std::get<2>(*it)); | gArgs.ForceSetArg("-avaminavaproofsnodecount", std::get<2>(*it)); | ||||
bilingual_str error; | bilingual_str error; | ||||
std::unique_ptr<Processor> processor = Processor::MakeProcessor( | std::unique_ptr<Processor> processor = Processor::MakeProcessor( | ||||
*m_node.args, *m_node.chain, m_node.connman.get(), error); | *m_node.args, *m_node.chain, m_node.connman.get(), | ||||
*m_node.scheduler, error); | |||||
if (std::get<3>(*it)) { | if (std::get<3>(*it)) { | ||||
BOOST_CHECK(processor != nullptr); | BOOST_CHECK(processor != nullptr); | ||||
BOOST_CHECK(error.empty()); | BOOST_CHECK(error.empty()); | ||||
BOOST_CHECK_EQUAL(error.original, ""); | BOOST_CHECK_EQUAL(error.original, ""); | ||||
} else { | } else { | ||||
BOOST_CHECK(processor == nullptr); | BOOST_CHECK(processor == nullptr); | ||||
BOOST_CHECK(!error.empty()); | BOOST_CHECK(!error.empty()); | ||||
Show All 12 Lines | BOOST_AUTO_TEST_CASE(min_avaproofs_messages) { | ||||
argsman.ForceSetArg("-avaminquorumconnectedstakeratio", "0"); | argsman.ForceSetArg("-avaminquorumconnectedstakeratio", "0"); | ||||
auto checkMinAvaproofsMessages = [&](int64_t minAvaproofsMessages) { | auto checkMinAvaproofsMessages = [&](int64_t minAvaproofsMessages) { | ||||
argsman.ForceSetArg("-avaminavaproofsnodecount", | argsman.ForceSetArg("-avaminavaproofsnodecount", | ||||
ToString(minAvaproofsMessages)); | ToString(minAvaproofsMessages)); | ||||
bilingual_str error; | bilingual_str error; | ||||
auto processor = Processor::MakeProcessor(argsman, *m_node.chain, | auto processor = Processor::MakeProcessor(argsman, *m_node.chain, | ||||
m_node.connman.get(), error); | m_node.connman.get(), | ||||
*m_node.scheduler, error); | |||||
BOOST_CHECK_EQUAL(processor->isQuorumEstablished(), | BOOST_CHECK_EQUAL(processor->isQuorumEstablished(), | ||||
minAvaproofsMessages <= 0); | minAvaproofsMessages <= 0); | ||||
auto addNode = [&](NodeId nodeid) { | auto addNode = [&](NodeId nodeid) { | ||||
auto proof = buildRandomProof(MIN_VALID_PROOF_SCORE); | auto proof = buildRandomProof(MIN_VALID_PROOF_SCORE); | ||||
processor->withPeerManager([&](avalanche::PeerManager &pm) { | processor->withPeerManager([&](avalanche::PeerManager &pm) { | ||||
BOOST_CHECK(pm.registerProof(proof)); | BOOST_CHECK(pm.registerProof(proof)); | ||||
Show All 38 Lines | BOOST_AUTO_TEST_CASE_TEMPLATE(voting_parameters, P, VoteItemProviders) { | ||||
std::vector<std::tuple<int, int>> testCases = { | std::vector<std::tuple<int, int>> testCases = { | ||||
// {number of yes votes, number of neutral votes} | // {number of yes votes, number of neutral votes} | ||||
{0, AVALANCHE_VOTE_STALE_MIN_THRESHOLD}, | {0, AVALANCHE_VOTE_STALE_MIN_THRESHOLD}, | ||||
{AVALANCHE_FINALIZATION_SCORE + 4, AVALANCHE_FINALIZATION_SCORE - 6}, | {AVALANCHE_FINALIZATION_SCORE + 4, AVALANCHE_FINALIZATION_SCORE - 6}, | ||||
}; | }; | ||||
bilingual_str error; | bilingual_str error; | ||||
m_processor = Processor::MakeProcessor(*m_node.args, *m_node.chain, | m_processor = Processor::MakeProcessor(*m_node.args, *m_node.chain, | ||||
m_node.connman.get(), error); | m_node.connman.get(), | ||||
*m_node.scheduler, error); | |||||
BOOST_CHECK(m_processor != nullptr); | BOOST_CHECK(m_processor != nullptr); | ||||
BOOST_CHECK(error.empty()); | BOOST_CHECK(error.empty()); | ||||
P provider(this); | P provider(this); | ||||
auto &updates = provider.updates; | auto &updates = provider.updates; | ||||
const uint32_t invType = provider.invType; | const uint32_t invType = provider.invType; | ||||
▲ Show 20 Lines • Show All 64 Lines • Show Last 20 Lines |