commit 21cfed42b859becabe71a803164004fea2372929 Author: Ravi Chandra Padmala neenaoffline@gmail.com Date: Tue Aug 7 14:14:51 2012 +0530
Add support for votes from Metrics --- stem/descriptor/__init__.py | 2 +- test/integ/descriptor/networkstatus.py | 57 +++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py index 903a877..72d2275 100644 --- a/stem/descriptor/__init__.py +++ b/stem/descriptor/__init__.py @@ -96,7 +96,7 @@ def parse_file(path, descriptor_file): # https://trac.torproject.org/6257
desc = stem.descriptor.extrainfo_descriptor.BridgeExtraInfoDescriptor(descriptor_file.read()) - elif desc_type == "network-status-consensus-3" and major_version == 1: + elif desc_type in ("network-status-consensus-3", "network-status-vote-3") and major_version == 1: desc = stem.descriptor.networkstatus_descriptor.NetworkStatusDocument(descriptor_file.read()) for desc in desc.router_descriptors: desc._set_path(path) diff --git a/test/integ/descriptor/networkstatus.py b/test/integ/descriptor/networkstatus.py index e65d960..a634e54 100644 --- a/test/integ/descriptor/networkstatus.py +++ b/test/integ/descriptor/networkstatus.py @@ -18,25 +18,6 @@ def _strptime(string): return datetime.datetime.strptime(string, "%Y-%m-%d %H:%M:%S")
class TestNetworkStatusDocument(unittest.TestCase): - def test_metrics_consensus(self): - """ - Checks if consensus documents from Metrics are parsed properly. - """ - - descriptor_path = test.integ.descriptor.get_resource("metrics_consensus") - - with file(descriptor_path) as descriptor_file: - desc = stem.descriptor.parse_file(descriptor_path, descriptor_file) - - router = next(desc) - self.assertEquals("sumkledi", router.nickname) - self.assertEquals("ABPSI4nNUNC3hKPkBhyzHozozrU", router.identity) - self.assertEquals("8mCr8Sl7RF4ENU4jb0FZFA/3do8", router.digest) - self.assertEquals(_strptime("2012-07-12 04:01:55"), router.publication) - self.assertEquals("178.218.213.229", router.ip) - self.assertEquals(80, router.orport) - self.assertEquals(None, router.dirport) - def test_cached_consensus(self): """ Parses the cached-consensus file in our data directory. @@ -66,6 +47,25 @@ class TestNetworkStatusDocument(unittest.TestCase):
assert count > 100 # sanity check - assuming atleast 100 relays in the Tor network
+ def test_metrics_consensus(self): + """ + Checks if consensus documents from Metrics are parsed properly. + """ + + descriptor_path = test.integ.descriptor.get_resource("metrics_consensus") + + with file(descriptor_path) as descriptor_file: + desc = stem.descriptor.parse_file(descriptor_path, descriptor_file) + + router = next(desc) + self.assertEquals("sumkledi", router.nickname) + self.assertEquals("ABPSI4nNUNC3hKPkBhyzHozozrU", router.identity) + self.assertEquals("8mCr8Sl7RF4ENU4jb0FZFA/3do8", router.digest) + self.assertEquals(_strptime("2012-07-12 04:01:55"), router.publication) + self.assertEquals("178.218.213.229", router.ip) + self.assertEquals(80, router.orport) + self.assertEquals(None, router.dirport) + def test_consensus(self): """ Checks that consensus documents are properly parsed. @@ -137,6 +137,25 @@ I/TJmV928na7RLZe2mGHCAW3VQOvV+QkCfj05VZ8CsY=""" self.assertEquals("BF112F1C6D5543CFD0A32215ACABD4197B5279AD", desc.directory_signatures[0].key_digest) self.assertEquals(expected_signature, desc.directory_signatures[0].signature)
+ def test_metrics_vote(self): + """ + Checks if vote documents from Metrics are parsed properly. + """ + + descriptor_path = test.integ.descriptor.get_resource("metrics_vote") + + with file(descriptor_path) as descriptor_file: + desc = stem.descriptor.parse_file(descriptor_path, descriptor_file) + + router = next(desc) + self.assertEquals("sumkledi", router.nickname) + self.assertEquals("ABPSI4nNUNC3hKPkBhyzHozozrU", router.identity) + self.assertEquals("B5n4BiALAF8B5AqafxohyYiuj7E", router.digest) + self.assertEquals(_strptime("2012-07-11 04:22:53"), router.publication) + self.assertEquals("178.218.213.229", router.ip) + self.assertEquals(80, router.orport) + self.assertEquals(None, router.dirport) + def test_vote(self): """ Checks that vote documents are properly parsed.
tor-commits@lists.torproject.org