commit 9a30d020ce6bbfdbfc3e56dcc2b89cb932bfdb6f Author: Arturo Filastò art@fuffa.org Date: Sat Mar 9 03:13:50 2013 +0100
Add option to disable the default collector
* More robust startup process --- ooni/errors.py | 2 ++ ooni/oonicli.py | 36 ++++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/ooni/errors.py b/ooni/errors.py index ac05463..1be42c3 100644 --- a/ooni/errors.py +++ b/ooni/errors.py @@ -147,3 +147,5 @@ class GeoIPDataFilesNotFound(Exception): pass class NoMoreReporters(Exception): pass +class TorNotRunning(Exception): + pass diff --git a/ooni/oonicli.py b/ooni/oonicli.py index 06aa20c..3eae499 100644 --- a/ooni/oonicli.py +++ b/ooni/oonicli.py @@ -10,7 +10,7 @@ from twisted.internet import reactor from twisted.python import usage from twisted.python.util import spewer
-from ooni.errors import InvalidOONIBCollectorAddress +from ooni import errors
from ooni import config from ooni.director import Director @@ -29,7 +29,9 @@ class Options(usage.Options): " files listed on the command line")
optFlags = [["help", "h"], - ["resume", "r"]] + ["resume", "r"], + ["no-collector", "n"] + ]
optParameters = [["reportfile", "o", None, "report file name"], ["testdeck", "i", None, @@ -102,6 +104,9 @@ def runWithDirector():
# contains (test_cases, options, cmd_line_options) test_list = [] + if global_options['no-collector']: + log.msg("Not reporting using a collector") + global_options.pop('collector')
if global_options['testdeck']: test_deck = yaml.safe_load(open(global_options['testdeck'])) @@ -131,32 +136,43 @@ def runWithDirector():
def director_startup_failed(failure): log.err("Failed to start the director") - log.exception(failure) reactor.stop()
# Wait until director has started up (including bootstrapping Tor) before adding tess def post_director_start(_): for net_test_loader in test_list: + collector = global_options['collector'] test_details = net_test_loader.testDetails
yaml_reporter = YAMLReporter(test_details) reporters = [yaml_reporter]
- if global_options['collector']: + if collector.startswith('httpo') \ + and not config.tor_state: + log.err("Tor does not appear to be running") + log.err("Reporting with the collector %s is not possible") + log.msg("Try with a different collector or disable collector reporting with -n") + raise errors.TorNotRunning + elif collector: + log.msg("Reporting using collector: %s" % + collector) try: oonib_reporter = OONIBReporter(test_details, - global_options['collector']) + collector) reporters.append(oonib_reporter) - except InvalidOONIBCollectorAddress: + except errors.InvalidOONIBCollectorAddress, e: log.err("Invalid format for oonib collector address.") log.msg("Should be in the format http://<collector_address>:<port>") log.msg("for example: ooniprobe -c httpo://nkvphnp3p6agi5qq.onion") - sys.exit(1) + raise e
log.debug("adding callback for startNetTest") d.addCallback(director.startNetTest, net_test_loader, reporters) - d.addCallback(shutdown) + d.addBoth(shutdown)
- d.addCallback(post_director_start) - d.addErrback(director_startup_failed) + def start(): + d.addCallback(post_director_start) + d.addErrback(director_startup_failed) + + reactor.callWhenRunning(start) reactor.run()
tor-commits@lists.torproject.org