xrpld
Loading...
Searching...
No Matches
envconfig.cpp
1#include <test/jtx/envconfig.h>
2
3#include <test/jtx/amount.h>
4
5#include <xrpld/core/Config.h>
6
7#include <xrpl/config/Constants.h>
8
9#include <atomic>
10#include <map>
11#include <memory>
12#include <vector>
13
14namespace xrpl::test {
15
17
18void
20{
21 using namespace jtx;
22 // Default fees to old values, so tests don't have to worry about changes in
23 // Config.h
24 cfg.fees.referenceFee = UNIT_TEST_REFERENCE_FEE;
25 cfg.fees.accountReserve = XRP(200).value().xrp().drops();
26 cfg.fees.ownerReserve = XRP(50).value().xrp().drops();
27
28 // The Beta API (currently v2) is always available to tests
29 cfg.betaRpcApi = true;
30
35 cfg.setupControl(true, true, true);
38
39 // Using port 0 asks the operating system to allocate an unused port, which
40 // can be obtained after a "bind" call.
41 // Works for all system (Linux, Windows, Unix, Mac).
42 // Check https://man7.org/linux/man-pages/man7/ip.7.html
43 // "ip_local_port_range" section for more info
44 cfg[Sections::kPortPeer].set(Keys::kPort, "0");
45 cfg[Sections::kPortPeer].set(Keys::kProtocol, "peer");
46
50 cfg[Sections::kPortRpc].set(Keys::kPort, "0");
51 cfg[Sections::kPortRpc].set(Keys::kProtocol, "http,ws2");
52
56 cfg[Sections::kPortWs].set(Keys::kPort, "0");
57 cfg[Sections::kPortWs].set(Keys::kProtocol, "ws");
58 cfg.sslVerify = false;
59}
60
61namespace jtx {
62
65{
66 (*cfg)[Sections::kPortRpc].set(Keys::kAdmin, "");
67 (*cfg)[Sections::kPortWs].set(Keys::kAdmin, "");
68 return cfg;
69}
70
79
82{
83 (*cfg)[Sections::kPortRpc].set(Keys::kAdmin, "127.0.0.0/8");
84 (*cfg)[Sections::kPortWs].set(Keys::kAdmin, "127.0.0.0/8");
85 return cfg;
86}
87
90{
91 (*cfg)[Sections::kPortRpc].set(Keys::kAdmin, "");
92 (*cfg)[Sections::kPortWs].set(Keys::kAdmin, "");
93 (*cfg)[Sections::kPortRpc].set(Keys::kSecureGateway, "127.0.0.0/8");
94 (*cfg)[Sections::kPortWs].set(Keys::kSecureGateway, "127.0.0.0/8");
95 return cfg;
96}
99{
100 cfg->ioWorkers = 1;
101 return cfg;
102}
103
104constexpr auto kDefaultSeed = "shUwVw52ofnCUX5m7kPTKzJdr4HEH";
105
108{
109 // If the config has valid validation keys then we run as a validator.
110 cfg->section(Sections::kValidationSeed)
111 .append(std::vector<std::string>{seed.empty() ? kDefaultSeed : seed});
112 return cfg;
113}
114
117{
119 (*cfg)[Sections::kPortGrpc].set(Keys::kPort, "0");
120 return cfg;
121}
122
125{
127
128 // Check https://man7.org/linux/man-pages/man7/ip.7.html
129 // "ip_local_port_range" section for using 0 ports
130 (*cfg)[Sections::kPortGrpc].set(Keys::kPort, "0");
132 return cfg;
133}
134
138 std::string const& certPath,
139 std::string const& keyPath)
140{
142 (*cfg)[Sections::kPortGrpc].set(Keys::kPort, "0");
143 (*cfg)[Sections::kPortGrpc].set(Keys::kSslCert, certPath);
144 (*cfg)[Sections::kPortGrpc].set(Keys::kSslKey, keyPath);
145 return cfg;
146}
147
151 std::string const& certPath,
152 std::string const& keyPath,
153 std::string const& clientCAPath)
154{
156 (*cfg)[Sections::kPortGrpc].set(Keys::kPort, "0");
157 (*cfg)[Sections::kPortGrpc].set(Keys::kSslCert, certPath);
158 (*cfg)[Sections::kPortGrpc].set(Keys::kSslKey, keyPath);
159 (*cfg)[Sections::kPortGrpc].set(Keys::kSslClientCa, clientCAPath);
160 return cfg;
161}
162
166 std::string const& certPath,
167 std::string const& keyPath,
168 std::string const& certChainPath)
169{
171 (*cfg)[Sections::kPortGrpc].set(Keys::kPort, "0");
172 (*cfg)[Sections::kPortGrpc].set(Keys::kSslCert, certPath);
173 (*cfg)[Sections::kPortGrpc].set(Keys::kSslKey, keyPath);
174 (*cfg)[Sections::kPortGrpc].set(Keys::kSslCertChain, certChainPath);
175 return cfg;
176}
177
182{
183 auto p = test::jtx::envconfig();
184 auto& section = p->section(Sections::kTransactionQueue);
185 section.set(Keys::kLedgersInQueue, "2");
186 section.set(Keys::kMinimumQueueSize, "2");
187 section.set(Keys::kMinLedgersToComputeSizeLimit, "3");
188 section.set(Keys::kMaxLedgerCountsToStore, "100");
189 section.set(Keys::kRetrySequencePercent, "25");
191
192 for (auto const& [k, v] : extraTxQ)
193 section.set(k, v);
194
195 // Some tests specify different fee settings that are enabled by
196 // a FeeVote
197 if (!extraVoting.empty())
198 {
199 auto& votingSection = p->section(Sections::kVoting);
200 for (auto const& [k, v] : extraVoting)
201 {
202 votingSection.set(k, v);
203 }
204
205 // In order for the vote to occur, we must run as a validator
206 p->section(Sections::kValidationSeed).legacy("shUwVw52ofnCUX5m7kPTKzJdr4HEH");
207 }
208 return p;
209}
210
211} // namespace jtx
212} // namespace xrpl::test
void deprecatedClearSection(std::string const &section)
Remove all the key/value pairs from the section.
void overwrite(std::string const &section, std::string const &key, std::string const &value)
Overwrite a key/value pair with a command line argument If the section does not exist it is created.
void legacy(std::string const &section, std::string value)
Set a value that is not a key/value pair.
bool sslVerify
Definition Config.h:200
FeeSetup fees
Definition Config.h:189
void setupControl(bool bQuiet, bool bSilent, bool bStandalone)
Definition Config.cpp:272
bool betaRpcApi
Definition Config.h:272
T empty(T... args)
std::unique_ptr< Config > addGrpcConfigWithTLSAndCertChain(std::unique_ptr< Config >, std::string const &certPath, std::string const &keyPath, std::string const &certChainPath)
add a grpc address, port and TLS with server cert chain to config
std::unique_ptr< Config > addGrpcConfigWithTLSAndClientCA(std::unique_ptr< Config >, std::string const &certPath, std::string const &keyPath, std::string const &clientCAPath)
add a grpc address, port and TLS certificate/key/client CA paths to config
std::unique_ptr< Config > addGrpcConfigWithTLS(std::unique_ptr< Config >, std::string const &certPath, std::string const &keyPath)
add a grpc address, port and TLS certificate/key paths to config
XrpT const XRP
Converts to XRP Issue or STAmount.
Definition amount.cpp:92
std::unique_ptr< Config > secureGateway(std::unique_ptr< Config >)
Definition envconfig.cpp:72
std::unique_ptr< Config > secureGatewayLocalnet(std::unique_ptr< Config >)
Definition envconfig.cpp:89
constexpr auto kDefaultSeed
std::unique_ptr< Config > makeConfig(std::map< std::string, std::string > extraTxQ={}, std::map< std::string, std::string > extraVoting={})
std::unique_ptr< Config > singleThreadIo(std::unique_ptr< Config >)
Definition envconfig.cpp:98
std::unique_ptr< Config > addGrpcConfigWithSecureGateway(std::unique_ptr< Config >, std::string const &secureGateway)
add a grpc address, port and secureGateway to config
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition envconfig.h:28
std::unique_ptr< Config > adminLocalnet(std::unique_ptr< Config >)
Definition envconfig.cpp:81
std::unique_ptr< Config > noAdmin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition envconfig.cpp:64
std::unique_ptr< Config > addGrpcConfig(std::unique_ptr< Config >)
add a grpc address and port to config
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
void setupConfigForUnitTests(Config &config)
initializes a config object for use with jtx::Env
Definition envconfig.cpp:19
char const * getEnvLocalhostAddr()
Definition envconfig.h:10
std::atomic< bool > gEnvUseIPv4
Definition envconfig.cpp:16
XRPAmount accountReserve
The account reserve requirement in drops.
Definition Config.h:54
XRPAmount ownerReserve
The per-owned item reserve requirement in drops.
Definition Config.h:57
XRPAmount referenceFee
The cost of a reference transaction in drops.
Definition Config.h:51
static constexpr auto kProtocol
Definition Constants.h:144
static constexpr auto kMinLedgersToComputeSizeLimit
Definition Constants.h:125
static constexpr auto kRetrySequencePercent
Definition Constants.h:148
static constexpr auto kMaxLedgerCountsToStore
Definition Constants.h:120
static constexpr auto kSslCertChain
Definition Constants.h:158
static constexpr auto kSslKey
Definition Constants.h:162
static constexpr auto kAdmin
Definition Constants.h:85
static constexpr auto kPort
Definition Constants.h:142
static constexpr auto kSslClientCa
Definition Constants.h:161
static constexpr auto kSslCert
Definition Constants.h:157
static constexpr auto kSecureGateway
Definition Constants.h:151
static constexpr auto kType
Definition Constants.h:170
static constexpr auto kIp
Definition Constants.h:113
static constexpr auto kPath
Definition Constants.h:140
static constexpr auto kMinimumQueueSize
Definition Constants.h:128
static constexpr auto kNormalConsensusIncreasePercent
Definition Constants.h:131
static constexpr auto kLedgersInQueue
Definition Constants.h:116
static constexpr auto kPortWs
Definition Constants.h:47
static constexpr auto kImportNodeDatabase
Definition Constants.h:20
static constexpr auto kValidationSeed
Definition Constants.h:66
static constexpr auto kServer
Definition Constants.h:55
static constexpr auto kPortRpc
Definition Constants.h:46
static constexpr auto kTransactionQueue
Definition Constants.h:65
static constexpr auto kNodeDatabase
Definition Constants.h:31
static constexpr auto kDatabasePath
Definition Constants.h:13
static constexpr auto kPortPeer
Definition Constants.h:45
static constexpr auto kPortGrpc
Definition Constants.h:44
static constexpr auto kVoting
Definition Constants.h:77