[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Provide '[type] description' for new capabilities
commit 4d5291895595c2ffbb59032f1865db6aa0f18851
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Sun Mar 22 17:17:35 2015 -0700
Provide '[type] description' for new capabilities
For descriptors we just provided the keyword rather than the whole line. Might
as well show something like...
[Server descriptor line] new-keyword 25,38,290
---
run_tests.py | 12 ++++----
test/integ/control/controller.py | 13 ++------
test/integ/descriptor/extrainfo_descriptor.py | 12 ++------
test/integ/descriptor/microdescriptor.py | 13 ++------
test/integ/descriptor/networkstatus.py | 41 ++++++++-----------------
test/integ/descriptor/server_descriptor.py | 13 ++------
test/util.py | 21 ++++++++-----
7 files changed, 41 insertions(+), 84 deletions(-)
diff --git a/run_tests.py b/run_tests.py
index 2a44366..4e8a8fd 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -62,9 +62,10 @@ NEW_CAPABILITIES_FOUND = """\
Your version of Tor has capabilities stem presently isn't taking advantage of.
If you're running the latest version of stem then please file a ticket on:
-https://trac.torproject.org/projects/tor/wiki/doc/stem/bugs
+ https://trac.torproject.org/projects/tor/wiki/doc/stem/bugs
New capabilities are:
+
"""
PYFLAKES_TASK = Task(
@@ -296,15 +297,14 @@ def main():
println('%i TESTS WERE SKIPPED' % skipped_tests, STATUS)
println('TESTING PASSED %s\n' % runtime_label, SUCCESS)
-
+
new_capabilities = test.util.get_new_capabilities()
-
+
if new_capabilities:
println(NEW_CAPABILITIES_FOUND, ERROR)
-
- for item in new_capabilities:
- println('%s: %s' % (new_capabilities[item], item), ERROR)
+ for capability_type, msg in new_capabilities:
+ println(' [%s] %s' % (capability_type, msg), ERROR)
sys.exit(1 if error_tracker.has_errors_occured() else 0)
diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index 2be5a17..fb08e0f 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -26,6 +26,7 @@ from stem import Flag, Signal
from stem.control import EventType, Listener, State
from stem.exit_policy import ExitPolicy
from stem.version import Requirement
+
from test.util import register_new_capability
from test.runner import (
@@ -1085,16 +1086,8 @@ class TestController(unittest.TestCase):
self.assertTrue(desc.fingerprint is not None)
self.assertTrue(desc.nickname is not None)
- unrecognized_lines = desc.get_unrecognized_lines()
-
- if unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
-
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Network Descriptor Entry')
+ for line in desc.get_unrecognized_lines():
+ register_new_capability('Consensus line', line)
count += 1
if count > 10:
diff --git a/test/integ/descriptor/extrainfo_descriptor.py b/test/integ/descriptor/extrainfo_descriptor.py
index 92dcbf5..0c37afa 100644
--- a/test/integ/descriptor/extrainfo_descriptor.py
+++ b/test/integ/descriptor/extrainfo_descriptor.py
@@ -9,7 +9,6 @@ import stem.descriptor
import test.runner
from test.runner import only_run_once
-
from test.util import register_new_capability
@@ -30,7 +29,8 @@ class TestExtraInfoDescriptor(unittest.TestCase):
with open(descriptor_path, 'rb') as descriptor_file:
for desc in stem.descriptor.parse_file(descriptor_file, 'extra-info 1.0', validate = True):
- unrecognized_lines = desc.get_unrecognized_lines()
+ for line in desc.get_unrecognized_lines():
+ register_new_capability('Extra-info descriptor line', line)
if desc.dir_v2_responses_unknown:
self.fail('Unrecognized statuses on dirreq-v2-resp lines: %s' % desc.dir_v2_responses_unknown)
@@ -42,11 +42,3 @@ class TestExtraInfoDescriptor(unittest.TestCase):
self.fail('Unrecognized stats on dirreq-v3-direct-dl lines: %s' % desc.dir_v2_direct_dl_unknown)
elif desc.dir_v2_tunneled_dl_unknown:
self.fail('Unrecognized stats on dirreq-v2-tunneled-dl lines: %s' % desc.dir_v2_tunneled_dl_unknown)
- elif unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
-
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Extrainfo Descriptor Entry')
diff --git a/test/integ/descriptor/microdescriptor.py b/test/integ/descriptor/microdescriptor.py
index 0ea7ea1..26d04ef 100644
--- a/test/integ/descriptor/microdescriptor.py
+++ b/test/integ/descriptor/microdescriptor.py
@@ -9,7 +9,6 @@ import stem.descriptor
import test.runner
from test.runner import only_run_once
-
from test.util import register_new_capability
@@ -30,13 +29,5 @@ class TestMicrodescriptor(unittest.TestCase):
with open(descriptor_path, 'rb') as descriptor_file:
for desc in stem.descriptor.parse_file(descriptor_file, 'microdescriptor 1.0', validate = True):
- unrecognized_lines = desc.get_unrecognized_lines()
-
- if unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
-
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Microdescriptor Descriptor Entry')
+ for line in desc.get_unrecognized_lines():
+ register_new_capability('Microdescriptor line', line)
diff --git a/test/integ/descriptor/networkstatus.py b/test/integ/descriptor/networkstatus.py
index 21fdaf1..215188a 100644
--- a/test/integ/descriptor/networkstatus.py
+++ b/test/integ/descriptor/networkstatus.py
@@ -12,7 +12,6 @@ import stem.version
import test.runner
from test.runner import only_run_once
-
from test.util import register_new_capability
@@ -35,26 +34,19 @@ class TestNetworkStatus(unittest.TestCase):
test.runner.skip(self, '(unavailable on windows)')
return
- count = 0
+ count, reported_flags = 0, []
+
with open(consensus_path, 'rb') as descriptor_file:
for router in stem.descriptor.parse_file(descriptor_file, 'network-status-consensus-3 1.0', validate = True):
count += 1
- # check if there's any unknown flags and report them to the user
for flag in router.flags:
- if flag not in stem.Flag:
- register_new_capability(flag, 'Network Flag')
-
- unrecognized_lines = router.get_unrecognized_lines()
+ if flag not in stem.Flag and flag not in reported_flags:
+ register_new_capability('Relay flag', flag)
+ reported_flags.append(flag)
- if unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
-
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Network Descriptor Entry')
+ for line in router.get_unrecognized_lines():
+ register_new_capability('Consensus line', line)
# Sanity test that there's at least a hundred relays. If that's not the
# case then this probably isn't a real, complete tor consensus.
@@ -76,25 +68,18 @@ class TestNetworkStatus(unittest.TestCase):
test.runner.skip(self, '(unavailable on windows)')
return
- count = 0
+ count, reported_flags = 0, []
+
with open(consensus_path, 'rb') as descriptor_file:
for router in stem.descriptor.parse_file(descriptor_file, 'network-status-microdesc-consensus-3 1.0', validate = True):
count += 1
- # check if there's any unknown flags and report them to the user
for flag in router.flags:
if flag not in stem.Flag:
- register_new_capability(flag, 'Network Flag')
-
- unrecognized_lines = router.get_unrecognized_lines()
-
- if unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
+ register_new_capability('Relay flag (microdescriptor consensus)', flag)
+ reported_flags.append(flag)
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Network Descriptor Entry')
+ for line in router.get_unrecognized_lines():
+ register_new_capability('Microdescriptor consensus line', line)
self.assertTrue(count > 100)
diff --git a/test/integ/descriptor/server_descriptor.py b/test/integ/descriptor/server_descriptor.py
index 1404cfa..7afff60 100644
--- a/test/integ/descriptor/server_descriptor.py
+++ b/test/integ/descriptor/server_descriptor.py
@@ -10,7 +10,6 @@ import stem.descriptor
import test.runner
from test.runner import only_run_once
-
from test.util import register_new_capability
@@ -37,13 +36,5 @@ class TestServerDescriptor(unittest.TestCase):
self.assertEqual(None, desc.eventdns)
self.assertEqual(None, desc.socks_port)
- unrecognized_lines = desc.get_unrecognized_lines()
-
- if unrecognized_lines:
- # Forward-compability:
- # 1) SHOULD function at least as it does normally (ignore the unknown)
- # 2) Report each of the aditional (unrecognized) fields to the user
-
- for line in unrecognized_lines:
- key = line.split()[0]
- register_new_capability(key, 'Server Descriptor Entry')
+ for line in desc.get_unrecognized_lines():
+ register_new_capability('Server descriptor line', line)
diff --git a/test/util.py b/test/util.py
index 10fd408..87fc47e 100644
--- a/test/util.py
+++ b/test/util.py
@@ -82,7 +82,7 @@ STEM_BASE = os.path.sep.join(__file__.split(os.path.sep)[:-2])
# Store new capabilities (events, descriptor entries, etc.)
-NEW_CAPABILITIES = {}
+NEW_CAPABILITIES = []
def get_unit_tests(module_prefix = None):
@@ -181,8 +181,12 @@ def get_torrc_entries(target):
def get_new_capabilities():
"""
- Return list of new capabilities found during the tests
+ Provides a list of capabilities tor supports but stem doesn't, as discovered
+ while running our tests.
+
+ :returns: **list** of (type, message) tuples for the capabilities
"""
+
return NEW_CAPABILITIES
@@ -274,16 +278,17 @@ def check_for_unused_tests(paths):
if unused_tests:
raise ValueError('Test modules are missing from our test/settings.cfg:\n%s' % '\n'.join(unused_tests))
-
-def register_new_capability(key, label):
+
+def register_new_capability(capability_type, msg):
"""
Register new capability found during the tests.
-
- :param str key: unique string to identify this new capability
- :param str label: string describing where we found this new capability
+
+ :param str capability_type: type of capability this is
+ :param str msg: description of what we found
"""
- NEW_CAPABILITIES[key] = label
+
+ NEW_CAPABILITIES.append((capability_type, msg))
def _is_test_data(path):
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits