22#include <xrpl/basics/CountedObject.h>
23#include <xrpl/beast/unit_test.h>
24#include <xrpl/protocol/SField.h>
25#include <xrpl/protocol/jss.h>
34 using namespace test::jtx;
39 using namespace std::chrono_literals;
43 result = env.
rpc(
"get_counts")[jss::result];
44 BEAST_EXPECT(result[jss::status] ==
"success");
45 BEAST_EXPECT(!result.
isMember(
"Transaction"));
46 BEAST_EXPECT(!result.
isMember(
"STObject"));
47 BEAST_EXPECT(!result.
isMember(
"HashRouterEntry"));
53 result[jss::dbKBTotal].
asInt() > 0);
60 env.
fund(
XRP(10000), alice, bob);
61 env.
trust(alice[
"USD"](1000), bob);
62 for (
auto i = 0; i < 20; ++i)
64 env(
pay(alice, bob, alice[
"USD"](5)));
70 result = env.
rpc(
"get_counts")[jss::result];
71 BEAST_EXPECT(result[jss::status] ==
"success");
73 auto const& objectCounts =
75 for (
auto const& it : objectCounts)
77 BEAST_EXPECTS(result.
isMember(it.first), it.first);
78 BEAST_EXPECTS(result[it.first].
asInt() == it.second, it.first);
80 BEAST_EXPECT(!result.
isMember(jss::local_txs));
86 result = env.
rpc(
"get_counts",
"100")[jss::result];
87 BEAST_EXPECT(result[jss::status] ==
"success");
90 auto const& objectCounts =
92 for (
auto const& it : objectCounts)
94 BEAST_EXPECTS(result.
isMember(it.first), it.first);
95 BEAST_EXPECTS(result[it.first].
asInt() == it.second, it.first);
97 BEAST_EXPECT(!result.
isMember(
"Transaction"));
98 BEAST_EXPECT(!result.
isMember(
"STTx"));
99 BEAST_EXPECT(!result.
isMember(
"STArray"));
100 BEAST_EXPECT(!result.
isMember(
"HashRouterEntry"));
101 BEAST_EXPECT(!result.
isMember(
"STLedgerEntry"));
106 env(
pay(alice, bob, alice[
"USD"](5)));
107 result = env.
rpc(
"get_counts")[jss::result];
111 result[jss::local_txs].
asInt() > 0);
std::string asString() const
Returns the unquoted string value.
bool isMember(char const *key) const
Return true if the object has a member named key.
static CountedObjects & getInstance() noexcept
List getCounts(int minimumThreshold) const
void run() override
Runs the suite.
Immutable cryptographic account descriptor.
A transaction testing environment.
bool close(NetClock::time_point closeTime, std::optional< std::chrono::milliseconds > consensusDelay=std::nullopt)
Close and advance the ledger.
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
Json::Value rpc(unsigned apiVersion, std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
Set the expected result code for a JTx The test will fail if the code doesn't match.
Json::Value pay(AccountID const &account, AccountID const &to, AnyAmount amount)
Create a payment.
XRP_t const XRP
Converts to XRP Issue or STAmount.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.