rippled
Env.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_TEST_JTX_ENV_H_INCLUDED
21 #define RIPPLE_TEST_JTX_ENV_H_INCLUDED
22 
23 #include <ripple/app/ledger/Ledger.h>
24 #include <ripple/app/ledger/OpenLedger.h>
25 #include <ripple/app/main/Application.h>
26 #include <ripple/app/paths/Pathfinder.h>
27 #include <ripple/basics/Log.h>
28 #include <ripple/basics/chrono.h>
29 #include <ripple/beast/utility/Journal.h>
30 #include <ripple/core/Config.h>
31 #include <ripple/json/json_value.h>
32 #include <ripple/json/to_string.h>
33 #include <ripple/protocol/Feature.h>
34 #include <ripple/protocol/Indexes.h>
35 #include <ripple/protocol/Issue.h>
36 #include <ripple/protocol/STAmount.h>
37 #include <ripple/protocol/STObject.h>
38 #include <ripple/protocol/STTx.h>
39 #include <ripple/rpc/impl/RPCHelpers.h>
40 #include <functional>
41 #include <string>
42 #include <test/jtx/AbstractClient.h>
43 #include <test/jtx/Account.h>
44 #include <test/jtx/JTx.h>
45 #include <test/jtx/ManualTimeKeeper.h>
46 #include <test/jtx/amount.h>
47 #include <test/jtx/envconfig.h>
48 #include <test/jtx/require.h>
49 #include <test/jtx/tags.h>
50 #include <test/unit_test/SuiteJournal.h>
51 #include <tuple>
52 #include <type_traits>
53 #include <unordered_map>
54 #include <utility>
55 #include <vector>
56 
57 namespace ripple {
58 namespace test {
59 namespace jtx {
60 
62 template <class... Args>
63 std::array<Account, 1 + sizeof...(Args)>
64 noripple(Account const& account, Args const&... args)
65 {
66  return {{account, args...}};
67 }
68 
69 inline FeatureBitset
71 {
72  static const FeatureBitset ids = [] {
73  auto const& sa = ripple::detail::supportedAmendments();
75  feats.reserve(sa.size());
76  for (auto const& [s, vote] : sa)
77  {
78  (void)vote;
79  if (auto const f = getRegisteredFeature(s))
80  feats.push_back(*f);
81  else
82  Throw<std::runtime_error>(
83  "Unknown feature: " + s + " in supportedAmendments.");
84  }
85  return FeatureBitset(feats);
86  }();
87  return ids;
88 }
89 
90 //------------------------------------------------------------------------------
91 
92 class SuiteLogs : public Logs
93 {
94  beast::unit_test::suite& suite_;
95 
96 public:
97  explicit SuiteLogs(beast::unit_test::suite& suite)
98  : Logs(beast::severities::kError), suite_(suite)
99  {
100  }
101 
102  ~SuiteLogs() override = default;
103 
106  std::string const& partition,
108  {
109  return std::make_unique<SuiteJournalSink>(partition, threshold, suite_);
110  }
111 };
112 
113 //------------------------------------------------------------------------------
114 
116 class Env
117 {
118 public:
119  beast::unit_test::suite& test;
120 
122 
123 private:
124  struct AppBundle
125  {
126  Application* app = nullptr;
131 
132  AppBundle() = default;
133  AppBundle(
134  beast::unit_test::suite& suite,
138  ~AppBundle();
139  };
140 
142 
143 public:
145 
146  Env() = delete;
147  Env&
148  operator=(Env const&) = delete;
149  Env(Env const&) = delete;
150 
165  // VFALCO Could wrap the suite::log in a Journal here
166  Env(beast::unit_test::suite& suite_,
168  FeatureBitset features,
169  std::unique_ptr<Logs> logs = nullptr,
171  : test(suite_)
172  , bundle_(suite_, std::move(config), std::move(logs), thresh)
173  , journal{bundle_.app->journal("Env")}
174  {
178  features, [&appFeats = app().config().features](uint256 const& f) {
179  appFeats.insert(f);
180  });
181  }
182 
196  Env(beast::unit_test::suite& suite_, FeatureBitset features)
197  : Env(suite_, envconfig(), features)
198  {
199  }
200 
213  Env(beast::unit_test::suite& suite_,
215  std::unique_ptr<Logs> logs = nullptr,
217  : Env(suite_,
218  std::move(config),
220  std::move(logs),
221  thresh)
222  {
223  }
224 
234  Env(beast::unit_test::suite& suite_) : Env(suite_, envconfig())
235  {
236  }
237 
238  virtual ~Env() = default;
239 
240  Application&
241  app()
242  {
243  return *bundle_.app;
244  }
245 
246  Application const&
247  app() const
248  {
249  return *bundle_.app;
250  }
251 
254  {
255  return *bundle_.timeKeeper;
256  }
257 
264  now()
265  {
266  return timeKeeper().now();
267  }
268 
272  {
273  return *bundle_.client;
274  }
275 
281  template <class... Args>
283  rpc(unsigned apiVersion,
285  std::string const& cmd,
286  Args&&... args);
287 
288  template <class... Args>
290  rpc(unsigned apiVersion, std::string const& cmd, Args&&... args);
291 
292  template <class... Args>
295  std::string const& cmd,
296  Args&&... args);
297 
298  template <class... Args>
300  rpc(std::string const& cmd, Args&&... args);
301 
311  current() const
312  {
313  return app().openLedger().current();
314  }
315 
324  closed();
325 
345  bool
346  close(
347  NetClock::time_point closeTime,
348  std::optional<std::chrono::milliseconds> consensusDelay = std::nullopt);
349 
357  template <class Rep, class Period>
358  bool
360  {
361  // VFALCO Is this the correct time?
362  return close(now() + elapsed);
363  }
364 
372  bool
374  {
375  // VFALCO Is this the correct time?
376  return close(std::chrono::seconds(5));
377  }
378 
382  void
383  trace(int howMany = -1)
384  {
385  trace_ = howMany;
386  }
387 
389  void
391  {
392  trace_ = 0;
393  }
394 
396  void
398  {
399  app().checkSigs(false);
400  }
401 
403  void
404  memoize(Account const& account);
405 
408  Account const&
409  lookup(AccountID const& id) const;
410 
411  Account const&
412  lookup(std::string const& base58ID) const;
419  balance(Account const& account) const;
420 
426  seq(Account const& account) const;
427 
431  // VFALCO NOTE This should return a unit-less amount
433  balance(Account const& account, Issue const& issue) const;
434 
439  le(Account const& account) const;
440 
445  le(Keylet const& k) const;
446 
448  template <class JsonValue, class... FN>
449  JTx
450  jt(JsonValue&& jv, FN const&... fN)
451  {
452  JTx jt(std::forward<JsonValue>(jv));
453  invoke(jt, fN...);
454  autofill(jt);
455  jt.stx = st(jt);
456  return jt;
457  }
458 
460  template <class JsonValue, class... FN>
461  JTx
462  jtnofill(JsonValue&& jv, FN const&... fN)
463  {
464  JTx jt(std::forward<JsonValue>(jv));
465  invoke(jt, fN...);
466  autofill_sig(jt);
467  jt.stx = st(jt);
468  return jt;
469  }
470 
474  template <class JsonValue, class... FN>
476  json(JsonValue&& jv, FN const&... fN)
477  {
478  auto tj = jt(std::forward<JsonValue>(jv), fN...);
479  return std::move(tj.jv);
480  }
481 
487  template <class... Args>
488  void
489  require(Args const&... args)
490  {
491  jtx::required(args...)(*this);
492  }
493 
496  static std::pair<TER, bool>
497  parseResult(Json::Value const& jr);
498 
502  virtual void
503  submit(JTx const& jt);
504 
508  void
510 
514  void
515  postconditions(JTx const& jt, TER ter, bool didApply);
516 
519  template <class JsonValue, class... FN>
520  void
521  apply(JsonValue&& jv, FN const&... fN)
522  {
523  submit(jt(std::forward<JsonValue>(jv), fN...));
524  }
525 
526  template <class JsonValue, class... FN>
527  void
528  operator()(JsonValue&& jv, FN const&... fN)
529  {
530  apply(std::forward<JsonValue>(jv), fN...);
531  }
535  TER
536  ter() const
537  {
538  return ter_;
539  }
540 
550  meta();
551 
564  tx() const;
565 
566  void
567  enableFeature(uint256 const feature);
568 
569  void
570  disableFeature(uint256 const feature);
571 
572 private:
573  void
574  fund(bool setDefaultRipple, STAmount const& amount, Account const& account);
575 
576  void
577  fund_arg(STAmount const& amount, Account const& account)
578  {
579  fund(true, amount, account);
580  }
581 
582  template <std::size_t N>
583  void
584  fund_arg(STAmount const& amount, std::array<Account, N> const& list)
585  {
586  for (auto const& account : list)
587  fund(false, amount, account);
588  }
589 
590 public:
617  template <class Arg, class... Args>
618  void
619  fund(STAmount const& amount, Arg const& arg, Args const&... args)
620  {
621  fund_arg(amount, arg);
622  if constexpr (sizeof...(args) > 0)
623  fund(amount, args...);
624  }
625 
644  void
645  trust(STAmount const& amount, Account const& account);
646 
647  template <class... Accounts>
648  void
650  STAmount const& amount,
651  Account const& to0,
652  Account const& to1,
653  Accounts const&... toN)
654  {
655  trust(amount, to0);
656  trust(amount, to1, toN...);
657  }
660 protected:
661  int trace_ = 0;
665 
667  do_rpc(
668  unsigned apiVersion,
669  std::vector<std::string> const& args,
671 
672  void
673  autofill_sig(JTx& jt);
674 
675  virtual void
676  autofill(JTx& jt);
677 
686  st(JTx const& jt);
687 
688  // Invoke funclets on stx
689  // Note: The STTx may not be modified
690  template <class... FN>
691  void
692  invoke(STTx& stx, FN const&... fN)
693  {
694  (fN(*this, stx), ...);
695  }
696 
697  // Invoke funclets on jt
698  template <class... FN>
699  void
700  invoke(JTx& jt, FN const&... fN)
701  {
702  (fN(*this, jt), ...);
703  }
704 
705  // Map of account IDs to Account
707 };
708 
709 template <class... Args>
712  unsigned apiVersion,
714  std::string const& cmd,
715  Args&&... args)
716 {
717  return do_rpc(
718  apiVersion,
719  std::vector<std::string>{cmd, std::forward<Args>(args)...},
720  headers);
721 }
722 
723 template <class... Args>
725 Env::rpc(unsigned apiVersion, std::string const& cmd, Args&&... args)
726 {
727  return rpc(
728  apiVersion,
730  cmd,
731  std::forward<Args>(args)...);
732 }
733 
734 template <class... Args>
738  std::string const& cmd,
739  Args&&... args)
740 {
741  return do_rpc(
743  std::vector<std::string>{cmd, std::forward<Args>(args)...},
744  headers);
745 }
746 
747 template <class... Args>
749 Env::rpc(std::string const& cmd, Args&&... args)
750 {
751  return rpc(
753  cmd,
754  std::forward<Args>(args)...);
755 }
756 
761 template <class T>
762 concept SingleVersionedTestCallable = requires(T callable, unsigned int version)
763 {
764  {
765  callable(version)
766  }
767  ->std::same_as<void>;
768 };
769 
778 template <class... T>
779 concept VersionedTestCallable = (... && SingleVersionedTestCallable<T>);
780 void
782 {
783  for (auto testVersion = RPC::apiMinimumSupportedVersion;
784  testVersion <= RPC::apiMaximumValidVersion;
785  ++testVersion)
786  {
787  (..., testCallable(testVersion));
788  }
789 }
790 
791 } // namespace jtx
792 } // namespace test
793 } // namespace ripple
794 
795 #endif
ripple::test::jtx::Env::AppBundle::app
Application * app
Definition: Env.h:126
ripple::test::jtx::Env::invoke
void invoke(STTx &stx, FN const &... fN)
Definition: Env.h:692
ripple::Application
Definition: Application.h:116
ripple::Application::checkSigs
virtual bool checkSigs() const =0
ripple::test::jtx::Env::Env
Env(beast::unit_test::suite &suite_, FeatureBitset features)
Create Env with default config and specified features.
Definition: Env.h:196
ripple::test::jtx::Env::autofill_sig
void autofill_sig(JTx &jt)
Definition: Env.cpp:388
ripple::test::jtx::SuiteLogs::suite_
beast::unit_test::suite & suite_
Definition: Env.h:94
ripple::test::jtx::Env::fund
void fund(STAmount const &amount, Arg const &arg, Args const &... args)
Create a new account with some XRP.
Definition: Env.h:619
ripple::Keylet
A pair of SHAMap key and LedgerEntryType.
Definition: Keylet.h:38
ripple::OpenLedger::current
std::shared_ptr< OpenView const > current() const
Returns a view to the current open ledger.
Definition: OpenLedger.cpp:50
ripple::Issue
A currency issued by an account.
Definition: Issue.h:35
std::string
STL class.
std::shared_ptr
STL class.
utility
ripple::Logs
Manages partitions for logging.
Definition: Log.h:48
ripple::test::jtx::Env::map_
std::unordered_map< AccountID, Account > map_
Definition: Env.h:706
ripple::test::jtx::Env::ter_
TER ter_
Definition: Env.h:664
ripple::test::AbstractClient
Definition: AbstractClient.h:33
ripple::test::jtx::Env::rpc
Json::Value rpc(unsigned apiVersion, std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
Definition: Env.h:711
ripple::test::jtx::Env::AppBundle::client
std::unique_ptr< AbstractClient > client
Definition: Env.h:130
ripple::test::jtx::Env::tx
std::shared_ptr< STTx const > tx() const
Return the tx data for the last JTx.
Definition: Env.cpp:382
ripple::test::jtx::ter
Set the expected result code for a JTx The test will fail if the code doesn't match.
Definition: ter.h:33
functional
ripple::test::jtx::Env::require
void require(Args const &... args)
Check a set of requirements.
Definition: Env.h:489
ripple::test::jtx::Env::apply
void apply(JsonValue &&jv, FN const &... fN)
Apply funclets and submit.
Definition: Env.h:521
ripple::test::jtx::Env::closed
std::shared_ptr< ReadView const > closed()
Returns the last closed ledger.
Definition: Env.cpp:115
std::pair
std::vector::reserve
T reserve(T... args)
ripple::test::jtx::Env::fund_arg
void fund_arg(STAmount const &amount, std::array< Account, N > const &list)
Definition: Env.h:584
ripple::test::jtx::Env::AppBundle::AppBundle
AppBundle()=default
vector
ripple::test::jtx::Env::enableFeature
void enableFeature(uint256 const feature)
Definition: Env.cpp:472
ripple::test::jtx::Env::AppBundle::timeKeeper
ManualTimeKeeper * timeKeeper
Definition: Env.h:128
ripple::test::jtx::Env::txid_
uint256 txid_
Definition: Env.h:663
ripple::test::jtx::Env::AppBundle::~AppBundle
~AppBundle()
Definition: Env.cpp:95
ripple::test::jtx::JTx::stx
std::shared_ptr< STTx const > stx
Definition: JTx.h:50
ripple::test::jtx::Env::jt
JTx jt(JsonValue &&jv, FN const &... fN)
Create a JTx from parameters.
Definition: Env.h:450
std::chrono::duration
ripple::test::ManualTimeKeeper::now
time_point now() const override
Definition: ManualTimeKeeper.h:38
ripple::test::jtx::Env::journal
const beast::Journal journal
Definition: Env.h:144
ripple::test::jtx::Env::notrace
void notrace()
Turn off JSON tracing.
Definition: Env.h:390
ripple::test::jtx::Env::disable_sigs
void disable_sigs()
Turn off signature checks.
Definition: Env.h:397
ripple::test::jtx::Env::timeKeeper
ManualTimeKeeper & timeKeeper()
Definition: Env.h:253
ripple::test::jtx::SuiteLogs::~SuiteLogs
~SuiteLogs() override=default
ripple::test::jtx::Env::sign_and_submit
void sign_and_submit(JTx const &jt, Json::Value params=Json::nullValue)
Use the submit RPC command with a provided JTx object.
Definition: Env.cpp:311
tuple
ripple::test::jtx::Env::AppBundle::thread
std::thread thread
Definition: Env.h:129
ripple::Pathfinder::initPathTable
static void initPathTable()
Definition: Pathfinder.cpp:1300
ripple::test::jtx::forAllApiVersions
void forAllApiVersions(VersionedTestCallable auto... testCallable)
Definition: Env.h:781
ripple::test::jtx::Env::balance
PrettyAmount balance(Account const &account) const
Returns the XRP balance on an account.
Definition: Env.cpp:183
ripple::test::jtx::Env::app
Application & app()
Definition: Env.h:241
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:54
ripple::RPC::apiCommandLineVersion
constexpr unsigned int apiCommandLineVersion
Definition: RPCHelpers.h:236
ripple::Application::openLedger
virtual OpenLedger & openLedger()=0
ripple::test::jtx::Env::bundle_
AppBundle bundle_
Definition: Env.h:141
ripple::test::jtx::Env::ter
TER ter() const
Return the TER for the last JTx.
Definition: Env.h:536
ripple::test::jtx::Env::trust
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
Definition: Env.cpp:259
ripple::test::jtx::Env::st
std::shared_ptr< STTx const > st(JTx const &jt)
Create a STTx from a JTx The framework requires that JSON is valid.
Definition: Env.cpp:436
ripple::requires
requires(T::ConsequencesFactory==Transactor::Normal) TxConsequences consequences_helper(PreflightContext const &ctx)
Definition: applySteps.cpp:187
ripple::test::jtx::Env::Env
Env(beast::unit_test::suite &suite_, std::unique_ptr< Config > config, FeatureBitset features, std::unique_ptr< Logs > logs=nullptr, beast::severities::Severity thresh=beast::severities::kError)
Create Env using suite, Config pointer, and explicit features.
Definition: Env.h:166
ripple::test::jtx::Env::parseResult
static std::pair< TER, bool > parseResult(Json::Value const &jr)
Gets the TER result and didApply flag from a RPC Json result object.
Definition: Env.cpp:276
std::vector::push_back
T push_back(T... args)
ripple::test::ManualTimeKeeper
Definition: ManualTimeKeeper.h:29
ripple::base_uint
Integers of any length that is a multiple of 32-bits.
Definition: base_uint.h:82
ripple::test::jtx::SuiteLogs::SuiteLogs
SuiteLogs(beast::unit_test::suite &suite)
Definition: Env.h:97
ripple::test::jtx::Env::stopwatch_
TestStopwatch stopwatch_
Definition: Env.h:662
ripple::test::jtx::Env::meta
std::shared_ptr< STObject const > meta()
Return metadata for the last JTx.
Definition: Env.cpp:374
ripple::foreachFeature
void foreachFeature(FeatureBitset bs, F &&f)
Definition: Feature.h:298
ripple::test::jtx::Env::close
bool close(std::chrono::duration< Rep, Period > const &elapsed)
Close and advance the ledger.
Definition: Env.h:359
ripple::test::jtx::Env::operator()
void operator()(JsonValue &&jv, FN const &... fN)
Definition: Env.h:528
std::thread
STL class.
ripple::test::jtx::Env::trace
void trace(int howMany=-1)
Turn on JSON tracing.
Definition: Env.h:383
ripple::test::jtx::Env::postconditions
void postconditions(JTx const &jt, TER ter, bool didApply)
Check expected postconditions of JTx submission.
Definition: Env.cpp:349
ripple::TERSubset< CanCvtToTER >
ripple::test::jtx::SuiteLogs
Definition: Env.h:92
ripple::test::jtx::JTx
Execution context for applying a JSON transaction.
Definition: JTx.h:42
std::array
STL class.
ripple::test::jtx::Env::submit
virtual void submit(JTx const &jt)
Submit an existing JTx.
Definition: Env.cpp:288
ripple::STAmount
Definition: STAmount.h:46
std::chrono::time_point
ripple::STTx
Definition: STTx.h:46
ripple::test::jtx::Env::lookup
Account const & lookup(AccountID const &id) const
Returns the Account given the AccountID.
Definition: Env.cpp:162
beast::Journal
A generic endpoint for log messages.
Definition: Journal.h:58
ripple::test::jtx::supported_amendments
FeatureBitset supported_amendments()
Definition: Env.h:70
std::uint32_t
ripple::test::jtx::Account::master
static const Account master
The master account.
Definition: Account.h:47
ripple::test::jtx::Env::seq
std::uint32_t seq(Account const &account) const
Returns the next sequence number on account.
Definition: Env.cpp:207
ripple::test::jtx::Env::app
Application const & app() const
Definition: Env.h:247
ripple::test::jtx::Env::test
beast::unit_test::suite & test
Definition: Env.h:119
ripple::test::jtx::Env::invoke
void invoke(JTx &jt, FN const &... fN)
Definition: Env.h:700
ripple::test::jtx::required
require_t required(Args const &... args)
Compose many condition functors into one.
Definition: require.h:47
ripple::test::jtx::Env::client
AbstractClient & client()
Returns the connected client.
Definition: Env.h:271
beast::severities::kError
@ kError
Definition: Journal.h:38
ripple::Logs::threshold
beast::severities::Severity threshold() const
Definition: Log.cpp:150
ripple::test::jtx::VersionedTestCallable
concept VersionedTestCallable
The VersionedTestCallable concept checks if a set of callables all satisfy the SingleVersionedTestCal...
Definition: Env.h:779
ripple::RPC::apiMinimumSupportedVersion
constexpr unsigned int apiMinimumSupportedVersion
Definition: RPCHelpers.h:234
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::test::jtx::Env::operator=
Env & operator=(Env const &)=delete
ripple::Application::journal
virtual beast::Journal journal(std::string const &name)=0
ripple::test::jtx::noripple
std::array< Account, 1+sizeof...(Args)> noripple(Account const &account, Args const &... args)
Designate accounts as no-ripple in Env::fund.
Definition: Env.h:64
ripple::test::jtx::Env::autofill
virtual void autofill(JTx &jt)
Definition: Env.cpp:411
ripple::test::jtx::Env::now
NetClock::time_point now()
Returns the current network time.
Definition: Env.h:264
ripple::RPC::apiMaximumValidVersion
constexpr unsigned int apiMaximumValidVersion
Definition: RPCHelpers.h:238
ripple::test::jtx::Env::close
bool close()
Close and advance the ledger.
Definition: Env.h:373
beast::severities::Severity
Severity
Severity level / threshold of a Journal message.
Definition: Journal.h:31
ripple::test::jtx::SingleVersionedTestCallable
concept SingleVersionedTestCallable
The SingleVersionedTestCallable concept checks for a callable that takes an unsigned integer as its a...
Definition: Env.h:762
std
STL namespace.
ripple::test::jtx::Env::fund
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
Definition: Env.cpp:228
ripple::test::jtx::Env::le
std::shared_ptr< SLE const > le(Account const &account) const
Return an account root.
Definition: Env.cpp:216
ripple::test::jtx::Env::AppBundle::owned
std::unique_ptr< Application > owned
Definition: Env.h:127
ripple::test::jtx::Env::master
Account const & master
Definition: Env.h:121
Json::nullValue
@ nullValue
'null' value
Definition: json_value.h:36
ripple::FeatureBitset
Definition: Feature.h:113
ripple::test::jtx::Env::Env
Env(beast::unit_test::suite &suite_)
Create Env with only the current test suite.
Definition: Env.h:234
std::optional< std::chrono::milliseconds >
ripple::test::jtx::Env::disableFeature
void disableFeature(uint256 const feature)
Definition: Env.cpp:480
ripple::test::jtx::Env::~Env
virtual ~Env()=default
ripple::test::jtx::Account
Immutable cryptographic account descriptor.
Definition: Account.h:37
ripple::test::jtx::Env::fund_arg
void fund_arg(STAmount const &amount, Account const &account)
Definition: Env.h:577
beast::manual_clock< std::chrono::steady_clock >
ripple::getRegisteredFeature
std::optional< uint256 > getRegisteredFeature(std::string const &name)
Definition: Feature.cpp:342
ripple::test::jtx::Env::memoize
void memoize(Account const &account)
Associate AccountID with account.
Definition: Env.cpp:156
ripple::test::jtx::Env::Env
Env()=delete
std::unique_ptr< beast::Journal::Sink >
unordered_map
ripple::test::jtx::Env::jtnofill
JTx jtnofill(JsonValue &&jv, FN const &... fN)
Create a JTx from parameters.
Definition: Env.h:462
ripple::test::jtx::SuiteLogs::makeSink
std::unique_ptr< beast::Journal::Sink > makeSink(std::string const &partition, beast::severities::Severity threshold) override
Definition: Env.h:105
ripple::tesSUCCESS
@ tesSUCCESS
Definition: TER.h:238
type_traits
ripple::detail::supportedAmendments
std::map< std::string, VoteBehavior > const & supportedAmendments()
Amendments that this server supports and the default voting behavior.
Definition: Feature.cpp:320
ripple::test::jtx::Env::current
std::shared_ptr< OpenView const > current() const
Returns the current ledger.
Definition: Env.h:311
ripple::test::jtx::Env::json
Json::Value json(JsonValue &&jv, FN const &... fN)
Create JSON from parameters.
Definition: Env.h:476
ripple::test::jtx::Env::trust
void trust(STAmount const &amount, Account const &to0, Account const &to1, Accounts const &... toN)
Definition: Env.h:649
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:116
ripple::test::jtx::Env::do_rpc
Json::Value do_rpc(unsigned apiVersion, std::vector< std::string > const &args, std::unordered_map< std::string, std::string > const &headers={})
Definition: Env.cpp:462
ripple::test::jtx::Env::AppBundle
Definition: Env.h:124
Json::Value
Represents a JSON value.
Definition: json_value.h:145
ripple::test::jtx::PrettyAmount
Represents an XRP or IOU quantity This customizes the string conversion and supports XRP conversions ...
Definition: amount.h:73
ripple::test::jtx::Env::trace_
int trace_
Definition: Env.h:661
ripple::test::jtx::Env::Env
Env(beast::unit_test::suite &suite_, std::unique_ptr< Config > config, std::unique_ptr< Logs > logs=nullptr, beast::severities::Severity thresh=beast::severities::kError)
Create Env using suite and Config pointer.
Definition: Env.h:213
beast
Definition: base_uint.h:641
string