in benchmark/benchmark/logs.py [0:0]
def result(self):
header_size = self.configs[0]['header_size']
max_header_delay = self.configs[0]['max_header_delay']
gc_depth = self.configs[0]['gc_depth']
sync_retry_delay = self.configs[0]['sync_retry_delay']
sync_retry_nodes = self.configs[0]['sync_retry_nodes']
batch_size = self.configs[0]['batch_size']
max_batch_delay = self.configs[0]['max_batch_delay']
consensus_latency = self._consensus_latency() * 1_000
consensus_tps, consensus_bps, _ = self._consensus_throughput()
end_to_end_tps, end_to_end_bps, duration = self._end_to_end_throughput()
end_to_end_latency = self._end_to_end_latency() * 1_000
return (
'\n'
'-----------------------------------------\n'
' SUMMARY:\n'
'-----------------------------------------\n'
' + CONFIG:\n'
f' Faults: {self.faults} node(s)\n'
f' Committee size: {self.committee_size} node(s)\n'
f' Worker(s) per node: {self.workers} worker(s)\n'
f' Collocate primary and workers: {self.collocate}\n'
f' Input rate: {sum(self.rate):,} tx/s\n'
f' Transaction size: {self.size[0]:,} B\n'
f' Execution time: {round(duration):,} s\n'
'\n'
f' Header size: {header_size:,} B\n'
f' Max header delay: {max_header_delay:,} ms\n'
f' GC depth: {gc_depth:,} round(s)\n'
f' Sync retry delay: {sync_retry_delay:,} ms\n'
f' Sync retry nodes: {sync_retry_nodes:,} node(s)\n'
f' batch size: {batch_size:,} B\n'
f' Max batch delay: {max_batch_delay:,} ms\n'
'\n'
' + RESULTS:\n'
f' Consensus TPS: {round(consensus_tps):,} tx/s\n'
f' Consensus BPS: {round(consensus_bps):,} B/s\n'
f' Consensus latency: {round(consensus_latency):,} ms\n'
'\n'
f' End-to-end TPS: {round(end_to_end_tps):,} tx/s\n'
f' End-to-end BPS: {round(end_to_end_bps):,} B/s\n'
f' End-to-end latency: {round(end_to_end_latency):,} ms\n'
'-----------------------------------------\n'
)