def test_from_results_read(datadir, tmpdir, conf, args): results = load_result_file(str(datadir.join("results.txt"))) expected_header = V3BWHeader(timestamp_l, earliest_bandwidth=earliest_bandwidth, latest_bandwidth=latest_bandwidth) exclusion_dict = dict([ (k, 0) for k in BW_HEADER_KEYVALUES_RECENT_MEASUREMENTS_EXCLUDED ]) expected_header.add_relays_excluded_counters(exclusion_dict) raw_bwls = [V3BWLine.from_results(results[fp])[0] for fp in results] # Scale BWLines using torflow method, since it's the default and BWLines # bandwidth is the raw bandwidth. expected_bwls = V3BWFile.bw_torflow_scale(raw_bwls) expected_f = V3BWFile(expected_header, expected_bwls) # This way is going to convert bw to KB v3bwfile = V3BWFile.from_results(results) assert str(expected_f)[1:] == str(v3bwfile)[1:] output = os.path.join(args.output, now_fname()) v3bwfile.write(output)
def test_measured_progress_stats(datadir): number_consensus_relays = 3 bw_lines_raw = [] statsd_exp = { 'percent_eligible_relays': 100, 'minimum_percent_eligible_relays': 60, 'number_consensus_relays': 3, 'minimum_number_eligible_relays': 2, 'number_eligible_relays': 3 } min_perc_reached_before = None results = load_result_file(str(datadir.join("results_away.txt"))) for fp, values in results.items(): # log.debug("Relay fp %s", fp) line, _ = V3BWLine.from_results(values) if line is not None: bw_lines_raw.append(line) assert len(bw_lines_raw) == 3 bw_lines = V3BWFile.bw_torflow_scale(bw_lines_raw) assert len(bw_lines) == 3 statsd, success = V3BWFile.measured_progress_stats( len(bw_lines), number_consensus_relays, min_perc_reached_before) assert success assert statsd == statsd_exp number_consensus_relays = 6 statsd, success = V3BWFile.measured_progress_stats( len(bw_lines), number_consensus_relays, min_perc_reached_before) assert not success statsd_exp = { 'percent_eligible_relays': 50, 'minimum_percent_eligible_relays': 60, 'number_consensus_relays': 6, 'minimum_number_eligible_relays': 4, 'number_eligible_relays': 3 } assert statsd_exp == statsd