[tor-commits] [doctor/master] Notice if too many relays are unmeasured by bandwidth authorities

atagar at torproject.org atagar at torproject.org
Sat Aug 30 20:46:52 UTC 2014


commit 30540279d0105b056b7f6415298d35887c4ca215
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Aug 30 13:47:15 2014 -0700

    Notice if too many relays are unmeasured by bandwidth authorities
    
    Adding a notice when bandwidth authorities lack an opinion on over 10% of the
    relays...
    
      NOTICE: As a bandwidth authority maatuska lacked a measurement for 1038 of 7418 relays (13%)
      NOTICE: As a bandwidth authority tor26 lacked a measurement for 1764 of 7418 relays (23%)
      NOTICE: As a bandwidth authority gabelmoo lacked a measurement for 1361 of 7266 relays (18%)
    
    This is disabled for now since the bandwidth authorities are presently having
    issues. This is for...
    
      https://trac.torproject.org/projects/tor/ticket/12989
---
 consensus_health_checker.py |   24 ++++++++++++++++++++++++
 data/consensus_health.cfg   |    1 +
 2 files changed, 25 insertions(+)

diff --git a/consensus_health_checker.py b/consensus_health_checker.py
index df827fb..fde03aa 100755
--- a/consensus_health_checker.py
+++ b/consensus_health_checker.py
@@ -233,6 +233,8 @@ def run_checks(consensuses, votes):
     consensuses_have_same_votes,
     has_all_signatures,
     voting_bandwidth_scanners,
+    # TODO: enable when the bandwidth scanners are fixed (#12989)
+    #unmeasured_relays,
     has_authority_flag,
     is_recommended_versions,
     bad_exits_in_sync,
@@ -473,6 +475,28 @@ def voting_bandwidth_scanners(latest_consensus, consensuses, votes):
   return issues
 
 
+def unmeasured_relays(latest_consensus, consensuses, votes):
+  "Checks that the bandwidth authorities have all formed an opinion about at least 90% of the relays."
+
+  issues = []
+
+  for authority, vote in votes.items():
+    if authority in CONFIG['bandwidth_authorities']:
+      unmeasured = 0
+
+      for desc in vote.routers.values():
+        if not desc.measured:
+          unmeasured += 1
+
+      total = len(vote.routers)
+      percentage = 100 * unmeasured / total
+
+      if percentage >= 10:
+        issues.append(Issue(Runlevel.NOTICE, 'TOO_MANY_UNMEASURED_RELAYS', authority = authority, unmeasured = unmeasured, total = total, percentage = percentage))
+
+  return issues
+
+
 def has_authority_flag(latest_consensus, consensuses, votes):
   "Checks that the authorities have the 'authority' flag in the present consensus."
 
diff --git a/data/consensus_health.cfg b/data/consensus_health.cfg
index af7c200..8f25fb4 100644
--- a/data/consensus_health.cfg
+++ b/data/consensus_health.cfg
@@ -9,6 +9,7 @@ msg CERTIFICATE_ABOUT_TO_EXPIRE => The certificate of the following directory au
 msg MISSING_SIGNATURE => Consensus fetched from {consensus_of} was missing the following authority signatures: {authorities}
 msg MISSING_BANDWIDTH_SCANNERS => The following directory authorities are not reporting bandwidth scanner results: {authorities}
 msg EXTRA_BANDWIDTH_SCANNERS => The following directory authorities were not expected to report bandwidth scanner results: {authorities}
+msg TOO_MANY_UNMEASURED_RELAYS => As a bandwidth authority {authority} lacked a measurement for {unmeasured} of {total} relays ({percentage}%)
 msg MISSING_VOTES => The consensuses downloaded from the following authorities are missing votes that are contained in consensuses downloaded from other authorities: {authorities}
 msg MISSING_AUTHORITIES => The following authorities are missing from the consensus: {authorities}
 msg EXTRA_AUTHORITIES => The following authorities were not expected in the consensus: {authorities}



More information about the tor-commits mailing list