[tor-commits] [ooni-probe/master] Fix bug in setting annotations and collector address via command line (#534)
art at torproject.org
art at torproject.org
Tue Jun 21 12:14:12 UTC 2016
commit 358a583299fdb1dd2f85f95515c07d1be95ee0fb
Author: Arturo Filastò <arturo at filasto.net>
Date: Fri Jun 17 11:00:57 2016 +0300
Fix bug in setting annotations and collector address via command line (#534)
* This closes https://github.com/TheTorProject/ooni-probe/issues/529
---
ooni/deck.py | 17 +++++++++++++----
ooni/oonicli.py | 2 +-
ooni/tests/test_deck.py | 19 +++++++++++++++++++
3 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/ooni/deck.py b/ooni/deck.py
index 383845c..657589d 100644
--- a/ooni/deck.py
+++ b/ooni/deck.py
@@ -120,7 +120,7 @@ class Deck(InputFile):
def cached_descriptor(self):
return self.cached_file + '.desc'
- def loadDeck(self, deckFile):
+ def loadDeck(self, deckFile, global_options={}):
with open(deckFile) as f:
self.id = sha256(f.read()).hexdigest()
f.seek(0)
@@ -133,12 +133,21 @@ class Deck(InputFile):
log.err("Could not find %s" % test['options']['test_file'])
log.msg("Skipping...")
continue
+
+ annotations = test['options'].get('annotations', {})
+ if global_options.get('annotations') is not None:
+ annotations = global_options["annotations"]
+
+ collector_address = test['options'].get('collector', None)
+ if global_options.get('collector') is not None:
+ collector_address = global_options['collector']
+
net_test_loader = NetTestLoader(test['options']['subargs'],
- annotations=test['options'].get('annotations', {}),
+ annotations=annotations,
test_file=nettest_path)
- if test['options'].get('collector', None) is not None:
+ if collector_address is not None:
net_test_loader.collector = CollectorClient(
- test['options']['collector']
+ collector_address
)
if test['options'].get('bouncer', None) is not None:
self.bouncer = test['options']['bouncer']
diff --git a/ooni/oonicli.py b/ooni/oonicli.py
index 5aa538c..56b331d 100644
--- a/ooni/oonicli.py
+++ b/ooni/oonicli.py
@@ -244,7 +244,7 @@ def createDeck(global_options, url=None):
try:
if global_options['testdeck']:
- deck.loadDeck(global_options['testdeck'])
+ deck.loadDeck(global_options['testdeck'], global_options)
else:
log.debug("No test deck detected")
test_file = nettest_to_path(global_options['test_file'], True)
diff --git a/ooni/tests/test_deck.py b/ooni/tests/test_deck.py
index fa9b0e8..1e311cf 100644
--- a/ooni/tests/test_deck.py
+++ b/ooni/tests/test_deck.py
@@ -33,6 +33,7 @@ class BaseTestCase(unittest.TestCase):
self.cwd = os.getcwd()
self.dummy_deck_content = """- options:
collector: null
+ annotations: null
help: 0
logfile: null
no-default-reporter: 0
@@ -132,6 +133,24 @@ class TestDeck(BaseTestCase):
deck.loadDeck(self.deck_file)
assert len(deck.netTestLoaders) == 1
+ def test_load_deck_with_global_options(self):
+ global_options = {
+ "annotations": {"spam": "ham"},
+ "collector": "httpo://thirteenchars123.onion"
+ }
+ deck = Deck(bouncer="httpo://foo.onion",
+ decks_directory=".")
+ deck.loadDeck(self.deck_file,
+ global_options=global_options)
+ self.assertEqual(
+ deck.netTestLoaders[0].annotations,
+ global_options['annotations']
+ )
+ self.assertEqual(
+ deck.netTestLoaders[0].collector.base_address,
+ global_options['collector'].replace("httpo://", "http://")
+ )
+
def test_save_deck_descriptor(self):
deck = Deck(bouncer="httpo://foo.onion",
decks_directory=".")
More information about the tor-commits
mailing list