20#include <test/csf/random.h>
21#include <xrpl/beast/clock/manual_clock.h>
22#include <xrpl/beast/unit_test.h>
41 int const numUNLs = 15;
42 int const minUNLSize = N / 4, maxUNLSize = N / 2;
46 PeerGroup network = sim.createGroup(N);
50 sample(network.size(), PowerLawDistribution{1, 3}, sim.rng);
61 network.connectFromTrust(
62 round<milliseconds>(0.2 * parms.ledgerGRANULARITY));
65 TxCollector txCollector;
66 LedgerCollector ledgerCollector;
67 auto colls = makeCollectors(txCollector, ledgerCollector);
68 sim.collectors.add(colls);
74 HeartbeatTimer heart(sim.scheduler,
seconds(10s));
83 makeSelector(network.begin(), network.end(), ranks, sim.rng);
84 auto txSubmitter = makeSubmitter(
85 ConstantDistribution{
rate.inv()},
86 sim.scheduler.now() + quiet,
87 sim.scheduler.now() + (simDuration - quiet),
96 BEAST_EXPECT(sim.branches() == 1);
97 BEAST_EXPECT(sim.synchronized());
102 log <<
"Simulated Duration: "
103 << duration_cast<milliseconds>(simDuration).count() <<
" ms"
106 log <<
"Synchronized: " << (sim.synchronized() ?
"Y" :
"N")
110 txCollector.report(simDuration,
log);
111 ledgerCollector.report(simDuration,
log);
120BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(ScaleFreeSim, consensus,
ripple, 80);
log_os< char > log
Logging output stream.
void run() override
Runs the suite.
Json::Value rate(Account const &account, double multiplier)
Set a transfer rate.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Consensus algorithm parameters.
Represents a transfer rate.