[tor-commits] [sbws/master] chg: v3bwfile: Percentage difference with consensus

juga at torproject.org juga at torproject.org
Mon Jun 29 07:50:40 UTC 2020


commit d4fe347c8154335049898a4e687d5cf33e974f24
Author: juga0 <juga at riseup.net>
Date:   Tue May 19 08:11:11 2020 +0000

    chg: v3bwfile: Percentage difference with consensus
---
 sbws/lib/v3bwfile.py | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/sbws/lib/v3bwfile.py b/sbws/lib/v3bwfile.py
index d64712c..263a285 100644
--- a/sbws/lib/v3bwfile.py
+++ b/sbws/lib/v3bwfile.py
@@ -1077,7 +1077,9 @@ class V3BWFile(object):
             bw_lines = cls.bw_kb(bw_lines_raw)
             # log.debug(bw_lines[-1])
         # Not using the result for now, just warning
-        cls.is_max_bw_diff_perc_reached(bw_lines, max_bw_diff_perc)
+        cls.is_max_bw_diff_perc_reached(
+            bw_lines, max_bw_diff_perc, router_statuses_d
+        )
         header.add_time_report_half_network()
         f = cls(header, bw_lines + bw_lines_excluded)
         return f
@@ -1159,18 +1161,22 @@ class V3BWFile(object):
 
     @staticmethod
     def is_max_bw_diff_perc_reached(bw_lines,
-                                    max_bw_diff_perc=MAX_BW_DIFF_PERC):
-        # Since old versions were not storing consensus bandwidth, use getattr.
-        sum_consensus_bw = sum([l.consensus_bandwidth for l in bw_lines
-                                if getattr(l, 'consensus_bandwidth', None)])
+                                    max_bw_diff_perc=MAX_BW_DIFF_PERC,
+                                    router_statuses_d=None):
+        if router_statuses_d:
+            sum_consensus_bw = sum(list(map(
+                lambda x: x.bandwidth * 1000,
+                router_statuses_d.values()
+            )))
+        else:
+            sum_consensus_bw = sum([
+                l.consensus_bandwidth for l in bw_lines
+                if getattr(l, 'consensus_bandwidth', None)
+            ])
         # Because the scaled bandwidth is in KB, but not the stored consensus
         # bandwidth, multiply by 1000.
-        # Do not count 1 bandwidths for the relays that were excluded
-        # and exclude also the bw of the relays that did not stored consensus,
-        # since they are not included either in the sum of the consensus.
-        sum_bw = sum([l.bw for l in bw_lines
-                      if getattr(l, 'consensus_bandwidth', None)
-                      and getattr(l, 'unmeasured', 0) == 0]) * 1000
+        # Do not count the bandwidths for the relays that were excluded
+        sum_bw = sum([l.bw for l in bw_lines if getattr(l, "vote", 1)]) * 1000
         # Percentage difference
         diff_perc = (
             abs(sum_consensus_bw - sum_bw)





More information about the tor-commits mailing list