Exemplo n.º 1
0
    def add_stat(self, name:str, data_format:str, stat:Statistics):
        row = [name]

        for p in Percentile:
            if p is Percentile.Avg:
                row.append(stat.get(p))
            elif p is not Percentile.Min:
                row.append(stat.get(p, data_format))

        self.add_row(row)
    best_block = sys.argv[3] if len(
        sys.argv) >= 4 else find_best_block(logs_dir)

    print("Loading logs ...")
    agg = LogAggregator.load(logs_dir)
    parents = {}
    refs = {}
    generate_times = {}
    received_times_max = {}
    received_times_p99 = {}

    for block in agg.blocks.values():
        parents[block.hash] = block.parent
        refs[block.hash] = block.referees
        generate_times[block.hash] = block.timestamp
        latencies_stat = Statistics(block.get_latencies(BlockLatencyType.Cons))
        received_times_max[block.hash] = block.timestamp + latencies_stat.get(
            Percentile.Max)
        received_times_p99[block.hash] = block.timestamp + latencies_stat.get(
            Percentile.P99)

    #print("computing with broadcast latency (Max) ...")
    #latencies_max = compute_latency(parents, refs, best_block, generate_times, received_times_max, lambda_n)
    print("computing with broadcast latency (P99) ...")
    latencies_p99 = compute_latency(parents, refs, best_block, generate_times,
                                    received_times_p99, lambda_n)

    table = Table.new_matrix("confirmation latency")
    #table.add_data("Max", "%.2f", latencies_max)
    table.add_data("P99", "%.2f", latencies_p99)
    table.pretty_print()