mirror of
https://github.com/Xahau/xahaud.git
synced 2026-09-27 15:38:01 +00:00
Fix tests re: xahau genesis (#135)
* Update AccountTxPaging_test.cpp * fix failing tests * fix failing tests * Update Import_test.cpp
This commit is contained in:
@@ -61,12 +61,12 @@ class AccountTxPaging_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testAccountTxPaging()
|
||||
testAccountTxPaging(FeatureBitset features)
|
||||
{
|
||||
testcase("Paging for Single Account");
|
||||
using namespace test::jtx;
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
Account A1{"A1"};
|
||||
Account A2{"A2"};
|
||||
Account A3{"A3"};
|
||||
@@ -267,7 +267,9 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testAccountTxPaging();
|
||||
using namespace test::jtx;
|
||||
auto const sa = supported_amendments();
|
||||
testAccountTxPaging(sa - featureXahauGenesis);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ hasDepositAuth(jtx::Env const& env, jtx::Account const& acct)
|
||||
struct DepositAuth_test : public beast::unit_test::suite
|
||||
{
|
||||
void
|
||||
testEnable()
|
||||
testEnable(FeatureBitset features)
|
||||
{
|
||||
testcase("Enable");
|
||||
|
||||
@@ -50,7 +50,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
|
||||
{
|
||||
// featureDepositAuth is disabled.
|
||||
Env env(*this, supported_amendments() - featureDepositAuth);
|
||||
Env env(*this, features - featureDepositAuth);
|
||||
env.fund(XRP(10000), alice);
|
||||
|
||||
// Note that, to support old behavior, invalid flags are ignored.
|
||||
@@ -78,7 +78,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testPayIOU()
|
||||
testPayIOU(FeatureBitset features)
|
||||
{
|
||||
// Exercise IOU payments and non-direct XRP payments to an account
|
||||
// that has the lsfDepositAuth flag set.
|
||||
@@ -91,7 +91,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
Account const gw{"gw"};
|
||||
IOU const USD = gw["USD"];
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10000), alice, bob, carol, gw);
|
||||
env.trust(USD(1000), alice, bob);
|
||||
@@ -173,7 +173,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testPayXRP()
|
||||
testPayXRP(FeatureBitset features)
|
||||
{
|
||||
// Exercise direct XRP payments to an account that has the
|
||||
// lsfDepositAuth flag set.
|
||||
@@ -183,7 +183,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
Account const alice{"alice"};
|
||||
Account const bob{"bob"};
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10000), alice, bob);
|
||||
|
||||
@@ -274,7 +274,7 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testNoRipple()
|
||||
testNoRipple(FeatureBitset features)
|
||||
{
|
||||
// It its current incarnation the DepositAuth flag does not change
|
||||
// any behaviors regarding rippling and the NoRipple flag.
|
||||
@@ -374,17 +374,18 @@ struct DepositAuth_test : public beast::unit_test::suite
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testEnable();
|
||||
testPayIOU();
|
||||
testPayXRP();
|
||||
testNoRipple();
|
||||
auto const all{jtx::supported_amendments() - featureXahauGenesis};
|
||||
testEnable(all);
|
||||
testPayIOU(all);
|
||||
testPayXRP(all);
|
||||
testNoRipple(all);
|
||||
}
|
||||
};
|
||||
|
||||
struct DepositPreauth_test : public beast::unit_test::suite
|
||||
{
|
||||
void
|
||||
testEnable()
|
||||
testEnable(FeatureBitset features)
|
||||
{
|
||||
testcase("Enable");
|
||||
|
||||
@@ -393,7 +394,7 @@ struct DepositPreauth_test : public beast::unit_test::suite
|
||||
Account const becky{"becky"};
|
||||
{
|
||||
// featureDepositPreauth is disabled.
|
||||
Env env(*this, supported_amendments() - featureDepositPreauth);
|
||||
Env env(*this, features - featureDepositPreauth);
|
||||
env.fund(XRP(10000), alice, becky);
|
||||
env.close();
|
||||
|
||||
@@ -466,7 +467,7 @@ struct DepositPreauth_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testInvalid()
|
||||
testInvalid(FeatureBitset features)
|
||||
{
|
||||
testcase("Invalid");
|
||||
|
||||
@@ -475,7 +476,7 @@ struct DepositPreauth_test : public beast::unit_test::suite
|
||||
Account const becky{"becky"};
|
||||
Account const carol{"carol"};
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// Tell env about alice, becky and carol since they are not yet funded.
|
||||
env.memoize(alice);
|
||||
@@ -727,11 +728,11 @@ struct DepositPreauth_test : public beast::unit_test::suite
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testEnable();
|
||||
testInvalid();
|
||||
auto const supported{jtx::supported_amendments()};
|
||||
testPayment(supported - featureDepositPreauth);
|
||||
testPayment(supported);
|
||||
auto const all{jtx::supported_amendments() - featureXahauGenesis};
|
||||
testEnable(all);
|
||||
testInvalid(all);
|
||||
testPayment(all - featureDepositPreauth);
|
||||
testPayment(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -543,7 +543,7 @@ public:
|
||||
testOffersWhenFrozen(features);
|
||||
};
|
||||
using namespace test::jtx;
|
||||
auto const sa = supported_amendments();
|
||||
auto const sa = supported_amendments() - featureXahauGenesis;
|
||||
testAll(sa - featureFlowCross);
|
||||
testAll(sa);
|
||||
}
|
||||
|
||||
@@ -100,20 +100,22 @@ class LedgerMaster_test : public beast::unit_test::suite
|
||||
uint32_t txnIndex = metas[0]->getFieldU32(sfTransactionIndex);
|
||||
auto result = env.app().getLedgerMaster().txnIdFromIndex(
|
||||
startLegSeq, txnIndex);
|
||||
std::cout << "RESULT: " << *result << "\n";
|
||||
BEAST_EXPECT(
|
||||
*result ==
|
||||
uint256("277F4FD89C20B92457FEF05FF63F6405563AD0563C73D967A29727"
|
||||
"72679ADC65"));
|
||||
uint256("0CC11AD1AD89661689F6B6148D82CB6A7101DA4D66EC843670262D"
|
||||
"0B618F5745"));
|
||||
}
|
||||
// success (second tx)
|
||||
{
|
||||
uint32_t txnIndex = metas[1]->getFieldU32(sfTransactionIndex);
|
||||
auto result = env.app().getLedgerMaster().txnIdFromIndex(
|
||||
startLegSeq + 1, txnIndex);
|
||||
std::cout << "RESULT: " << *result << "\n";
|
||||
BEAST_EXPECT(
|
||||
*result ==
|
||||
uint256("293DF7335EBBAF4420D52E70ABF470EB4C5792CAEA2F91F76193C2"
|
||||
"819F538FDE"));
|
||||
uint256("DCAECE52F028B9D0F7CA43CBE15AB4EF7B84A8EF5D455238992E1E"
|
||||
"DF2BDA1637"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +124,7 @@ public:
|
||||
run() override
|
||||
{
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments()};
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testWithFeats(all);
|
||||
}
|
||||
|
||||
|
||||
@@ -791,7 +791,7 @@ public:
|
||||
run() override
|
||||
{
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments()};
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
FeatureBitset const fixNFTDir{fixNFTokenDirV1};
|
||||
|
||||
testWithFeats(
|
||||
|
||||
@@ -5185,7 +5185,7 @@ public:
|
||||
run() override
|
||||
{
|
||||
using namespace jtx;
|
||||
FeatureBitset const all{supported_amendments()};
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
FeatureBitset const flowCross{featureFlowCross};
|
||||
FeatureBitset const takerDryOffer{fixTakerDryOfferRemoval};
|
||||
FeatureBitset const rmSmallIncreasedQOffers{fixRmSmallIncreasedQOffers};
|
||||
|
||||
@@ -30,10 +30,10 @@ struct Regression_test : public beast::unit_test::suite
|
||||
{
|
||||
// OfferCreate, then OfferCreate with cancel
|
||||
void
|
||||
testOffer1()
|
||||
testOffer1(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const gw = Account("gw");
|
||||
auto const USD = gw["USD"];
|
||||
env.fund(XRP(10000), "alice", gw);
|
||||
@@ -46,11 +46,11 @@ struct Regression_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testLowBalanceDestroy()
|
||||
testLowBalanceDestroy(FeatureBitset features)
|
||||
{
|
||||
testcase("Account balance < fee destroys correct amount of XRP");
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.memoize("alice");
|
||||
|
||||
// The low balance scenario can not deterministically
|
||||
@@ -117,11 +117,11 @@ struct Regression_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testSecp256r1key()
|
||||
testSecp256r1key(FeatureBitset features)
|
||||
{
|
||||
testcase("Signing with a secp256r1 key should fail gracefully");
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// Test case we'll use.
|
||||
auto test256r1key = [&env](Account const& acct) {
|
||||
@@ -162,7 +162,7 @@ struct Regression_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testFeeEscalationAutofill()
|
||||
testFeeEscalationAutofill(FeatureBitset features)
|
||||
{
|
||||
testcase("Autofilled fee should use the escalated fee");
|
||||
using namespace jtx;
|
||||
@@ -170,7 +170,7 @@ struct Regression_test : public beast::unit_test::suite
|
||||
cfg->section("transaction_queue")
|
||||
.set("minimum_txn_in_ledger_standalone", "3");
|
||||
return cfg;
|
||||
}));
|
||||
}), features);
|
||||
Env_ss envs(env);
|
||||
|
||||
auto const alice = Account("alice");
|
||||
@@ -199,7 +199,7 @@ struct Regression_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testFeeEscalationExtremeConfig()
|
||||
testFeeEscalationExtremeConfig(FeatureBitset features)
|
||||
{
|
||||
testcase("Fee escalation shouldn't allocate extreme memory");
|
||||
using clock_type = std::chrono::steady_clock;
|
||||
@@ -214,7 +214,7 @@ struct Regression_test : public beast::unit_test::suite
|
||||
s.set("normal_consensus_increase_percent", "4294967295");
|
||||
|
||||
return cfg;
|
||||
}));
|
||||
}), features);
|
||||
|
||||
env(noop(env.master));
|
||||
// This test will probably fail if any breakpoints are encountered,
|
||||
@@ -248,11 +248,13 @@ struct Regression_test : public beast::unit_test::suite
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testOffer1();
|
||||
testLowBalanceDestroy();
|
||||
testSecp256r1key();
|
||||
testFeeEscalationAutofill();
|
||||
testFeeEscalationExtremeConfig();
|
||||
using namespace test::jtx;
|
||||
auto const all{jtx::supported_amendments() - featureXahauGenesis};
|
||||
testOffer1(all);
|
||||
testLowBalanceDestroy(all);
|
||||
testSecp256r1key(all);
|
||||
testFeeEscalationAutofill(all);
|
||||
testFeeEscalationExtremeConfig(all);
|
||||
testJsonInvalid();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -378,12 +378,12 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testTicketNotEnabled()
|
||||
testTicketNotEnabled(FeatureBitset features)
|
||||
{
|
||||
testcase("Feature Not Enabled");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this, supported_amendments() - featureTicketBatch};
|
||||
Env env{*this, features - featureTicketBatch};
|
||||
|
||||
env(ticket::create(env.master, 1), ter(temDISABLED));
|
||||
env.close();
|
||||
@@ -424,12 +424,12 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testTicketCreatePreflightFail()
|
||||
testTicketCreatePreflightFail(FeatureBitset features)
|
||||
{
|
||||
testcase("Create Tickets that fail Preflight");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
|
||||
Account const master{env.master};
|
||||
|
||||
@@ -471,14 +471,14 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testTicketCreatePreclaimFail()
|
||||
testTicketCreatePreclaimFail(FeatureBitset features)
|
||||
{
|
||||
testcase("Create Tickets that fail Preclaim");
|
||||
|
||||
using namespace test::jtx;
|
||||
{
|
||||
// Create tickets on a non-existent account.
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
Account alice{"alice"};
|
||||
env.memoize(alice);
|
||||
|
||||
@@ -563,12 +563,12 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testTicketInsufficientReserve()
|
||||
testTicketInsufficientReserve(FeatureBitset features)
|
||||
{
|
||||
testcase("Create Ticket Insufficient Reserve");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
Account alice{"alice"};
|
||||
|
||||
// Fund alice not quite enough to make the reserve for a Ticket.
|
||||
@@ -623,12 +623,12 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testUsingTickets()
|
||||
testUsingTickets(FeatureBitset features)
|
||||
{
|
||||
testcase("Using Tickets");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
Account alice{"alice"};
|
||||
|
||||
env.fund(XRP(10000), alice);
|
||||
@@ -709,7 +709,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testTransactionDatabaseWithTickets()
|
||||
testTransactionDatabaseWithTickets(FeatureBitset features)
|
||||
{
|
||||
// The Transaction database keeps each transaction's sequence number
|
||||
// in an entry (called "FromSeq"). Until the introduction of tickets
|
||||
@@ -724,7 +724,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
testcase("Transaction Database With Tickets");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
Account alice{"alice"};
|
||||
|
||||
env.fund(XRP(10000), alice);
|
||||
@@ -831,7 +831,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testSignWithTicketSequence()
|
||||
testSignWithTicketSequence(FeatureBitset features)
|
||||
{
|
||||
// The sign and the submit RPC commands automatically fill in the
|
||||
// Sequence field of a transaction if none is provided. If a
|
||||
@@ -840,7 +840,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
testcase("Sign with TicketSequence");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
Account alice{"alice"};
|
||||
|
||||
env.fund(XRP(10000), alice);
|
||||
@@ -922,7 +922,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testFixBothSeqAndTicket()
|
||||
testFixBothSeqAndTicket(FeatureBitset features)
|
||||
{
|
||||
// It is an error if a transaction contains a non-zero Sequence field
|
||||
// and a TicketSequence field. Verify that the error is detected.
|
||||
@@ -931,7 +931,7 @@ class Ticket_test : public beast::unit_test::suite
|
||||
// Try the test without featureTicketBatch enabled.
|
||||
using namespace test::jtx;
|
||||
{
|
||||
Env env{*this, supported_amendments() - featureTicketBatch};
|
||||
Env env{*this, features - featureTicketBatch};
|
||||
Account alice{"alice"};
|
||||
|
||||
env.fund(XRP(10000), alice);
|
||||
@@ -987,14 +987,16 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testTicketNotEnabled();
|
||||
testTicketCreatePreflightFail();
|
||||
testTicketCreatePreclaimFail();
|
||||
testTicketInsufficientReserve();
|
||||
testUsingTickets();
|
||||
testTransactionDatabaseWithTickets();
|
||||
testSignWithTicketSequence();
|
||||
testFixBothSeqAndTicket();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testTicketNotEnabled(all);
|
||||
testTicketCreatePreflightFail(all);
|
||||
testTicketCreatePreclaimFail(all);
|
||||
testTicketInsufficientReserve(all);
|
||||
testUsingTickets(all);
|
||||
testTransactionDatabaseWithTickets(all);
|
||||
testSignWithTicketSequence(all);
|
||||
testFixBothSeqAndTicket(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -232,13 +232,13 @@ class TxQ1_test : public beast::unit_test::suite
|
||||
|
||||
public:
|
||||
void
|
||||
testQueueSeq()
|
||||
testQueueSeq(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
testcase("queue sequence");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -444,12 +444,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testQueueTicket()
|
||||
testQueueTicket(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("queue ticket");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
|
||||
@@ -701,12 +701,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testTecResult()
|
||||
testTecResult(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("queue tec");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto gw = Account("gw");
|
||||
@@ -737,7 +737,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testLocalTxRetry()
|
||||
testLocalTxRetry(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
@@ -794,13 +794,13 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testLastLedgerSeq()
|
||||
testLastLedgerSeq(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
testcase("last ledger sequence");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -904,13 +904,13 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testZeroFeeTxn()
|
||||
testZeroFeeTxn(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
testcase("zero transaction fee");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -1001,11 +1001,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testFailInPreclaim()
|
||||
testFailInPreclaim(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
|
||||
Env env(*this, makeConfig());
|
||||
Env env(*this, makeConfig(), features);
|
||||
testcase("fail in preclaim");
|
||||
|
||||
auto alice = Account("alice");
|
||||
@@ -1025,12 +1025,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testQueuedTxFails()
|
||||
testQueuedTxFails(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("queued tx fails");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "2"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -1076,7 +1076,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMultiTxnPerAccount()
|
||||
testMultiTxnPerAccount(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("multi tx per account");
|
||||
@@ -1085,7 +1085,7 @@ public:
|
||||
*this,
|
||||
makeConfig(
|
||||
{{"minimum_txn_in_ledger_standalone", "3"}},
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}));
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -1346,13 +1346,13 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testTieBreaking()
|
||||
testTieBreaking(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
testcase("tie breaking");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "4"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "4"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -1640,12 +1640,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testAcctTxnID()
|
||||
testAcctTxnID(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("acct tx id");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "1"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "1"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
|
||||
@@ -1679,7 +1679,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMaximum()
|
||||
testMaximum(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::string_literals;
|
||||
@@ -1692,7 +1692,7 @@ public:
|
||||
{{"minimum_txn_in_ledger_standalone", "2"},
|
||||
{"minimum_txn_in_ledger", "5"},
|
||||
{"target_txn_in_ledger", "4"},
|
||||
{"maximum_txn_in_ledger", "5"}}));
|
||||
{"maximum_txn_in_ledger", "5"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
|
||||
@@ -1719,7 +1719,7 @@ public:
|
||||
{{"minimum_txn_in_ledger", "200"},
|
||||
{"minimum_txn_in_ledger_standalone", "200"},
|
||||
{"target_txn_in_ledger", "4"},
|
||||
{"maximum_txn_in_ledger", "5"}}));
|
||||
{"maximum_txn_in_ledger", "5"}}), features);
|
||||
// should throw
|
||||
fail();
|
||||
}
|
||||
@@ -1740,7 +1740,7 @@ public:
|
||||
{{"minimum_txn_in_ledger", "200"},
|
||||
{"minimum_txn_in_ledger_standalone", "2"},
|
||||
{"target_txn_in_ledger", "4"},
|
||||
{"maximum_txn_in_ledger", "5"}}));
|
||||
{"maximum_txn_in_ledger", "5"}}), features);
|
||||
// should throw
|
||||
fail();
|
||||
}
|
||||
@@ -1761,7 +1761,7 @@ public:
|
||||
{{"minimum_txn_in_ledger", "2"},
|
||||
{"minimum_txn_in_ledger_standalone", "200"},
|
||||
{"target_txn_in_ledger", "4"},
|
||||
{"maximum_txn_in_ledger", "5"}}));
|
||||
{"maximum_txn_in_ledger", "5"}}), features);
|
||||
// should throw
|
||||
fail();
|
||||
}
|
||||
@@ -1777,7 +1777,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testUnexpectedBalanceChange()
|
||||
testUnexpectedBalanceChange(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("unexpected balance change");
|
||||
@@ -1786,7 +1786,7 @@ public:
|
||||
*this,
|
||||
makeConfig(
|
||||
{{"minimum_txn_in_ledger_standalone", "3"}},
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}));
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
@@ -1874,7 +1874,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBlockersSeq()
|
||||
testBlockersSeq(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("blockers sequence");
|
||||
@@ -1886,7 +1886,7 @@ public:
|
||||
|
||||
auto queued = ter(terQUEUED);
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
BEAST_EXPECT(env.current()->fees().base == 10);
|
||||
|
||||
@@ -2004,7 +2004,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBlockersTicket()
|
||||
testBlockersTicket(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("blockers ticket");
|
||||
@@ -2016,7 +2016,7 @@ public:
|
||||
|
||||
auto queued = ter(terQUEUED);
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
BEAST_EXPECT(env.current()->fees().base == 10);
|
||||
|
||||
@@ -2166,7 +2166,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testInFlightBalance()
|
||||
testInFlightBalance(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("In-flight balance checks");
|
||||
@@ -2175,7 +2175,7 @@ public:
|
||||
*this,
|
||||
makeConfig(
|
||||
{{"minimum_txn_in_ledger_standalone", "3"}},
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}));
|
||||
{{"account_reserve", "200"}, {"owner_reserve", "50"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
auto charlie = Account("charlie");
|
||||
@@ -2520,13 +2520,13 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testConsequences()
|
||||
testConsequences(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono;
|
||||
testcase("consequences");
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const alice = Account("alice");
|
||||
env.memoize(alice);
|
||||
env.memoize("bob");
|
||||
@@ -2578,7 +2578,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testAcctInQueueButEmpty()
|
||||
testAcctInQueueButEmpty(FeatureBitset features)
|
||||
{
|
||||
// It is possible for an account to be present in the queue but have
|
||||
// no queued transactions. This has been the source of at least one
|
||||
@@ -2597,7 +2597,7 @@ public:
|
||||
|
||||
auto queued = ter(terQUEUED);
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
BEAST_EXPECT(env.current()->fees().base == 10);
|
||||
|
||||
@@ -2683,12 +2683,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testRPC()
|
||||
testRPC(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("rpc");
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
auto fee = env.rpc("fee");
|
||||
|
||||
@@ -2747,7 +2747,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testExpirationReplacement()
|
||||
testExpirationReplacement(FeatureBitset features)
|
||||
{
|
||||
/* This test is based on a reported regression where a
|
||||
replacement candidate transaction found the tx it was trying
|
||||
@@ -2768,7 +2768,7 @@ public:
|
||||
makeConfig(
|
||||
{{"minimum_txn_in_ledger_standalone", "1"},
|
||||
{"ledgers_in_queue", "10"},
|
||||
{"maximum_txn_per_account", "20"}}));
|
||||
{"maximum_txn_per_account", "20"}}), features);
|
||||
|
||||
// Alice will recreate the scenario. Bob will block.
|
||||
auto const alice = Account("alice");
|
||||
@@ -2848,7 +2848,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testFullQueueGapFill()
|
||||
testFullQueueGapFill(FeatureBitset features)
|
||||
{
|
||||
// This test focuses on which gaps in queued transactions are
|
||||
// allowed to be filled even when the account's queue is full.
|
||||
@@ -2860,7 +2860,7 @@ public:
|
||||
makeConfig(
|
||||
{{"minimum_txn_in_ledger_standalone", "1"},
|
||||
{"ledgers_in_queue", "10"},
|
||||
{"maximum_txn_per_account", "11"}}));
|
||||
{"maximum_txn_per_account", "11"}}), features);
|
||||
|
||||
// Alice will have the gaps. Bob will keep the queue busy with
|
||||
// high fee transactions so alice's transactions can expire to leave
|
||||
@@ -3015,11 +3015,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testSignAndSubmitSequence()
|
||||
testSignAndSubmitSequence(FeatureBitset features)
|
||||
{
|
||||
testcase("Autofilled sequence should account for TxQ");
|
||||
using namespace jtx;
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "6"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "6"}}), features);
|
||||
Env_ss envs(env);
|
||||
auto const& txQ = env.app().getTxQ();
|
||||
|
||||
@@ -3145,12 +3145,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testAccountInfo()
|
||||
testAccountInfo(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("account info");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
Env_ss envs(env);
|
||||
|
||||
Account const alice{"alice"};
|
||||
@@ -3424,12 +3424,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testServerInfo()
|
||||
testServerInfo(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("server info");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
Env_ss envs(env);
|
||||
|
||||
Account const alice{"alice"};
|
||||
@@ -3685,12 +3685,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testServerSubscribe()
|
||||
testServerSubscribe(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("server subscribe");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
Json::Value stream;
|
||||
stream[jss::streams] = Json::arrayValue;
|
||||
@@ -3830,12 +3830,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testClearQueuedAccountTxs()
|
||||
testClearQueuedAccountTxs(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
testcase("clear queued acct txs");
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
auto alice = Account("alice");
|
||||
auto bob = Account("bob");
|
||||
|
||||
@@ -4036,7 +4036,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testScaling()
|
||||
testScaling(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
using namespace std::chrono_literals;
|
||||
@@ -4050,7 +4050,7 @@ public:
|
||||
{"normal_consensus_increase_percent", "25"},
|
||||
{"slow_consensus_decrease_percent", "50"},
|
||||
{"target_txn_in_ledger", "10"},
|
||||
{"maximum_txn_per_account", "200"}}));
|
||||
{"maximum_txn_per_account", "200"}}), features);
|
||||
auto alice = Account("alice");
|
||||
|
||||
checkMetrics(__LINE__, env, 0, std::nullopt, 0, 3, 256);
|
||||
@@ -4136,7 +4136,7 @@ public:
|
||||
{"normal_consensus_increase_percent", "150"},
|
||||
{"slow_consensus_decrease_percent", "150"},
|
||||
{"target_txn_in_ledger", "10"},
|
||||
{"maximum_txn_per_account", "200"}}));
|
||||
{"maximum_txn_per_account", "200"}}), features);
|
||||
auto alice = Account("alice");
|
||||
|
||||
checkMetrics(__LINE__, env, 0, std::nullopt, 0, 3, 256);
|
||||
@@ -4176,7 +4176,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testInLedgerSeq()
|
||||
testInLedgerSeq(FeatureBitset features)
|
||||
{
|
||||
// Test the situation where a transaction with an account and
|
||||
// sequence that's in the queue also appears in the ledger.
|
||||
@@ -4189,7 +4189,7 @@ public:
|
||||
testcase("Sequence in queue and open ledger");
|
||||
using namespace jtx;
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
auto const alice = Account("alice");
|
||||
|
||||
@@ -4245,7 +4245,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testInLedgerTicket()
|
||||
testInLedgerTicket(FeatureBitset features)
|
||||
{
|
||||
// Test the situation where a transaction with an account and
|
||||
// ticket that's in the queue also appears in the ledger.
|
||||
@@ -4256,7 +4256,7 @@ public:
|
||||
testcase("Ticket in queue and open ledger");
|
||||
using namespace jtx;
|
||||
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}));
|
||||
Env env(*this, makeConfig({{"minimum_txn_in_ledger_standalone", "3"}}), features);
|
||||
|
||||
auto alice = Account("alice");
|
||||
|
||||
@@ -4340,7 +4340,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testReexecutePreflight()
|
||||
testReexecutePreflight(FeatureBitset features)
|
||||
{
|
||||
// The TxQ caches preflight results. But there are situations where
|
||||
// that cache must become invalidated, like if amendments change.
|
||||
@@ -4365,7 +4365,7 @@ public:
|
||||
{"maximum_txn_per_account", "10"}},
|
||||
{{"account_reserve", "1000"}, {"owner_reserve", "50"}});
|
||||
|
||||
Env env(*this, std::move(cfg));
|
||||
Env env(*this, std::move(cfg), features);
|
||||
|
||||
env.fund(XRP(10000), alice);
|
||||
env.close();
|
||||
@@ -4496,7 +4496,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testQueueFullDropPenalty()
|
||||
testQueueFullDropPenalty(FeatureBitset features)
|
||||
{
|
||||
// If...
|
||||
// o The queue is close to full,
|
||||
@@ -4531,7 +4531,7 @@ public:
|
||||
{"maximum_txn_per_account", "30"},
|
||||
{"minimum_queue_size", "50"}});
|
||||
|
||||
Env env(*this, std::move(cfg));
|
||||
Env env(*this, std::move(cfg), features);
|
||||
|
||||
// The noripple is to reduce the number of transactions required to
|
||||
// fund the accounts. There is no rippling in this test.
|
||||
@@ -4733,7 +4733,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testCancelQueuedOffers()
|
||||
testCancelQueuedOffers(FeatureBitset features)
|
||||
{
|
||||
testcase("Cancel queued offers");
|
||||
using namespace jtx;
|
||||
@@ -4748,7 +4748,7 @@ public:
|
||||
{"maximum_txn_per_account", "30"},
|
||||
{"minimum_queue_size", "50"}});
|
||||
|
||||
Env env(*this, std::move(cfg));
|
||||
Env env(*this, std::move(cfg), features);
|
||||
|
||||
// The noripple is to reduce the number of transactions required to
|
||||
// fund the accounts. There is no rippling in this test.
|
||||
@@ -4846,7 +4846,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testZeroReferenceFee()
|
||||
testZeroReferenceFee(FeatureBitset features)
|
||||
{
|
||||
testcase("Zero reference fee");
|
||||
using namespace jtx;
|
||||
@@ -4860,7 +4860,7 @@ public:
|
||||
{{"minimum_txn_in_ledger_standalone", "3"}},
|
||||
{{"reference_fee", "0"},
|
||||
{"account_reserve", "0"},
|
||||
{"owner_reserve", "0"}}));
|
||||
{"owner_reserve", "0"}}), features);
|
||||
|
||||
BEAST_EXPECT(env.current()->fees().base == 10);
|
||||
|
||||
@@ -4986,44 +4986,48 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testQueueSeq();
|
||||
testQueueTicket();
|
||||
testTecResult();
|
||||
testLocalTxRetry();
|
||||
testLastLedgerSeq();
|
||||
testZeroFeeTxn();
|
||||
testFailInPreclaim();
|
||||
testQueuedTxFails();
|
||||
testMultiTxnPerAccount();
|
||||
testTieBreaking();
|
||||
testAcctTxnID();
|
||||
testMaximum();
|
||||
testUnexpectedBalanceChange();
|
||||
testBlockersSeq();
|
||||
testBlockersTicket();
|
||||
testInFlightBalance();
|
||||
testConsequences();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testQueueSeq(all);
|
||||
testQueueTicket(all);
|
||||
testTecResult(all);
|
||||
testLocalTxRetry(all);
|
||||
testLastLedgerSeq(all);
|
||||
testZeroFeeTxn(all);
|
||||
testFailInPreclaim(all);
|
||||
testQueuedTxFails(all);
|
||||
testMultiTxnPerAccount(all);
|
||||
testTieBreaking(all);
|
||||
testAcctTxnID(all);
|
||||
testMaximum(all);
|
||||
testUnexpectedBalanceChange(all);
|
||||
testBlockersSeq(all);
|
||||
testBlockersTicket(all);
|
||||
testInFlightBalance(all);
|
||||
testConsequences(all);
|
||||
}
|
||||
|
||||
void
|
||||
run2()
|
||||
{
|
||||
testAcctInQueueButEmpty();
|
||||
testRPC();
|
||||
testExpirationReplacement();
|
||||
testFullQueueGapFill();
|
||||
testSignAndSubmitSequence();
|
||||
testAccountInfo();
|
||||
testServerInfo();
|
||||
testServerSubscribe();
|
||||
testClearQueuedAccountTxs();
|
||||
testScaling();
|
||||
testInLedgerSeq();
|
||||
testInLedgerTicket();
|
||||
testReexecutePreflight();
|
||||
testQueueFullDropPenalty();
|
||||
testCancelQueuedOffers();
|
||||
testZeroReferenceFee();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testAcctInQueueButEmpty(all);
|
||||
testRPC(all);
|
||||
testExpirationReplacement(all);
|
||||
testFullQueueGapFill(all);
|
||||
testSignAndSubmitSequence(all);
|
||||
testAccountInfo(all);
|
||||
testServerInfo(all);
|
||||
testServerSubscribe(all);
|
||||
testClearQueuedAccountTxs(all);
|
||||
testScaling(all);
|
||||
testInLedgerSeq(all);
|
||||
testInLedgerTicket(all);
|
||||
testReexecutePreflight(all);
|
||||
testQueueFullDropPenalty(all);
|
||||
testCancelQueuedOffers(all);
|
||||
testZeroReferenceFee(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ public:
|
||||
|
||||
// Test Env
|
||||
void
|
||||
testEnv()
|
||||
testEnv(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
auto const n = XRP(10000);
|
||||
@@ -155,7 +155,7 @@ public:
|
||||
|
||||
// unfunded
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.memoize(alice);
|
||||
env(pay("alice", "bob", XRP(1000)),
|
||||
seq(1),
|
||||
@@ -166,7 +166,7 @@ public:
|
||||
|
||||
// fund
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// variadics
|
||||
env.fund(n, "alice");
|
||||
@@ -186,14 +186,14 @@ public:
|
||||
|
||||
// trust
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(n, "alice", "bob", gw);
|
||||
env(trust("alice", USD(100)), require(lines("alice", 1)));
|
||||
}
|
||||
|
||||
// balance
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
BEAST_EXPECT(env.balance(alice) == 0);
|
||||
BEAST_EXPECT(env.balance(alice, USD) != 0);
|
||||
BEAST_EXPECT(env.balance(alice, USD) == USD(0));
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
|
||||
// seq
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(n, noripple("alice", gw));
|
||||
BEAST_EXPECT(env.seq("alice") == 3);
|
||||
BEAST_EXPECT(env.seq(gw) == 3);
|
||||
@@ -217,7 +217,7 @@ public:
|
||||
|
||||
// autofill
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(n, "alice");
|
||||
env.require(balance("alice", n));
|
||||
env(noop("alice"), fee(1), ter(telINSUF_FEE_P));
|
||||
@@ -233,10 +233,10 @@ public:
|
||||
|
||||
// Env::require
|
||||
void
|
||||
testRequire()
|
||||
testRequire(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const gw = Account("gw");
|
||||
auto const USD = gw["USD"];
|
||||
env.require(balance("alice", none));
|
||||
@@ -257,11 +257,11 @@ public:
|
||||
|
||||
// Signing with secp256k1 and ed25519 keys
|
||||
void
|
||||
testKeyType()
|
||||
testKeyType(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
|
||||
Env env{*this, supported_amendments() | fixMasterKeyAsRegularKey};
|
||||
Env env{*this, features | fixMasterKeyAsRegularKey};
|
||||
Account const alice("alice", KeyType::ed25519);
|
||||
Account const bob("bob", KeyType::secp256k1);
|
||||
Account const carol("carol");
|
||||
@@ -297,10 +297,10 @@ public:
|
||||
|
||||
// Payment basics
|
||||
void
|
||||
testPayments()
|
||||
testPayments(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const gw = Account("gateway");
|
||||
auto const USD = gw["USD"];
|
||||
|
||||
@@ -370,10 +370,10 @@ public:
|
||||
// transactions are neither queued nor
|
||||
// held.
|
||||
void
|
||||
testFailHard()
|
||||
testFailHard(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const gw = Account("gateway");
|
||||
auto const USD = gw["USD"];
|
||||
|
||||
@@ -454,11 +454,11 @@ public:
|
||||
|
||||
// Multi-sign basics
|
||||
void
|
||||
testMultiSign()
|
||||
testMultiSign(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
env(signers("alice", 1, {{"alice", 1}, {"bob", 2}}),
|
||||
ter(temBAD_SIGNER));
|
||||
@@ -478,14 +478,14 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testTicket()
|
||||
testTicket(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
// create syntax
|
||||
ticket::create("alice", 1);
|
||||
|
||||
{
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
env(noop("alice"),
|
||||
require(owners("alice", 0), tickets("alice", 0)));
|
||||
@@ -536,10 +536,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testProp()
|
||||
testProp(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(100000), "alice");
|
||||
auto jt1 = env.jt(noop("alice"));
|
||||
BEAST_EXPECT(!jt1.get<std::uint16_t>());
|
||||
@@ -606,10 +606,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMemo()
|
||||
testMemo(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
env(noop("alice"), memodata("data"), fee(1000));
|
||||
env(noop("alice"), memoformat("format"), fee(1000));
|
||||
@@ -624,10 +624,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMemoResult()
|
||||
testMemoResult(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
JTx jt(noop("alice"));
|
||||
memo("data", "format", "type")(env, jt);
|
||||
|
||||
@@ -641,10 +641,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testAdvance()
|
||||
testAdvance(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto seq = env.current()->seq();
|
||||
BEAST_EXPECT(seq == env.closed()->seq() + 1);
|
||||
env.close();
|
||||
@@ -656,10 +656,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testClose()
|
||||
testClose(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.close();
|
||||
env.close();
|
||||
env.fund(XRP(100000), "alice", "bob");
|
||||
@@ -672,10 +672,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testPath()
|
||||
testPath(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
auto const gw = Account("gw");
|
||||
auto const USD = gw["USD"];
|
||||
env.fund(XRP(10000), "alice", "bob");
|
||||
@@ -691,10 +691,10 @@ public:
|
||||
|
||||
// Test that jtx can re-sign a transaction that's already been signed.
|
||||
void
|
||||
testResignSigned()
|
||||
testResignSigned(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto const baseFee = env.current()->fees().base;
|
||||
@@ -709,10 +709,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testSignAndSubmit()
|
||||
testSignAndSubmit(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
Env_ss envs(env);
|
||||
|
||||
auto const alice = Account("alice");
|
||||
@@ -757,11 +757,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testFeatures()
|
||||
testFeatures(FeatureBitset features)
|
||||
{
|
||||
testcase("Env features");
|
||||
using namespace jtx;
|
||||
auto const supported = supported_amendments();
|
||||
auto const supported = features;
|
||||
|
||||
// this finds a feature that is not in
|
||||
// the supported amendments list and tests that it can be
|
||||
@@ -792,7 +792,7 @@ public:
|
||||
|
||||
{
|
||||
// default Env has all supported features
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
BEAST_EXPECT(
|
||||
supported.count() == env.app().config().features.size());
|
||||
foreachFeature(supported, [&](uint256 const& f) {
|
||||
@@ -812,7 +812,7 @@ public:
|
||||
}
|
||||
|
||||
auto const missingSomeFeatures =
|
||||
supported_amendments() - featureMultiSignReserve - featureFlow;
|
||||
features - featureMultiSignReserve - featureFlow;
|
||||
BEAST_EXPECT(missingSomeFeatures.count() == (supported.count() - 2));
|
||||
{
|
||||
// a Env supported_features_except is missing *only* those features
|
||||
@@ -872,7 +872,7 @@ public:
|
||||
// add a feature that is NOT in the supported amendments list
|
||||
// along with all supported amendments
|
||||
// the unsupported features should be enabled
|
||||
Env env{*this, supported_amendments().set(*neverSupportedFeat)};
|
||||
Env env{*this, features.set(*neverSupportedFeat)};
|
||||
|
||||
// this app will have all supported amendments and then the
|
||||
// one additional never supported feature flag
|
||||
@@ -904,27 +904,29 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testAccount();
|
||||
testAmount();
|
||||
testEnv();
|
||||
testRequire();
|
||||
testKeyType();
|
||||
testPayments();
|
||||
testFailHard();
|
||||
testMultiSign();
|
||||
testTicket();
|
||||
testEnv(all);
|
||||
testRequire(all);
|
||||
testKeyType(all);
|
||||
testPayments(all);
|
||||
testFailHard(all);
|
||||
testMultiSign(all);
|
||||
testTicket(all);
|
||||
testJTxProperties();
|
||||
testProp();
|
||||
testProp(all);
|
||||
testJTxCopy();
|
||||
testJTxMove();
|
||||
testMemo();
|
||||
testMemoResult();
|
||||
testAdvance();
|
||||
testClose();
|
||||
testPath();
|
||||
testResignSigned();
|
||||
testSignAndSubmit();
|
||||
testFeatures();
|
||||
testMemo(all);
|
||||
testMemoResult(all);
|
||||
testAdvance(all);
|
||||
testClose(all);
|
||||
testPath(all);
|
||||
testResignSigned(all);
|
||||
testSignAndSubmit(all);
|
||||
testFeatures(all);
|
||||
testExceptionalShutdown();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -114,12 +114,12 @@ class AccountObjects_test : public beast::unit_test::suite
|
||||
public:
|
||||
#define HSFEE fee(100'000'000)
|
||||
void
|
||||
testErrors()
|
||||
testErrors(FeatureBitset features)
|
||||
{
|
||||
testcase("error cases");
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// test error on no account
|
||||
{
|
||||
@@ -247,12 +247,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testUnsteppedThenStepped()
|
||||
testUnsteppedThenStepped(FeatureBitset features)
|
||||
{
|
||||
testcase("unsteppedThenStepped");
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
Account const gw1{"G1"};
|
||||
Account const gw2{"G2"};
|
||||
@@ -337,7 +337,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testUnsteppedThenSteppedWithNFTs()
|
||||
testUnsteppedThenSteppedWithNFTs(FeatureBitset features)
|
||||
{
|
||||
// The preceding test case, unsteppedThenStepped(), found a bug in the
|
||||
// support for NFToken Pages. So we're leaving that test alone when
|
||||
@@ -345,7 +345,7 @@ public:
|
||||
testcase("unsteppedThenSteppedWithNFTs");
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
Account const gw1{"G1"};
|
||||
Account const gw2{"G2"};
|
||||
@@ -539,7 +539,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testObjectTypes()
|
||||
testObjectTypes(FeatureBitset features)
|
||||
{
|
||||
testcase("object types");
|
||||
|
||||
@@ -551,7 +551,7 @@ public:
|
||||
Account const gw{"gateway"};
|
||||
auto const USD = gw["USD"];
|
||||
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// Make a lambda we can use to get "account_objects" easily.
|
||||
auto acct_objs = [&env](Account const& acct, char const* type) {
|
||||
@@ -847,10 +847,12 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testErrors();
|
||||
testUnsteppedThenStepped();
|
||||
testUnsteppedThenSteppedWithNFTs();
|
||||
testObjectTypes();
|
||||
using namespace jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testErrors(all);
|
||||
testUnsteppedThenStepped(all);
|
||||
testUnsteppedThenSteppedWithNFTs(all);
|
||||
testObjectTypes(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -42,10 +42,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testNonAdminMinLimit()
|
||||
testNonAdminMinLimit(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env{*this, envconfig(no_admin)};
|
||||
Env env{*this, envconfig(no_admin), features};
|
||||
Account const gw("G1");
|
||||
auto const USD_gw = gw["USD"];
|
||||
Account const bob("bob");
|
||||
@@ -86,10 +86,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testSequential(bool asAdmin)
|
||||
testSequential(FeatureBitset features, bool asAdmin)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env{*this, asAdmin ? envconfig() : envconfig(no_admin)};
|
||||
Env env{*this, asAdmin ? envconfig() : envconfig(no_admin), features};
|
||||
Account const gw("G1");
|
||||
auto const USD_gw = gw["USD"];
|
||||
Account const bob("bob");
|
||||
@@ -220,10 +220,10 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBadInput()
|
||||
testBadInput(FeatureBitset features)
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
Account const gw("G1");
|
||||
auto const USD_gw = gw["USD"];
|
||||
Account const bob("bob");
|
||||
@@ -326,10 +326,12 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testSequential(true);
|
||||
testSequential(false);
|
||||
testBadInput();
|
||||
testNonAdminMinLimit();
|
||||
using namespace jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testSequential(all, true);
|
||||
testSequential(all, false);
|
||||
testBadInput(all);
|
||||
testNonAdminMinLimit(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -50,12 +50,12 @@ class Book_test : public beast::unit_test::suite
|
||||
|
||||
public:
|
||||
void
|
||||
testOneSideEmptyBook()
|
||||
testOneSideEmptyBook(FeatureBitset features)
|
||||
{
|
||||
testcase("One Side Empty Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto wsc = makeWSClient(env.app().config());
|
||||
@@ -128,12 +128,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testOneSideOffersInBook()
|
||||
testOneSideOffersInBook(FeatureBitset features)
|
||||
{
|
||||
testcase("One Side Offers In Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto wsc = makeWSClient(env.app().config());
|
||||
@@ -219,12 +219,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBothSidesEmptyBook()
|
||||
testBothSidesEmptyBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Both Sides Empty Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto wsc = makeWSClient(env.app().config());
|
||||
@@ -309,12 +309,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBothSidesOffersInBook()
|
||||
testBothSidesOffersInBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Both Sides Offers In Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto wsc = makeWSClient(env.app().config());
|
||||
@@ -418,12 +418,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMultipleBooksOneSideEmptyBook()
|
||||
testMultipleBooksOneSideEmptyBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Multiple Books, One Side Empty");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto CNY = Account("alice")["CNY"];
|
||||
@@ -530,12 +530,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMultipleBooksOneSideOffersInBook()
|
||||
testMultipleBooksOneSideOffersInBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Multiple Books, One Side Offers In Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto CNY = Account("alice")["CNY"];
|
||||
@@ -667,12 +667,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMultipleBooksBothSidesEmptyBook()
|
||||
testMultipleBooksBothSidesEmptyBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Multiple Books, Both Sides Empty Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto CNY = Account("alice")["CNY"];
|
||||
@@ -801,12 +801,12 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testMultipleBooksBothSidesOffersInBook()
|
||||
testMultipleBooksBothSidesOffersInBook(FeatureBitset features)
|
||||
{
|
||||
testcase("Multiple Books, Both Sides Offers In Book");
|
||||
using namespace std::chrono_literals;
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10000), "alice");
|
||||
auto USD = Account("alice")["USD"];
|
||||
auto CNY = Account("alice")["CNY"];
|
||||
@@ -973,11 +973,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testTrackOffers()
|
||||
testTrackOffers(FeatureBitset features)
|
||||
{
|
||||
testcase("TrackOffers");
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
Account gw{"gw"};
|
||||
Account alice{"alice"};
|
||||
Account bob{"bob"};
|
||||
@@ -1156,7 +1156,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testCrossingSingleBookOffer()
|
||||
testCrossingSingleBookOffer(FeatureBitset features)
|
||||
{
|
||||
testcase("Crossing single book offer");
|
||||
|
||||
@@ -1165,7 +1165,7 @@ public:
|
||||
// ledger entries
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// Scenario is:
|
||||
// - Alice and Bob place identical offers for USD -> XRP
|
||||
@@ -1224,7 +1224,7 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testCrossingMultiBookOffer()
|
||||
testCrossingMultiBookOffer(FeatureBitset features)
|
||||
{
|
||||
testcase("Crossing multi-book offer");
|
||||
|
||||
@@ -1233,7 +1233,7 @@ public:
|
||||
// books that are under subscription
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
|
||||
// Scenario is:
|
||||
// - Alice has 1 USD and wants 100 XRP
|
||||
@@ -1307,11 +1307,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBookOfferErrors()
|
||||
testBookOfferErrors(FeatureBitset features)
|
||||
{
|
||||
testcase("BookOffersRPC Errors");
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
Env env(*this, features);
|
||||
Account gw{"gw"};
|
||||
Account alice{"alice"};
|
||||
env.fund(XRP(10000), alice, gw);
|
||||
@@ -1658,11 +1658,11 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testBookOfferLimits(bool asAdmin)
|
||||
testBookOfferLimits(FeatureBitset features, bool asAdmin)
|
||||
{
|
||||
testcase("BookOffer Limits");
|
||||
using namespace jtx;
|
||||
Env env{*this, asAdmin ? envconfig() : envconfig(no_admin)};
|
||||
Env env{*this, asAdmin ? envconfig() : envconfig(no_admin), features};
|
||||
Account gw{"gw"};
|
||||
env.fund(XRP(200000), gw);
|
||||
// Note that calls to env.close() fail without admin permission.
|
||||
@@ -1712,20 +1712,22 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testOneSideEmptyBook();
|
||||
testOneSideOffersInBook();
|
||||
testBothSidesEmptyBook();
|
||||
testBothSidesOffersInBook();
|
||||
testMultipleBooksOneSideEmptyBook();
|
||||
testMultipleBooksOneSideOffersInBook();
|
||||
testMultipleBooksBothSidesEmptyBook();
|
||||
testMultipleBooksBothSidesOffersInBook();
|
||||
testTrackOffers();
|
||||
testCrossingSingleBookOffer();
|
||||
testCrossingMultiBookOffer();
|
||||
testBookOfferErrors();
|
||||
testBookOfferLimits(true);
|
||||
testBookOfferLimits(false);
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testOneSideEmptyBook(all);
|
||||
testOneSideOffersInBook(all);
|
||||
testBothSidesEmptyBook(all);
|
||||
testBothSidesOffersInBook(all);
|
||||
testMultipleBooksOneSideEmptyBook(all);
|
||||
testMultipleBooksOneSideOffersInBook(all);
|
||||
testMultipleBooksBothSidesEmptyBook(all);
|
||||
testMultipleBooksBothSidesOffersInBook(all);
|
||||
testTrackOffers(all);
|
||||
testCrossingSingleBookOffer(all);
|
||||
testCrossingMultiBookOffer(all);
|
||||
testBookOfferErrors(all);
|
||||
testBookOfferLimits(all, true);
|
||||
testBookOfferLimits(all, false);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ public:
|
||||
class DeliveredAmount_test : public beast::unit_test::suite
|
||||
{
|
||||
void
|
||||
testAccountDeliveredAmountSubscribe()
|
||||
testAccountDeliveredAmountSubscribe(FeatureBitset features)
|
||||
{
|
||||
testcase("Ledger Request Subscribe DeliveredAmount");
|
||||
|
||||
@@ -193,7 +193,7 @@ class DeliveredAmount_test : public beast::unit_test::suite
|
||||
|
||||
for (bool const afterSwitchTime : {true, false})
|
||||
{
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
env.fund(XRP(10000), alice, bob, carol, gw);
|
||||
env.trust(USD(1000), alice, bob, carol);
|
||||
if (afterSwitchTime)
|
||||
@@ -267,7 +267,7 @@ class DeliveredAmount_test : public beast::unit_test::suite
|
||||
}
|
||||
}
|
||||
void
|
||||
testTxDeliveredAmountRPC()
|
||||
testTxDeliveredAmountRPC(FeatureBitset features)
|
||||
{
|
||||
testcase("Ledger Request RPC DeliveredAmount");
|
||||
|
||||
@@ -282,7 +282,7 @@ class DeliveredAmount_test : public beast::unit_test::suite
|
||||
|
||||
for (bool const afterSwitchTime : {true, false})
|
||||
{
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
env.fund(XRP(10000), alice, bob, carol, gw);
|
||||
env.trust(USD(1000), alice, bob, carol);
|
||||
if (afterSwitchTime)
|
||||
@@ -329,8 +329,10 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testTxDeliveredAmountRPC();
|
||||
testAccountDeliveredAmountSubscribe();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testTxDeliveredAmountRPC(all);
|
||||
testAccountDeliveredAmountSubscribe(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -28,12 +28,12 @@ namespace ripple {
|
||||
class OwnerInfo_test : public beast::unit_test::suite
|
||||
{
|
||||
void
|
||||
testBadInput()
|
||||
testBadInput(FeatureBitset features)
|
||||
{
|
||||
testcase("Bad input to owner_info");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
|
||||
auto const alice = Account{"alice"};
|
||||
env.fund(XRP(10000), alice);
|
||||
@@ -81,12 +81,12 @@ class OwnerInfo_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testBasic()
|
||||
testBasic(FeatureBitset features)
|
||||
{
|
||||
testcase("Basic request for owner_info");
|
||||
|
||||
using namespace test::jtx;
|
||||
Env env{*this};
|
||||
Env env{*this, features};
|
||||
|
||||
auto const alice = Account{"alice"};
|
||||
auto const gw = Account{"gateway"};
|
||||
@@ -210,8 +210,10 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testBadInput();
|
||||
testBasic();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
testBadInput(all);
|
||||
testBasic(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -52,13 +52,13 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
}
|
||||
};
|
||||
void
|
||||
testGetLedger()
|
||||
testGetLedger(FeatureBitset features)
|
||||
{
|
||||
testcase("GetLedger");
|
||||
using namespace test::jtx;
|
||||
std::unique_ptr<Config> config = envconfig(addGrpcConfig);
|
||||
std::string grpcPort = *(*config)["port_grpc"].get<std::string>("port");
|
||||
Env env(*this, std::move(config));
|
||||
Env env(*this, std::move(config), features);
|
||||
|
||||
env.close();
|
||||
|
||||
@@ -494,13 +494,13 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
}
|
||||
};
|
||||
void
|
||||
testGetLedgerData()
|
||||
testGetLedgerData(FeatureBitset features)
|
||||
{
|
||||
testcase("GetLedgerData");
|
||||
using namespace test::jtx;
|
||||
std::unique_ptr<Config> config = envconfig(addGrpcConfig);
|
||||
std::string grpcPort = *(*config)["port_grpc"].get<std::string>("port");
|
||||
Env env(*this, std::move(config));
|
||||
Env env(*this, std::move(config), features);
|
||||
auto grpcLedgerData = [&grpcPort](
|
||||
auto sequence, std::string marker = "") {
|
||||
GrpcLedgerDataClient grpcClient{grpcPort};
|
||||
@@ -616,13 +616,13 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
};
|
||||
|
||||
void
|
||||
testGetLedgerDiff()
|
||||
testGetLedgerDiff(FeatureBitset features)
|
||||
{
|
||||
testcase("GetLedgerDiff");
|
||||
using namespace test::jtx;
|
||||
std::unique_ptr<Config> config = envconfig(addGrpcConfig);
|
||||
std::string grpcPort = *(*config)["port_grpc"].get<std::string>("port");
|
||||
Env env(*this, std::move(config));
|
||||
Env env(*this, std::move(config), features);
|
||||
|
||||
auto grpcLedgerDiff = [&grpcPort](
|
||||
auto baseSequence, auto desiredSequence) {
|
||||
@@ -731,13 +731,13 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
};
|
||||
|
||||
void
|
||||
testGetLedgerEntry()
|
||||
testGetLedgerEntry(FeatureBitset features)
|
||||
{
|
||||
testcase("GetLedgerDiff");
|
||||
using namespace test::jtx;
|
||||
std::unique_ptr<Config> config = envconfig(addGrpcConfig);
|
||||
std::string grpcPort = *(*config)["port_grpc"].get<std::string>("port");
|
||||
Env env(*this, std::move(config));
|
||||
Env env(*this, std::move(config), features);
|
||||
|
||||
auto grpcLedgerEntry = [&grpcPort](auto sequence, auto key) {
|
||||
GrpcLedgerEntryClient grpcClient{grpcPort};
|
||||
@@ -888,7 +888,7 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
}
|
||||
|
||||
void
|
||||
testSecureGateway()
|
||||
testSecureGateway(FeatureBitset features)
|
||||
{
|
||||
testcase("SecureGateway");
|
||||
using namespace test::jtx;
|
||||
@@ -897,7 +897,7 @@ class ReportingETL_test : public beast::unit_test::suite
|
||||
addGrpcConfigWithSecureGateway, getEnvLocalhostAddr());
|
||||
std::string grpcPort =
|
||||
*(*config)["port_grpc"].get<std::string>("port");
|
||||
Env env(*this, std::move(config));
|
||||
Env env(*this, std::move(config), features);
|
||||
|
||||
env.close();
|
||||
|
||||
@@ -1120,17 +1120,20 @@ public:
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testGetLedger();
|
||||
using namespace test::jtx;
|
||||
FeatureBitset const all{supported_amendments() - featureXahauGenesis};
|
||||
|
||||
testGetLedger(all);
|
||||
|
||||
testGetLedgerData();
|
||||
testGetLedgerData(all);
|
||||
|
||||
testGetLedgerDiff();
|
||||
testGetLedgerDiff(all);
|
||||
|
||||
testGetLedgerEntry();
|
||||
testGetLedgerEntry(all);
|
||||
|
||||
testNeedCurrentOrClosed();
|
||||
|
||||
testSecureGateway();
|
||||
testSecureGateway(all);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user