From 401a666f4d4870d050b93a28861f07eeb0e616d9 Mon Sep 17 00:00:00 2001 From: Richard Holland Date: Sat, 23 Sep 2023 18:06:21 +0000 Subject: [PATCH] debug governance tests, all passing --- src/ripple/app/tx/impl/Change.cpp | 4 +- src/ripple/consensus/Consensus.h | 2 +- src/test/app/XahauGenesis_test.cpp | 66 ++++++++++++++++++++++++------ 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/ripple/app/tx/impl/Change.cpp b/src/ripple/app/tx/impl/Change.cpp index 1174f8d39..f5f4c2870 100644 --- a/src/ripple/app/tx/impl/Change.cpp +++ b/src/ripple/app/tx/impl/Change.cpp @@ -410,7 +410,7 @@ Change::activateXahauGenesis() using namespace XahauGenesis; - bool const isTest = ctx_.tx.getFlags() & tfTestSuite && ctx_.app.config().standalone(); + bool const isTest = (ctx_.tx.getFlags() & tfTestSuite) && ctx_.app.config().standalone(); auto [initial_distribution, tables, gov_params] = normalizeXahauGenesis( @@ -422,7 +422,7 @@ Change::activateXahauGenesis() : L2Membership, GovernanceParameters, j_); - const static std::vector< + std::vector< std::tuple< uint256, // hook on std::vector, // hook code diff --git a/src/ripple/consensus/Consensus.h b/src/ripple/consensus/Consensus.h index 3a512521e..7ff919644 100644 --- a/src/ripple/consensus/Consensus.h +++ b/src/ripple/consensus/Consensus.h @@ -890,7 +890,7 @@ Consensus::simulate( JLOG(j_.info()) << "Simulating consensus"; now_ = now; closeLedger(); - result_->roundTime.tick(consensusDelay.value_or(100ms)); + result_->roundTime.tick(consensusDelay.value_or(1ms)); result_->proposers = prevProposers_ = currPeerPositions_.size(); prevRoundTime_ = result_->roundTime.read(); phase_ = ConsensusPhase::accepted; diff --git a/src/test/app/XahauGenesis_test.cpp b/src/test/app/XahauGenesis_test.cpp index 90e5c4aba..a2eb20ba5 100644 --- a/src/test/app/XahauGenesis_test.cpp +++ b/src/test/app/XahauGenesis_test.cpp @@ -92,7 +92,11 @@ struct XahauGenesis_test : public beast::unit_test::suite // the test cases in this test suite are based on changing the state of the ledger before // xahaugenesis is activated, to do this they call this templated function with an "execute-first" lambda void - activate(jtx::Env& env, bool burnedViaTest = false, bool skipTests = false, bool testFlag = false) + activate(uint64_t lineno, + jtx::Env& env, + bool burnedViaTest = false, // means the calling test already burned some of the genesis + bool skipTests = false, + bool const testFlag = false) { using namespace jtx; @@ -110,6 +114,15 @@ struct XahauGenesis_test : public beast::unit_test::suite uint32_t const startLgr = env.app().getLedgerMaster().getClosedLedger()->info().seq + 1; + if (DEBUG_XGTEST) + { + std::cout << "activate called. " << lineno << "L" + << " burnedViaTest: " << (burnedViaTest ? "true": "false") + << " skipTests: " << (skipTests ? "true" : "false") + << " testFlags: " << (testFlag ? "true" : "false") + << " startLgr: " << startLgr << "\n"; + } + // insert a ttAMENDMENT pseudo into the open ledger env.app().openLedger().modify( [&](OpenView& view, beast::Journal j) -> bool @@ -138,11 +151,13 @@ struct XahauGenesis_test : public beast::unit_test::suite if (skipTests) return; - + // sum the initial distribution balances, these should equal total coins in the closed ledger + std::vector> const& distribution = + testFlag ? XahauGenesis::TestDistribution : XahauGenesis::Distribution; XRPAmount total { GenesisAmount }; - for (auto const& [node, amt] : Distribution) + for (auto const& [node, amt] : distribution) total += amt; BEAST_EXPECT(burnedViaTest || env.app().getLedgerMaster().getClosedLedger()->info().drops == total); @@ -170,7 +185,10 @@ struct XahauGenesis_test : public beast::unit_test::suite auto const govVL = govSLE->getFieldVL(sfCreateCode); BEAST_EXPECT(govHash == ripple::sha512Half_s(ripple::Slice(govVL.data(), govVL.size()))); - BEAST_EXPECT(govSLE->getFieldU64(sfReferenceCount) == 1 + XahauGenesis::L2Membership.size()); + BEAST_EXPECT(govSLE->getFieldU64(sfReferenceCount) == 1 + + testFlag + ? XahauGenesis::TestL2Membership.size() + : XahauGenesis::L2Membership.size()); BEAST_EXPECT(govSLE->getFieldH256(sfHookOn) == ripple::uint256("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFBFFFFF")); BEAST_EXPECT(govSLE->getFieldH256(sfHookNamespace) == @@ -213,7 +231,7 @@ struct XahauGenesis_test : public beast::unit_test::suite uint8_t member_count = 0; std::vector, std::vector>> params = XahauGenesis::GovernanceParameters; - for (auto const& [rn, x]: XahauGenesis::Distribution) + for (auto const& [rn, x]: distribution) { const char first = rn.c_str()[0]; BEAST_EXPECT( @@ -257,9 +275,27 @@ struct XahauGenesis_test : public beast::unit_test::suite std::vector{'I', 'M', 'C'}, std::vector{member_count}); - // check parameters auto leParams = genesisHookArray[0].getFieldArray(sfHookParameters); + if (DEBUG_XGTEST) + { + std::cout << "leParams.size() = " << leParams.size() << ", params.size() == " << params.size() << "\n"; + + std::cout << "leParams:\n"; + for (auto const& p: leParams) + { + std::cout + << "\t" << strHex(p.getFieldVL(sfHookParameterName)) << " : " + << strHex(p.getFieldVL(sfHookParameterValue)) << "\n"; + } + + std::cout << "params:\n"; + for (auto const& [k,v]: params) + std::cout << "\t" << strHex(k) << " : " << strHex(v) << "\n"; + } + + // check parameters + BEAST_EXPECT(leParams.size() == params.size()); // these should be recorded in the same order @@ -311,7 +347,7 @@ struct XahauGenesis_test : public beast::unit_test::suite //beast::severities::kTrace }; - activate(env); + activate(__LINE__, env, false, false, false); } void @@ -330,7 +366,7 @@ struct XahauGenesis_test : public beast::unit_test::suite env(signers(env.master, 1, {{alice, 1}})); env.close(); - activate(env, true); + activate(__LINE__, env, true, false, false); } void @@ -349,7 +385,7 @@ struct XahauGenesis_test : public beast::unit_test::suite env(regkey(env.master, alice)); env.close(); - activate(env, true); + activate(__LINE__, env, true, false, false); } @@ -384,8 +420,9 @@ struct XahauGenesis_test : public beast::unit_test::suite } - activate(env, true, true, true); + activate(__LINE__, env, true, false, true); + env.close(); env.close(); XahauGenesis::TestDistribution.clear(); @@ -395,7 +432,8 @@ struct XahauGenesis_test : public beast::unit_test::suite invoke[jss::TransactionType] = "Invoke"; invoke[jss::Account] = invoker.human(); invoke[jss::Destination] = env.master.human(); - env(invoke, fee(XRP(1))); + env(invoke, fee(XRP(10))); + env.close(); env.close(); for (auto& [t, members] : tables) @@ -533,7 +571,8 @@ struct XahauGenesis_test : public beast::unit_test::suite testcase("Test governance membership voting L1"); Env env{*this, envconfig(), supported_amendments() - featureXahauGenesis, nullptr, - beast::severities::kTrace +// beast::severities::kTrace + beast::severities::kWarning }; auto const alice = Account("alice"); auto const bob = Account("bob"); @@ -1436,7 +1475,8 @@ struct XahauGenesis_test : public beast::unit_test::suite testcase("Test governance membership voting L1"); Env env{*this, envconfig(), supported_amendments() - featureXahauGenesis, nullptr, - beast::severities::kTrace +// beast::severities::kTrace + beast::severities::kWarning }; auto const alice = Account("alice"); auto const bob = Account("bob");