[tor-commits] [stem/master] Test that tor's present dirauths match stem's hardcoded list

atagar at torproject.org atagar at torproject.org
Thu Feb 19 18:12:24 UTC 2015


commit d32a5c09deb81d51e7f792fe2d150579a6769842
Author: Damian Johnson <atagar at torproject.org>
Date:   Thu Feb 19 09:45:50 2015 -0800

    Test that tor's present dirauths match stem's hardcoded list
    
    Stem includes a hardcoded list of tor's directory authorities much as tor
    itself does, so it can do remote descriptor fetching. Adding a simple test that
    it matches the present tor consensus to help us stay in sync...
    
      https://trac.torproject.org/projects/tor/ticket/14832
---
 test/integ/descriptor/remote.py |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/test/integ/descriptor/remote.py b/test/integ/descriptor/remote.py
index 9183c0d..61370d2 100644
--- a/test/integ/descriptor/remote.py
+++ b/test/integ/descriptor/remote.py
@@ -4,6 +4,7 @@ Integration tests for stem.descriptor.remote.
 
 import unittest
 
+import stem.descriptor
 import stem.descriptor.extrainfo_descriptor
 import stem.descriptor.microdescriptor
 import stem.descriptor.networkstatus
@@ -14,6 +15,30 @@ import test.runner
 
 
 class TestDescriptorDownloader(unittest.TestCase):
+  def test_authorities_are_up_to_date(self):
+    """
+    Check that our hardcoded directory authority data matches the present
+    consensus.
+    """
+
+    if test.runner.require_online(self):
+      return
+    elif test.runner.only_run_once(self):
+      return
+
+    downloader = stem.descriptor.remote.DescriptorDownloader()
+    consensus = downloader.get_consensus(document_handler = stem.descriptor.DocumentHandler.BARE_DOCUMENT).run()[0]
+
+    for auth in consensus.directory_authorities:
+      stem_auth = stem.descriptor.remote.get_authorities().get(auth.nickname)
+
+      if not stem_auth:
+        self.fail("%s isn't a recognized directory authority in stem" % auth.nickname)
+
+      for attr in ('address', 'fingerprint', 'or_port', 'dir_port'):
+        if getattr(auth, attr) != getattr(stem_auth, attr):
+          self.fail("%s has %s %s, but we expected %s" % (auth.nickname, attr, getattr(auth, attr), getattr(stem_auth, attr)))
+
   def test_using_authorities(self):
     """
     Fetches a descriptor from each of the directory authorities. This is





More information about the tor-commits mailing list