19 #include <ripple/beast/clock/manual_clock.h>
20 #include <ripple/beast/unit_test.h>
24 #include <boost/algorithm/string/classification.hpp>
25 #include <boost/algorithm/string/split.hpp>
42 bool printHeaders =
false)
49 "DistributedValidators_"
50 "completeTrustCompleteConnectFixedDelay";
51 std::fstream txLog(prefix +
"_tx.csv", std::ofstream::app),
52 ledgerLog(prefix +
"_ledger.csv", std::ofstream::app);
55 log << prefix <<
"(" << numPeers <<
"," << delay.count() <<
")"
59 BEAST_EXPECT(numPeers >= 1);
62 PeerGroup peers = sim.createGroup(numPeers);
68 peers.connect(peers, delay);
71 TxCollector txCollector;
72 LedgerCollector ledgerCollector;
73 auto colls = makeCollectors(txCollector, ledgerCollector);
74 sim.collectors.add(colls);
85 HeartbeatTimer heart(sim.scheduler);
88 auto peerSelector = makeSelector(
93 auto txSubmitter = makeSubmitter(
94 ConstantDistribution{
rate.inv()},
95 sim.scheduler.now() + quiet,
96 sim.scheduler.now() + simDuration - quiet,
103 sim.run(simDuration);
109 log <<
"| Peers: " <<
std::setw(2) << peers.size();
111 << duration_cast<milliseconds>(simDuration).count() <<
" ms";
112 log <<
" | Branches: " <<
std::setw(1) << sim.branches();
113 log <<
" | Synchronized: " <<
std::setw(1)
114 << (sim.synchronized() ?
"Y" :
"N");
117 txCollector.report(simDuration, log,
true);
118 ledgerCollector.report(simDuration, log,
false);
121 txCollector.csv(simDuration, txLog, tag, printHeaders);
122 ledgerCollector.csv(simDuration, ledgerLog, tag, printHeaders);
131 bool printHeaders =
false)
138 "DistributedValidators__"
139 "completeTrustScaleFreeConnectFixedDelay";
140 std::fstream txLog(prefix +
"_tx.csv", std::ofstream::app),
141 ledgerLog(prefix +
"_ledger.csv", std::ofstream::app);
144 log << prefix <<
"(" << numPeers <<
"," << delay.count() <<
")"
148 int const numCNLs =
std::max(
int(1.00 * numPeers), 1);
149 int const minCNLSize =
std::max(
int(0.25 * numCNLs), 1);
150 int const maxCNLSize =
std::max(
int(0.50 * numCNLs), 1);
151 BEAST_EXPECT(numPeers >= 1);
152 BEAST_EXPECT(numCNLs >= 1);
154 1 <= minCNLSize && minCNLSize <= maxCNLSize &&
155 maxCNLSize <= numPeers);
158 PeerGroup peers = sim.createGroup(numPeers);
165 sample(peers.size(), PowerLawDistribution{1, 3}, sim.rng);
175 TxCollector txCollector;
176 LedgerCollector ledgerCollector;
177 auto colls = makeCollectors(txCollector, ledgerCollector);
178 sim.collectors.add(colls);
189 HeartbeatTimer heart(sim.scheduler);
192 auto peerSelector = makeSelector(
197 auto txSubmitter = makeSubmitter(
198 ConstantDistribution{
rate.inv()},
199 sim.scheduler.now() + quiet,
200 sim.scheduler.now() + simDuration - quiet,
207 sim.run(simDuration);
213 log <<
"| Peers: " <<
std::setw(2) << peers.size();
215 << duration_cast<milliseconds>(simDuration).count() <<
" ms";
216 log <<
" | Branches: " <<
std::setw(1) << sim.branches();
217 log <<
" | Synchronized: " <<
std::setw(1)
218 << (sim.synchronized() ?
"Y" :
"N");
221 txCollector.report(simDuration, log,
true);
222 ledgerCollector.report(simDuration, log,
false);
225 txCollector.csv(simDuration, txLog, tag, printHeaders);
226 ledgerCollector.csv(simDuration, ledgerLog, tag, printHeaders);
238 int maxNumValidators = 0;
240 argStream >> maxNumValidators;
241 argStream >> delayCount;
245 log <<
"DistributedValidators: 1 to " << maxNumValidators <<
" Peers"
255 for (
int i = 2; i <= maxNumValidators; i++)
267 for (
int i = 2; i <= maxNumValidators; i++)