[tor-commits] [ooni-probe/master] Properly accept assets when running tests

art at torproject.org art at torproject.org
Thu May 31 03:01:42 UTC 2012


commit 6306a4e3b5670cd68fd450cd9ed39f88c2b528ac
Author: Arturo Filastò <hellais at torproject.org>
Date:   Wed May 2 22:14:37 2012 +0200

    Properly accept assets when running tests
---
 oonicli.py      |   20 ++++++++++----------
 plugins/skel.py |    2 +-
 plugoo/tests.py |    6 ++++--
 plugoo/work.py  |   42 +++++++++++++++++++++++-------------------
 4 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/oonicli.py b/oonicli.py
index 0a9c1cc..c2d01d2 100755
--- a/oonicli.py
+++ b/oonicli.py
@@ -9,7 +9,7 @@
 #
 
 import sys
-from plugoo import tests, work
+from plugoo import tests, work, assets
 
 from twisted.python import usage
 from twisted.plugin import getPlugins
@@ -62,20 +62,20 @@ class StupidAsset(object):
         self.idx += 1
         return self.idx
 
+
 def runTest(test, options):
-    pprint(test)
-    wgen = work.WorkGenerator(StupidAsset, plugoo[test].__class__,
-            dict(options),
-            start=options['resume'])
+    asset = None
+    if options['asset']:
+        print options['asset']
+        asset = assets.Asset(options['asset'])
+        print asset
+
+    wgen = work.WorkGenerator(asset, plugoo[test].__class__,
+            dict(options), start=options['resume'])
 
     worker = work.Worker()
     for x in wgen:
-        print "------"
-        print "Work unit"
-        print "------"
-        print x.serialize()
         worker.push(x)
-        print "------"
 
     reactor.run()
 
diff --git a/plugins/skel.py b/plugins/skel.py
index 41420b1..0427239 100644
--- a/plugins/skel.py
+++ b/plugins/skel.py
@@ -4,7 +4,7 @@ from twisted.plugin import IPlugin
 from plugoo.tests import ITest, TwistedTest
 
 class SkelArgs(usage.Options):
-    optParameters = [['assets', 'a', None, 'Asset file'],
+    optParameters = [['asset', 'a', None, 'Asset file'],
                      ['resume', 'r', 0, 'Resume at this index']]
 
 class SkelTest(TwistedTest):
diff --git a/plugoo/tests.py b/plugoo/tests.py
index 41363ee..e74586c 100644
--- a/plugoo/tests.py
+++ b/plugoo/tests.py
@@ -171,10 +171,11 @@ class TwistedTest(object):
         #self.ooninet = ooninet
 
     def __repr__(self):
-        return "<TwistedTest %s %s %s>" % (self.arguments, self.asset, self.node)
+        return "<TwistedTest %s %s>" % (self.arguments, self.asset)
 
     def finished(self, result):
         #self.ooninet.report(result)
+        print "FINIHSED"
         self.end_time = datetime.now()
         result['start_time'] = self.start_time
         result['end_time'] = self.end_time
@@ -182,6 +183,7 @@ class TwistedTest(object):
         return self.d.callback(result)
 
     def startTest(self):
+        print "Starting test"
         self.d = defer.Deferred()
         result = {}
         reactor.callLater(2.0, self.finished, result)
@@ -189,7 +191,7 @@ class TwistedTest(object):
 
 class TwistedTestFactory(object):
 
-    test = StupidTest
+    test = None
 
     def __init__(self, assets, node,
                  idx=0):
diff --git a/plugoo/work.py b/plugoo/work.py
index 809e9bd..7be4758 100644
--- a/plugoo/work.py
+++ b/plugoo/work.py
@@ -31,13 +31,10 @@ class Worker(object):
         self._queued = []
 
     def _run(self, r):
-        print "RUNNING"
         self._running -= 1
         if self._running < self.maxconcurrent and self._queued:
             workunit, d = self._queued.pop(0)
             for work in workunit:
-                print "Going over workunits bis"
-                print work
                 self._running += 1
                 actuald = work.startTest().addBoth(self._run)
         if isinstance(r, failure.Failure):
@@ -51,11 +48,8 @@ class Worker(object):
         return r
 
     def push(self, workunit):
-        print "PUSHING"
         if self._running < self.maxconcurrent:
             for work in workunit:
-                print "Going over work units"
-                print dir(work)
                 self._running += 1
                 work.startTest().addBoth(self._run)
             return
@@ -83,11 +77,13 @@ class WorkUnit(object):
     test = None
     arguments = None
 
-    def __init__(self, node, asset, test, idx, arguments=None):
+    def __init__(self, asset, test, idx, arguments=None):
         self.asset = asset
-        self.assetGenerator = iter(asset)
+        if not asset:
+            self.assetGenerator = iter([1])
+        else:
+            self.assetGenerator = iter(asset)
         self.Test = test
-        self.node = node
         self.arguments = arguments
         self.idx = idx
 
@@ -109,14 +105,9 @@ class WorkUnit(object):
         """
         try:
             asset = self.assetGenerator.next()
-            print "Next shit.."
-            print asset
             ret = self.Test(asset, self.arguments)
-            print type(ret)
-            print repr(ret)
             return ret
         except StopIteration:
-            print "Stopped iteration!"
             raise StopIteration
 
 
@@ -127,14 +118,14 @@ class WorkGenerator(object):
     This shall be run on the machine running OONI-cli. The returned WorkUnits
     can either be run locally or on a remote OONI Node or Network Node.
     """
-    node = LocalNode
     size = 10
 
     def __init__(self, asset, test, arguments=None, start=None):
-        self.assetGenerator = asset()
+        self.assetGenerator = asset
         self.Test = test
         self.arguments = arguments
         self.idx = 0
+        self.end = False
         if start:
             self.skip(start)
 
@@ -148,11 +139,24 @@ class WorkGenerator(object):
             self.idx += 1
 
     def next(self):
+        if self.end:
+            raise StopIteration
+
+        if not self.assetGenerator:
+            self.end = True
+            return WorkUnit(None, self.Test, self.idx, self.arguments)
+
         # Plank asset
         p_asset = []
         for i in xrange(0, self.size):
-            p_asset.append(self.assetGenerator.next())
-        self.idx += 1
-        return WorkUnit(self.node, p_asset, self.Test, self.idx, self.arguments)
+            try:
+                asset = self.assetGenerator.next()
+                p_asset.append(asset)
+                print asset
+            except StopIteration:
+                self.end = True
+                break
 
+        self.idx += 1
+        return WorkUnit(p_asset, self.Test, self.idx, self.arguments)
 





More information about the tor-commits mailing list