rippled
Loading...
Searching...
No Matches
Oracle.h
1#ifndef XRPL_TEST_JTX_ORACLE_H_INCLUDED
2#define XRPL_TEST_JTX_ORACLE_H_INCLUDED
3
4#include <test/jtx.h>
5
6#include <date/date.h>
7
8namespace ripple {
9namespace test {
10namespace jtx {
11namespace oracle {
12
16
17// Special string value, which is converted to unquoted string in the string
18// passed to rpc.
19constexpr char const* NoneTag = "%None%";
20constexpr char const* UnquotedNone = "None";
21constexpr char const* NonePattern = "\"%None%\"";
22
24asUInt(AnyValue const& v);
25
26bool
28
29void
30toJson(Json::Value& jv, AnyValue const& v);
31
32void
33toJsonHex(Json::Value& jv, AnyValue const& v);
34
35// base asset, quote asset, price, scale
41
42// Typical defaults for Create
59
60// Typical defaults for Update
76
87
88// Simulate testStartTime as 10'000s from Ripple epoch time to make
89// LastUpdateTime validation to work and to make unit-test consistent.
90// The value doesn't matter much, it has to be greater
91// than maxLastUpdateTimeDelta in order to pass LastUpdateTime
92// validation {close-maxLastUpdateTimeDelta,close+maxLastUpdateTimeDelta}.
95
101{
102private:
103 // Global fee if not 0
104 static inline std::uint32_t fee = 0;
108
109private:
110 void
111 submit(
112 Json::Value const& jv,
115 std::optional<ter> const& err);
116
117public:
118 Oracle(Env& env, CreateArg const& arg, bool submit = true);
119
120 void
121 remove(RemoveArg const& arg);
122
123 void
124 set(CreateArg const& arg);
125 void
126 set(UpdateArg const& arg);
127
128 static Json::Value
130 Env& env,
131 std::optional<AnyValue> const& baseAsset,
132 std::optional<AnyValue> const& quoteAsset,
135 std::optional<AnyValue> const& timeTreshold = std::nullopt);
136
139 {
140 return documentID_;
141 }
142
143 [[nodiscard]] bool
144 exists() const
145 {
146 return exists(env_, owner_, documentID_);
147 }
148
149 [[nodiscard]] static bool
150 exists(Env& env, AccountID const& account, std::uint32_t documentID);
151
152 [[nodiscard]] bool
153 expectPrice(DataSeries const& pricess) const;
154
155 [[nodiscard]] bool
156 expectLastUpdateTime(std::uint32_t lastUpdateTime) const;
157
158 static Json::Value
160 Env& env,
164
167 {
169 }
170
171 static void
173 {
174 fee = f;
175 }
176
178 operator<<(std::ostream& strm, Oracle const& oracle)
179 {
180 strm << oracle.ledgerEntry().toStyledString();
181 return strm;
182 }
183};
184
185} // namespace oracle
186} // namespace jtx
187} // namespace test
188} // namespace ripple
189
190#endif // XRPL_TEST_JTX_ORACLE_H_INCLUDED
Represents a JSON value.
Definition json_value.h:130
A transaction testing environment.
Definition Env.h:102
Set the fee on a JTx.
Definition fee.h:18
Match set account flags.
Definition flags.h:109
Set a multisignature on a JTx.
Definition multisign.h:48
Oracle class facilitates unit-testing of the Price Oracle feature.
Definition Oracle.h:101
static Json::Value aggregatePrice(Env &env, std::optional< AnyValue > const &baseAsset, std::optional< AnyValue > const &quoteAsset, std::optional< OraclesData > const &oracles=std::nullopt, std::optional< AnyValue > const &trim=std::nullopt, std::optional< AnyValue > const &timeTreshold=std::nullopt)
Definition Oracle.cpp:127
static Json::Value ledgerEntry(Env &env, std::optional< std::variant< AccountID, std::string > > const &account, std::optional< AnyValue > const &documentID, std::optional< std::string > const &index=std::nullopt)
Definition Oracle.cpp:268
Json::Value ledgerEntry(std::optional< std::string > const &index=std::nullopt) const
Definition Oracle.h:166
void set(CreateArg const &arg)
Definition Oracle.cpp:250
friend std::ostream & operator<<(std::ostream &strm, Oracle const &oracle)
Definition Oracle.h:178
void remove(RemoveArg const &arg)
Definition Oracle.cpp:35
bool expectPrice(DataSeries const &pricess) const
Definition Oracle.cpp:89
bool expectLastUpdateTime(std::uint32_t lastUpdateTime) const
Definition Oracle.cpp:120
std::uint32_t documentID() const
Definition Oracle.h:138
static void setFee(std::uint32_t f)
Definition Oracle.h:172
void submit(Json::Value const &jv, std::optional< jtx::msig > const &msig, std::optional< jtx::seq > const &seq, std::optional< ter > const &err)
Definition Oracle.cpp:53
T is_same_v
Keylet oracle(AccountID const &account, std::uint32_t const &documentID) noexcept
Definition Indexes.cpp:501
static constexpr std::chrono::seconds testStartTime
Definition Oracle.h:93
constexpr char const * UnquotedNone
Definition Oracle.h:20
std::uint32_t asUInt(AnyValue const &v)
Definition Oracle.cpp:334
void toJson(Json::Value &jv, AnyValue const &v)
Definition Oracle.cpp:310
constexpr char const * NonePattern
Definition Oracle.h:21
bool validDocumentID(AnyValue const &v)
Definition Oracle.cpp:342
constexpr char const * NoneTag
Definition Oracle.h:19
void toJsonHex(Json::Value &jv, AnyValue const &v)
Definition Oracle.cpp:316
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
static constexpr std::chrono::seconds epoch_offset
Clock for measuring the network time.
Definition chrono.h:36
std::optional< AnyValue > uri
Definition Oracle.h:50
std::optional< AnyValue > documentID
Definition Oracle.h:46
std::optional< AnyValue > lastUpdateTime
Definition Oracle.h:51
std::optional< AnyValue > assetClass
Definition Oracle.h:48
std::optional< AccountID > owner
Definition Oracle.h:45
std::optional< ter > err
Definition Oracle.h:56
std::optional< AnyValue > provider
Definition Oracle.h:49
std::optional< AccountID > const & owner
Definition Oracle.h:79
std::optional< AnyValue > const & documentID
Definition Oracle.h:80
std::optional< ter > const & err
Definition Oracle.h:85
std::optional< AnyValue > uri
Definition Oracle.h:68
std::optional< AnyValue > assetClass
Definition Oracle.h:66
std::optional< AnyValue > documentID
Definition Oracle.h:64
std::optional< AnyValue > lastUpdateTime
Definition Oracle.h:69
std::optional< AccountID > owner
Definition Oracle.h:63
std::optional< AnyValue > provider
Definition Oracle.h:67
std::optional< ter > err
Definition Oracle.h:74
Set the sequence number on a JTx.
Definition seq.h:15