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/ledger/CachedSLEs.h>
34 #include <ripple/protocol/Feature.h>
35 #include <ripple/protocol/Indexes.h>
36 #include <ripple/protocol/Issue.h>
37 #include <ripple/protocol/STAmount.h>
38 #include <ripple/protocol/STObject.h>
39 #include <ripple/protocol/STTx.h>
40 #include <ripple/rpc/impl/RPCHelpers.h>
41 #include <functional>
42 #include <string>
43 #include <test/jtx/AbstractClient.h>
44 #include <test/jtx/Account.h>
45 #include <test/jtx/JTx.h>
46 #include <test/jtx/ManualTimeKeeper.h>
47 #include <test/jtx/amount.h>
48 #include <test/jtx/envconfig.h>
49 #include <test/jtx/require.h>
50 #include <test/jtx/tags.h>
51 #include <test/unit_test/SuiteJournal.h>
52 #include <tuple>
53 #include <type_traits>
54 #include <unordered_map>
55 #include <utility>
56 #include <vector>
57 
58 namespace ripple {
59 namespace test {
60 namespace jtx {
61 
63 template <class... Args>
64 std::array<Account, 1 + sizeof...(Args)>
65 noripple(Account const& account, Args const&... args)
66 {
67  return {{account, args...}};
68 }
69 
70 inline FeatureBitset
72 {
73  static const FeatureBitset ids = [] {
74  auto const& sa = ripple::detail::supportedAmendments();
76  feats.reserve(sa.size());
77  for (auto const& [s, vote] : sa)
78  {
79  (void)vote;
80  if (auto const f = getRegisteredFeature(s))
81  feats.push_back(*f);
82  else
83  Throw<std::runtime_error>(
84  "Unknown feature: " + s + " in supportedAmendments.");
85  }
86  return FeatureBitset(feats);
87  }();
88  return ids;
89 }
90 
91 //------------------------------------------------------------------------------
92 
93 class SuiteLogs : public Logs
94 {
95  beast::unit_test::suite& suite_;
96 
97 public:
98  explicit SuiteLogs(beast::unit_test::suite& suite)
99  : Logs(beast::severities::kError), suite_(suite)
100  {
101  }
102 
103  ~SuiteLogs() override = default;
104 
107  std::string const& partition,
109  {
110  return std::make_unique<SuiteJournalSink>(partition, threshold, suite_);
111  }
112 };
113 
114 //------------------------------------------------------------------------------
115 
117 class Env
118 {
119 public:
120  beast::unit_test::suite& test;
121 
123 
124 private:
125  struct AppBundle
126  {
127  Application* app = nullptr;
132 
133  AppBundle() = default;
134  AppBundle(
135  beast::unit_test::suite& suite,
139  ~AppBundle();
140  };
141 
143 
144 public:
146 
147  Env() = delete;
148  Env&
149  operator=(Env const&) = delete;
150  Env(Env const&) = delete;
151 
166  // VFALCO Could wrap the suite::log in a Journal here
167  Env(beast::unit_test::suite& suite_,
169  FeatureBitset features,
170  std::unique_ptr<Logs> logs = nullptr,
172  : test(suite_)
173  , bundle_(suite_, std::move(config), std::move(logs), thresh)
174  , journal{bundle_.app->journal("Env")}
175  {
179  features, [&appFeats = app().config().features](uint256 const& f) {
180  appFeats.insert(f);
181  });
182  }
183 
197  Env(beast::unit_test::suite& suite_, FeatureBitset features)
198  : Env(suite_, envconfig(), features)
199  {
200  }
201 
214  Env(beast::unit_test::suite& suite_,
216  std::unique_ptr<Logs> logs = nullptr,
218  : Env(suite_,
219  std::move(config),
221  std::move(logs),
222  thresh)
223  {
224  }
225 
235  Env(beast::unit_test::suite& suite_) : Env(suite_, envconfig())
236  {
237  }
238 
239  virtual ~Env() = default;
240 
241  Application&
242  app()
243  {
244  return *bundle_.app;
245  }
246 
247  Application const&
248  app() const
249  {
250  return *bundle_.app;
251  }
252 
255  {
256  return *bundle_.timeKeeper;
257  }
258 
265  now()
266  {
267  return timeKeeper().now();
268  }
269 
273  {
274  return *bundle_.client;
275  }
276 
282  template <class... Args>
285  std::string const& cmd,
286  Args&&... args);
287 
288  template <class... Args>
290  rpc(std::string const& cmd, Args&&... args);
291 
301  current() const
302  {
303  return app().openLedger().current();
304  }
305 
314  closed();
315 
335  bool
336  close(
337  NetClock::time_point closeTime,
338  std::optional<std::chrono::milliseconds> consensusDelay = std::nullopt);
339 
347  template <class Rep, class Period>
348  bool
350  {
351  // VFALCO Is this the correct time?
352  return close(now() + elapsed);
353  }
354 
362  bool
364  {
365  // VFALCO Is this the correct time?
366  return close(std::chrono::seconds(5));
367  }
368 
372  void
373  trace(int howMany = -1)
374  {
375  trace_ = howMany;
376  }
377 
379  void
381  {
382  trace_ = 0;
383  }
384 
386  void
388  {
389  app().checkSigs(false);
390  }
391 
393  void
394  memoize(Account const& account);
395 
398  Account const&
399  lookup(AccountID const& id) const;
400 
401  Account const&
402  lookup(std::string const& base58ID) const;
409  balance(Account const& account) const;
410 
416  seq(Account const& account) const;
417 
421  // VFALCO NOTE This should return a unit-less amount
423  balance(Account const& account, Issue const& issue) const;
424 
429  le(Account const& account) const;
430 
435  le(Keylet const& k) const;
436 
438  template <class JsonValue, class... FN>
439  JTx
440  jt(JsonValue&& jv, FN const&... fN)
441  {
442  JTx jt(std::forward<JsonValue>(jv));
443  invoke(jt, fN...);
444  autofill(jt);
445  jt.stx = st(jt);
446  return jt;
447  }
448 
450  template <class JsonValue, class... FN>
451  JTx
452  jtnofill(JsonValue&& jv, FN const&... fN)
453  {
454  JTx jt(std::forward<JsonValue>(jv));
455  invoke(jt, fN...);
456  autofill_sig(jt);
457  jt.stx = st(jt);
458  return jt;
459  }
460 
464  template <class JsonValue, class... FN>
466  json(JsonValue&& jv, FN const&... fN)
467  {
468  auto tj = jt(std::forward<JsonValue>(jv), fN...);
469  return std::move(tj.jv);
470  }
471 
477  template <class... Args>
478  void
479  require(Args const&... args)
480  {
481  jtx::required(args...)(*this);
482  }
483 
486  static std::pair<TER, bool>
487  parseResult(Json::Value const& jr);
488 
492  virtual void
493  submit(JTx const& jt);
494 
498  void
500 
504  void
505  postconditions(JTx const& jt, TER ter, bool didApply);
506 
509  template <class JsonValue, class... FN>
510  void
511  apply(JsonValue&& jv, FN const&... fN)
512  {
513  submit(jt(std::forward<JsonValue>(jv), fN...));
514  }
515 
516  template <class JsonValue, class... FN>
517  void
518  operator()(JsonValue&& jv, FN const&... fN)
519  {
520  apply(std::forward<JsonValue>(jv), fN...);
521  }
525  TER
526  ter() const
527  {
528  return ter_;
529  }
530 
540  meta();
541 
554  tx() const;
555 
556  void
557  enableFeature(uint256 const feature);
558 
559  void
560  disableFeature(uint256 const feature);
561 
562 private:
563  void
564  fund(bool setDefaultRipple, STAmount const& amount, Account const& account);
565 
566  void
567  fund_arg(STAmount const& amount, Account const& account)
568  {
569  fund(true, amount, account);
570  }
571 
572  template <std::size_t N>
573  void
574  fund_arg(STAmount const& amount, std::array<Account, N> const& list)
575  {
576  for (auto const& account : list)
577  fund(false, amount, account);
578  }
579 
580 public:
607  template <class Arg, class... Args>
608  void
609  fund(STAmount const& amount, Arg const& arg, Args const&... args)
610  {
611  fund_arg(amount, arg);
612  if constexpr (sizeof...(args) > 0)
613  fund(amount, args...);
614  }
615 
634  void
635  trust(STAmount const& amount, Account const& account);
636 
637  template <class... Accounts>
638  void
640  STAmount const& amount,
641  Account const& to0,
642  Account const& to1,
643  Accounts const&... toN)
644  {
645  trust(amount, to0);
646  trust(amount, to1, toN...);
647  }
650 protected:
651  int trace_ = 0;
655 
657  do_rpc(
658  std::vector<std::string> const& args,
660 
661  void
662  autofill_sig(JTx& jt);
663 
664  virtual void
665  autofill(JTx& jt);
666 
675  st(JTx const& jt);
676 
677  // Invoke funclets on stx
678  // Note: The STTx may not be modified
679  template <class... FN>
680  void
681  invoke(STTx& stx, FN const&... fN)
682  {
683  (fN(*this, stx), ...);
684  }
685 
686  // Invoke funclets on jt
687  template <class... FN>
688  void
689  invoke(JTx& jt, FN const&... fN)
690  {
691  (fN(*this, jt), ...);
692  }
693 
694  // Map of account IDs to Account
696 };
697 
698 template <class... Args>
702  std::string const& cmd,
703  Args&&... args)
704 {
705  return do_rpc(
706  std::vector<std::string>{cmd, std::forward<Args>(args)...}, headers);
707 }
708 
709 template <class... Args>
711 Env::rpc(std::string const& cmd, Args&&... args)
712 {
713  return rpc(
715  cmd,
716  std::forward<Args>(args)...);
717 }
718 
723 template <class T>
724 concept SingleVersionedTestCallable = requires(T callable, unsigned int version)
725 {
726  {
727  callable(version)
728  }
729  ->std::same_as<void>;
730 };
731 
740 template <class... T>
741 concept VersionedTestCallable = (... && SingleVersionedTestCallable<T>);
742 void
744 {
745  for (auto testVersion = RPC::apiMinimumSupportedVersion;
746  testVersion <= RPC::apiBetaVersion;
747  ++testVersion)
748  {
749  (..., testCallable(testVersion));
750  }
751 }
752 
753 } // namespace jtx
754 } // namespace test
755 } // namespace ripple
756 
757 #endif
ripple::test::jtx::Env::AppBundle::app
Application * app
Definition: Env.h:127
ripple::test::jtx::Env::invoke
void invoke(STTx &stx, FN const &... fN)
Definition: Env.h:681
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:197
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:95
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:609
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:695
ripple::test::jtx::Env::ter_
TER ter_
Definition: Env.h:654
ripple::test::AbstractClient
Definition: AbstractClient.h:33
ripple::test::jtx::Env::AppBundle::client
std::unique_ptr< AbstractClient > client
Definition: Env.h:131
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:479
ripple::test::jtx::Env::apply
void apply(JsonValue &&jv, FN const &... fN)
Apply funclets and submit.
Definition: Env.h:511
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:574
ripple::test::jtx::Env::AppBundle::AppBundle
AppBundle()=default
vector
ripple::test::jtx::Env::enableFeature
void enableFeature(uint256 const feature)
Definition: Env.cpp:470
ripple::test::jtx::Env::AppBundle::timeKeeper
ManualTimeKeeper * timeKeeper
Definition: Env.h:129
ripple::test::jtx::Env::txid_
uint256 txid_
Definition: Env.h:653
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:440
std::chrono::duration
ripple::test::jtx::Env::journal
const beast::Journal journal
Definition: Env.h:145
ripple::test::jtx::Env::notrace
void notrace()
Turn off JSON tracing.
Definition: Env.h:380
ripple::test::jtx::Env::disable_sigs
void disable_sigs()
Turn off signature checks.
Definition: Env.h:387
ripple::test::jtx::Env::timeKeeper
ManualTimeKeeper & timeKeeper()
Definition: Env.h:254
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:130
ripple::Pathfinder::initPathTable
static void initPathTable()
Definition: Pathfinder.cpp:1300
ripple::test::jtx::forAllApiVersions
void forAllApiVersions(VersionedTestCallable auto... testCallable)
Definition: Env.h:743
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:242
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
ripple::Application::openLedger
virtual OpenLedger & openLedger()=0
ripple::test::jtx::Env::bundle_
AppBundle bundle_
Definition: Env.h:142
ripple::test::jtx::Env::ter
TER ter() const
Return the TER for the last JTx.
Definition: Env.h:526
ripple::RPC::apiBetaVersion
constexpr unsigned int apiBetaVersion
Definition: RPCHelpers.h:245
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::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:167
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:98
ripple::test::jtx::Env::stopwatch_
TestStopwatch stopwatch_
Definition: Env.h:652
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:349
ripple::test::jtx::Env::operator()
void operator()(JsonValue &&jv, FN const &... fN)
Definition: Env.h:518
std::thread
STL class.
ripple::test::jtx::Env::trace
void trace(int howMany=-1)
Turn on JSON tracing.
Definition: Env.h:373
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:93
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:45
std::chrono::time_point
ripple::STTx
Definition: STTx.h:45
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:71
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:248
ripple::test::jtx::Env::test
beast::unit_test::suite & test
Definition: Env.h:120
ripple::test::jtx::Env::invoke
void invoke(JTx &jt, FN const &... fN)
Definition: Env.h:689
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:272
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:741
ripple::RPC::apiMinimumSupportedVersion
constexpr unsigned int apiMinimumSupportedVersion
Definition: RPCHelpers.h:243
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:65
ripple::test::jtx::Env::autofill
virtual void autofill(JTx &jt)
Definition: Env.cpp:411
ripple::test::jtx::Env::do_rpc
Json::Value do_rpc(std::vector< std::string > const &args, std::unordered_map< std::string, std::string > const &headers={})
Definition: Env.cpp:462
ripple::test::jtx::Env::now
NetClock::time_point now()
Returns the current network time.
Definition: Env.h:265
ripple::test::jtx::Env::close
bool close()
Close and advance the ledger.
Definition: Env.h:363
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:724
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:128
ripple::test::jtx::Env::master
Account const & master
Definition: Env.h:122
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:235
std::optional< std::chrono::milliseconds >
ripple::test::jtx::Env::disableFeature
void disableFeature(uint256 const feature)
Definition: Env.cpp:478
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:567
ripple::test::ManualTimeKeeper::now
time_point now() const override
Returns the estimate of wall time, in network time.
Definition: ManualTimeKeeper.cpp:37
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:452
ripple::test::jtx::SuiteLogs::makeSink
std::unique_ptr< beast::Journal::Sink > makeSink(std::string const &partition, beast::severities::Severity threshold) override
Definition: Env.h:106
ripple::tesSUCCESS
@ tesSUCCESS
Definition: TER.h:225
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:301
ripple::test::jtx::Env::json
Json::Value json(JsonValue &&jv, FN const &... fN)
Create JSON from parameters.
Definition: Env.h:466
ripple::test::jtx::Env::trust
void trust(STAmount const &amount, Account const &to0, Account const &to1, Accounts const &... toN)
Definition: Env.h:639
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:117
ripple::test::jtx::Env::AppBundle
Definition: Env.h:125
ripple::test::jtx::Env::rpc
Json::Value rpc(std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
Definition: Env.h:700
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:651
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:214
beast
Definition: base_uint.h:641
string