[tor-commits] [ooni-probe/master] Fix some issues with ooni.deck

art at torproject.org art at torproject.org
Tue Aug 27 09:21:51 UTC 2013


commit d66091573872b8451686d5e61a098145835b2b4b
Author: aagbsn <aagbsn at extc.org>
Date:   Sun Aug 25 20:12:37 2013 +0200

    Fix some issues with ooni.deck
    
    1. Do not require a bouncer to use a deck
    2. If a bouncer is used, also fetch collectors for tests that
       do not list helpers or already have helpers specified in the deck.
---
 ooni/deck.py    |   25 ++++++++++++++-----------
 ooni/oonicli.py |    6 +++++-
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/ooni/deck.py b/ooni/deck.py
index 81b2afa..a8aee39 100644
--- a/ooni/deck.py
+++ b/ooni/deck.py
@@ -14,8 +14,8 @@ import re
 import yaml
 
 class Deck(object):
-    def __init__(self, bouncer, deckFile=None):
-        self.bouncer = bouncer
+    def __init__(self, deckFile=None):
+        self.bouncer = None
         self.netTestLoaders = []
         self.inputs = []
         self.testHelpers = {}
@@ -40,27 +40,30 @@ class Deck(object):
     @defer.inlineCallbacks
     def setup(self):
         """ fetch and verify inputs for all NetTests in the deck """
-        for net_test_loader in self.netTestLoaders:
-            yield self.fetchAndVerifyNetTestInput(net_test_loader)
-            yield self.lookupTestHelper(net_test_loader)
-            yield self.lookupTestCollector(net_test_loader)
+        if self.bouncer:
+            for net_test_loader in self.netTestLoaders:
+                yield self.fetchAndVerifyNetTestInput(net_test_loader)
+                yield self.lookupTestHelper(net_test_loader)
+                yield self.lookupTestCollector(net_test_loader)
 
     @defer.inlineCallbacks
     def lookupTestHelper(self, net_test_loader):
         oonibclient = OONIBClient(self.bouncer)
         for th in net_test_loader.requiredTestHelpers:
             # {'name':'', 'option':'', 'test_class':''}
-            helper = yield oonibclient.lookupTestHelper(th['name'])
-            th['test_class'].localOptions[th['option']] = helper['test-helper']
+            response = yield oonibclient.lookupTestHelper(th['name'])
+            th['test_class'].localOptions[th['option']] = response['test-helper']
             #XXX: collector is only set once!
-            net_test_loader.collector = helper['collector']
-
+            if 'collector' in response.keys():
+                net_test_loader.collector = response['collector'].encode('utf-8')
 
     @defer.inlineCallbacks
     def lookupTestCollector(self, net_test_loader):
         oonibclient = OONIBClient(self.bouncer)
         if net_test_loader.collector is None:
-            net_test_loader.collector = oonibclient.lookupTestCollector(th['test_class'].testName)
+            response = yield oonibclient.lookupTestCollector(net_test_loader.testName)
+            if 'collector' in response.keys():
+                net_test_loader.collector = response['collector'].encode('utf-8')
 
     @defer.inlineCallbacks
     def fetchAndVerifyNetTestInput(self, net_test_loader):
diff --git a/ooni/oonicli.py b/ooni/oonicli.py
index cf7d34d..fb333c7 100644
--- a/ooni/oonicli.py
+++ b/ooni/oonicli.py
@@ -127,10 +127,14 @@ def runWithDirector():
     director = Director()
     d = director.start()
 
-    deck = Deck(global_options['bouncer'])
+    #XXX: This should mean no bouncer either!
     if global_options['no-collector']:
         log.msg("Not reporting using a collector")
         collector = global_options['collector'] = None
+        global_options['bouncer'] = None
+
+    deck = Deck()
+    deck.bouncer = global_options['bouncer']
 
     try:
         if global_options['testdeck']:





More information about the tor-commits mailing list