[tor-commits] [sbws/master] new: resultdump: Store relay consensus count

juga at torproject.org juga at torproject.org
Thu Mar 21 18:30:42 UTC 2019


commit f2d231ef1325653967ba34c67fc95a17fe9b7c8f
Author: juga0 <juga at riseup.net>
Date:   Fri Feb 8 09:13:12 2019 +0000

    new: resultdump: Store relay consensus count
    
    for every result that is stored.
    
    Part of #28566.
---
 sbws/lib/resultdump.py | 32 ++++++++++++++++++++++++--------
 tests/unit/conftest.py |  4 +++-
 2 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/sbws/lib/resultdump.py b/sbws/lib/resultdump.py
index 39aeda4..c081b61 100644
--- a/sbws/lib/resultdump.py
+++ b/sbws/lib/resultdump.py
@@ -204,7 +204,8 @@ class Result:
         def __init__(self, fingerprint, nickname, address, master_key_ed25519,
                      average_bandwidth=None, burst_bandwidth=None,
                      observed_bandwidth=None, consensus_bandwidth=None,
-                     consensus_bandwidth_is_unmeasured=None):
+                     consensus_bandwidth_is_unmeasured=None,
+                     consensus_count=None):
             self.fingerprint = fingerprint
             self.nickname = nickname
             self.address = address
@@ -215,15 +216,19 @@ class Result:
             self.consensus_bandwidth = consensus_bandwidth
             self.consensus_bandwidth_is_unmeasured = \
                 consensus_bandwidth_is_unmeasured
+            # The number of times the relay was in a consensus.
+            self.consensus_count = consensus_count
 
-    def __init__(self, relay, circ, dest_url, scanner_nick, t=None):
+    def __init__(self, relay, circ, dest_url, scanner_nick, t=None,
+                 consensus_count=None):
         self._relay = Result.Relay(relay.fingerprint, relay.nickname,
                                    relay.address, relay.master_key_ed25519,
                                    relay.average_bandwidth,
                                    relay.burst_bandwidth,
                                    relay.observed_bandwidth,
                                    relay.consensus_bandwidth,
-                                   relay.consensus_bandwidth_is_unmeasured)
+                                   relay.consensus_bandwidth_is_unmeasured,
+                                   relay.consensus_count)
         self._circ = circ
         self._dest_url = dest_url
         self._scanner = scanner_nick
@@ -270,6 +275,11 @@ class Result:
         return self._relay.master_key_ed25519
 
     @property
+    def consensus_count(self):
+        """Number of times the relay was in a consensus."""
+        return self._relay.consensus_count
+
+    @property
     def circ(self):
         return self._circ
 
@@ -301,6 +311,7 @@ class Result:
             'type': self.type,
             'scanner': self.scanner,
             'version': self.version,
+            'consensus_count': self.consensus_count,
         }
 
     @staticmethod
@@ -368,7 +379,8 @@ class ResultError(Result):
         return ResultError(
             Result.Relay(
                 d['fingerprint'], d['nickname'], d['address'],
-                d['master_key_ed25519']),
+                d['master_key_ed25519'],
+                consensus_count=d.get('consensus_count', None)),
             d['circ'], d['dest_url'], d['scanner'],
             msg=d['msg'], t=d['time'])
 
@@ -409,7 +421,8 @@ class ResultErrorCircuit(ResultError):
         return ResultErrorCircuit(
             Result.Relay(
                 d['fingerprint'], d['nickname'], d['address'],
-                d['master_key_ed25519']),
+                d['master_key_ed25519'],
+                consensus_count=d.get('consensus_count', None)),
             d['circ'], d['dest_url'], d['scanner'],
             msg=d['msg'], t=d['time'])
 
@@ -432,7 +445,8 @@ class ResultErrorStream(ResultError):
         return ResultErrorStream(
             Result.Relay(
                 d['fingerprint'], d['nickname'], d['address'],
-                d['master_key_ed25519']),
+                d['master_key_ed25519'],
+                consensus_count=d.get('consensus_count', None)),
             d['circ'], d['dest_url'], d['scanner'],
             msg=d['msg'], t=d['time'])
 
@@ -468,7 +482,8 @@ class ResultErrorAuth(ResultError):
         return ResultErrorAuth(
             Result.Relay(
                 d['fingerprint'], d['nickname'], d['address'],
-                d['master_key_ed25519']),
+                d['master_key_ed25519'],
+                consensus_count=d.get('consensus_count', None)),
             d['circ'], d['dest_url'], d['scanner'],
             msg=d['msg'], t=d['time'])
 
@@ -505,7 +520,8 @@ class ResultSuccess(Result):
                 d['master_key_ed25519'], d['relay_average_bandwidth'],
                 d.get('relay_burst_bandwidth'), d['relay_observed_bandwidth'],
                 d.get('consensus_bandwidth'),
-                d.get('consensus_bandwidth_is_unmeasured')),
+                d.get('consensus_bandwidth_is_unmeasured'),
+                consensus_count=d.get('consensus_count', None)),
             d['circ'], d['dest_url'], d['scanner'],
             t=d['time'])
 
diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py
index ada1b9b..f5d3d05 100644
--- a/tests/unit/conftest.py
+++ b/tests/unit/conftest.py
@@ -71,7 +71,8 @@ UNMEASURED = False
 RELAY1 = Result.Relay(FP1, NICK1, IP1, ED25519,
                       average_bandwidth=AVG_BW, burst_bandwidth=BUR_BW,
                       observed_bandwidth=OBS_BW, consensus_bandwidth=BW,
-                      consensus_bandwidth_is_unmeasured=UNMEASURED)
+                      consensus_bandwidth_is_unmeasured=UNMEASURED,
+                      consensus_count=2)
 RELAY2 = Result.Relay(FP2, NICK2, IP2, ED25519)
 
 RESULT = Result(RELAY1, CIRC12, DEST_URL, SCANNER, t=TIME1)
@@ -95,6 +96,7 @@ RELAY_DICT = {
     "relay_observed_bandwidth": OBS_BW,
     "consensus_bandwidth": BW,
     "consensus_bandwidth_is_unmeasured": UNMEASURED,
+    "consensus_count": 2,
 }
 
 BASE_RESULT_NO_RELAY_DICT = {





More information about the tor-commits mailing list