25 bool printHeaders =
false)
32 "DistributedValidators_"
33 "completeTrustCompleteConnectFixedDelay";
34 std::fstream txLog(prefix +
"_tx.csv", std::ofstream::app),
35 ledgerLog(prefix +
"_ledger.csv", std::ofstream::app);
38 log << prefix <<
"(" << numPeers <<
"," << delay.count() <<
")" <<
std::endl;
41 BEAST_EXPECT(numPeers >= 1);
44 PeerGroup peers = sim.createGroup(numPeers);
50 peers.connect(peers, delay);
53 TxCollector txCollector;
54 LedgerCollector ledgerCollector;
55 auto colls = makeCollectors(txCollector, ledgerCollector);
56 sim.collectors.add(colls);
67 HeartbeatTimer heart(sim.scheduler);
70 auto peerSelector = makeSelector(peers.begin(), peers.end(),
std::vector<double>(numPeers, 1.), sim.rng);
71 auto txSubmitter = makeSubmitter(
72 ConstantDistribution{
rate.inv()},
73 sim.scheduler.now() + quiet,
74 sim.scheduler.now() + simDuration - quiet,
88 log <<
" | Duration: " <<
std::setw(6) << duration_cast<milliseconds>(simDuration).count() <<
" ms";
89 log <<
" | Branches: " <<
std::setw(1) << sim.branches();
90 log <<
" | Synchronized: " <<
std::setw(1) << (sim.synchronized() ?
"Y" :
"N");
93 txCollector.report(simDuration,
log,
true);
94 ledgerCollector.report(simDuration,
log,
false);
97 txCollector.csv(simDuration, txLog, tag, printHeaders);
98 ledgerCollector.csv(simDuration, ledgerLog, tag, printHeaders);
107 bool printHeaders =
false)
114 "DistributedValidators__"
115 "completeTrustScaleFreeConnectFixedDelay";
116 std::fstream txLog(prefix +
"_tx.csv", std::ofstream::app),
117 ledgerLog(prefix +
"_ledger.csv", std::ofstream::app);
120 log << prefix <<
"(" << numPeers <<
"," << delay.count() <<
")" <<
std::endl;
123 int const numCNLs =
std::max(
int(1.00 * numPeers), 1);
124 int const minCNLSize =
std::max(
int(0.25 * numCNLs), 1);
125 int const maxCNLSize =
std::max(
int(0.50 * numCNLs), 1);
126 BEAST_EXPECT(numPeers >= 1);
127 BEAST_EXPECT(numCNLs >= 1);
128 BEAST_EXPECT(1 <= minCNLSize && minCNLSize <= maxCNLSize && maxCNLSize <= numPeers);
131 PeerGroup peers = sim.createGroup(numPeers);
137 std::vector<double> const ranks = sample(peers.size(), PowerLawDistribution{1, 3}, sim.rng);
142 TxCollector txCollector;
143 LedgerCollector ledgerCollector;
144 auto colls = makeCollectors(txCollector, ledgerCollector);
145 sim.collectors.add(colls);
156 HeartbeatTimer heart(sim.scheduler);
159 auto peerSelector = makeSelector(peers.begin(), peers.end(),
std::vector<double>(numPeers, 1.), sim.rng);
160 auto txSubmitter = makeSubmitter(
161 ConstantDistribution{
rate.inv()},
162 sim.scheduler.now() + quiet,
163 sim.scheduler.now() + simDuration - quiet,
170 sim.run(simDuration);
177 log <<
" | Duration: " <<
std::setw(6) << duration_cast<milliseconds>(simDuration).count() <<
" ms";
178 log <<
" | Branches: " <<
std::setw(1) << sim.branches();
179 log <<
" | Synchronized: " <<
std::setw(1) << (sim.synchronized() ?
"Y" :
"N");
182 txCollector.report(simDuration,
log,
true);
183 ledgerCollector.report(simDuration,
log,
false);
186 txCollector.csv(simDuration, txLog, tag, printHeaders);
187 ledgerCollector.csv(simDuration, ledgerLog, tag, printHeaders);