[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [ooni-probe/master] Simplify the bouncer API
commit 25d94151864bea2406469103491ec77b2279fcea
Author: aagbsn <aagbsn@xxxxxxxx>
Date: Sun Aug 25 19:14:17 2013 +0200
Simplify the bouncer API
Simplified bouncer API requires one helper lookup per NetTest.
---
ooni/deck.py | 52 ++++++++++++++++++++++-----------------------------
ooni/oonibclient.py | 19 +++++++++++++++----
2 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/ooni/deck.py b/ooni/deck.py
index 1ad8377..81b2afa 100644
--- a/ooni/deck.py
+++ b/ooni/deck.py
@@ -19,8 +19,6 @@ class Deck(object):
self.netTestLoaders = []
self.inputs = []
self.testHelpers = {}
- self.collector = None
-
if deckFile: self.loadDeck(deckFile)
def loadDeck(self, deckFile):
@@ -28,6 +26,9 @@ class Deck(object):
for test in test_deck:
net_test_loader = NetTestLoader(test['options']['subargs'],
test_file=test['options']['test_file'])
+ #XXX: If the deck specifies the collector, we use the specified collector
+ # And it should also specify the test helper address to use
+ # net_test_loader.collector = test['options']['collector']
net_test_loader.checkOptions()
self.netTestLoaders.append(net_test_loader)
@@ -36,18 +37,30 @@ class Deck(object):
net_test_loader.checkOptions()
self.netTestLoaders.append(net_test_loader)
- def getRequiredTestHelpers(self):
- for net_test_loader in self.netTestLoaders:
- for test_helper in net_test_loader.requiredTestHelpers:
- self.testHelpers[test_helper['name']] = None
-
@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)
- self.getRequiredTestHelpers()
- yield self.lookupTestHelpers()
+ 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']
+ #XXX: collector is only set once!
+ net_test_loader.collector = helper['collector']
+
+
+ @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)
@defer.inlineCallbacks
def fetchAndVerifyNetTestInput(self, net_test_loader):
@@ -69,24 +82,3 @@ class Deck(object):
raise e.UnableToLoadDeckInput, cached_path
i['test_class'].localOptions[i['key']] = input_file.cached_file
-
- def setNettestOptions(self):
- for net_test_loader in self.netTestLoaders:
- for th in net_test_loader.requiredTestHelpers:
- test_helper_address = self.testHelpers[th['name']]
- th['test_class'].localOptions[th['option']] = test_helper_address
- net_test_loader.collector = self.collector
- log.debug("Using %s: %s" % (test_helper_address, self.collector))
-
- @defer.inlineCallbacks
- def lookupTestHelpers(self):
- log.msg("Looking up test helpers: %s" % self.testHelpers.keys())
-
- required_test_helpers = self.testHelpers.keys()
- if required_test_helpers:
- oonibclient = OONIBClient(self.bouncer)
- test_helpers = yield oonibclient.lookupTestHelpers(required_test_helpers)
- self.collector = test_helpers['collector']
- for name in self.testHelpers.keys():
- self.testHelpers[name] = test_helpers[name]
- self.setNettestOptions()
diff --git a/ooni/oonibclient.py b/ooni/oonibclient.py
index 9bdce95..227c775 100644
--- a/ooni/oonibclient.py
+++ b/ooni/oonibclient.py
@@ -187,15 +187,26 @@ class OONIBClient(object):
return self.queryBackend('GET', '/policy/nettest')
@defer.inlineCallbacks
- def lookupTestHelpers(self, test_helper_names):
+ def lookupTestCollector(self, test_name):
try:
- test_helpers = yield self.queryBackend('POST', '/bouncer',
- query={'test-helpers': test_helper_names})
+ test_collector = yield self.queryBackend('POST', '/bouncer',
+ query={'test-collector': test_name})
+ except Exception:
+ raise e.CouldNotFindTestCollector
+
+ defer.returnValue(test_collector)
+
+ @defer.inlineCallbacks
+ def lookupTestHelper(self, test_helper_name):
+ try:
+
+ test_helper = yield self.queryBackend('POST', '/bouncer',
+ query={'test-helper': test_helper_name})
except Exception:
raise e.CouldNotFindTestHelper
if not test_helpers:
raise e.CouldNotFindTestHelper
- defer.returnValue(test_helpers)
+ defer.returnValue(test_helper)
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits