[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [ooni-probe/master] Refactor runner and ooni
commit 07addc1b4e1c60ede34b166a5d1208f183f47530
Author: Arturo Filastò <arturo@xxxxxxxxxxx>
Date: Wed Oct 24 15:32:31 2012 +0000
Refactor runner and ooni
* Remove unused imports
* Fix import indentation (please do not align from modules)
---
ooni/__init__.py | 15 ++++++-
ooni/runner.py | 121 +++++++++++++++++++++++++++++++-----------------------
2 files changed, 84 insertions(+), 52 deletions(-)
diff --git a/ooni/__init__.py b/ooni/__init__.py
index a03c856..e730eb5 100644
--- a/ooni/__init__.py
+++ b/ooni/__init__.py
@@ -1 +1,14 @@
-__all__ = ['plugoo', 'utils', 'config', 'logo', 'lib', 'log']
+from . import config
+from . import input
+from . import inputunit
+from . import kit
+from . import lib
+from . import nettest
+from . import oonicli
+from . import reporter
+from . import runner
+from . import template
+from . import utils
+__all__ = ['config', 'input', 'inputunit', 'kit',
+ 'lib', 'nettest', 'oonicli', 'reporter',
+ 'runner', 'templates', 'utils']
diff --git a/ooni/runner.py b/ooni/runner.py
index f352dfb..dd5f8a9 100644
--- a/ooni/runner.py
+++ b/ooni/runner.py
@@ -10,40 +10,21 @@
# :version: 0.1.0-pre-alpha
#
-
-import os
-import sys
-import types
-import time
import inspect
-import yaml
-
-from pprint import pprint
-from twisted.internet import defer, reactor
-from twisted.python import reflect, failure, usage
-from twisted.python import log as tlog
+from twisted.python import reflect, usage
-from twisted.trial import unittest
-from twisted.trial.runner import TrialRunner, TestLoader
-from twisted.trial.runner import isPackage, isTestCase, ErrorHolder
-from twisted.trial.runner import filenameToModule, _importFromFile
+from twisted.trial.runner import isTestCase
+from twisted.trial.runner import filenameToModule
-from ooni import nettest
-from ooni.inputunit import InputUnitFactory
-from ooni.nettest import InputTestSuite
-from ooni.plugoo import tests as oonitests
-from ooni.reporter import ReporterFactory
-from ooni.utils import log, geodata, date
+from ooni.inputunit import InputUnitFactory
+from ooni.nettest import InputTestSuite
+from ooni.plugoo import tests as oonitests
+from ooni.reporter import ReporterFactory
+from ooni.utils import log, date
from ooni.utils.legacy import LegacyOONITest
from ooni.utils.legacy import start_legacy_test, adapt_legacy_test
-def isTestCase(thing):
- try:
- return issubclass(thing, unittest.TestCase)
- except TypeError:
- return False
-
def isLegacyTest(obj):
"""
Returns True if the test in question is written using the OONITest legacy
@@ -55,6 +36,45 @@ def isLegacyTest(obj):
except TypeError:
return False
+def processTest(obj, config):
+ """
+ Process the parameters and :class:`twisted.python.usage.Options` of a
+ :class:`ooni.nettest.Nettest`.
+
+ :param obj:
+ An uninstantiated old test, which should be a subclass of
+ :class:`ooni.plugoo.tests.OONITest`.
+ :param config:
+ A configured and instantiated :class:`twisted.python.usage.Options`
+ class.
+ """
+
+ input_file = obj.inputFile
+
+ if obj.optParameters or input_file:
+ if not obj.optParameters:
+ obj.optParameters = []
+
+ if input_file:
+ obj.optParameters.append(input_file)
+
+ class Options(usage.Options):
+ optParameters = obj.optParameters
+
+ options = Options()
+ options.parseOptions(config['subArgs'])
+ obj.localOptions = options
+
+ if input_file:
+ obj.inputFile = options[input_file[0]]
+ try:
+ tmp_obj = obj()
+ tmp_obj.getOptions()
+ except usage.UsageError:
+ options.opt_help()
+
+ return obj
+
def findTestClassesFromConfig(config):
"""
Takes as input the command line config parameters and returns the test
@@ -82,14 +102,14 @@ def findTestClassesFromConfig(config):
classes.append(adapt_legacy_test(val, config))
return classes
-def makeTestCases(klass, tests, methodPrefix):
+def makeTestCases(klass, tests, method_prefix):
"""
- Takes a class some tests and returns the test cases. methodPrefix is how
+ Takes a class some tests and returns the test cases. method_prefix is how
the test case functions should be prefixed with.
"""
cases = []
for test in tests:
- cases.append(klass(methodPrefix+test))
+ cases.append(klass(method_prefix+test))
return cases
def processTestOptions(cls, config):
@@ -144,10 +164,10 @@ def loadTestsAndOptions(classes, config):
Takes a list of test classes and returns their testcases and options.
Legacy tests will be adapted.
"""
- methodPrefix = 'test'
- suiteFactory = InputTestSuite
+
+ method_prefix = 'test'
options = []
- testCases = []
+ test_cases = []
names = []
_old_class_type = LegacyOONITest
@@ -155,8 +175,12 @@ def loadTestsAndOptions(classes, config):
for cls in classes:
if isinstance(cls, _old_class_type):
try:
- cases = start_legacy_test(cls)
- testCases.append(cases)
+ cases = start_legacy_test(klass)
+ if cases:
+ log.debug("Processing cases")
+ log.debug(str(cases))
+ return [], []
+ test_cases.append(cases)
except Exception, e:
log.err(e)
else:
@@ -170,10 +194,10 @@ def loadTestsAndOptions(classes, config):
print cases
return [], []
else:
- tests = reflect.prefixedMethodNames(cls, methodPrefix)
+ tests = reflect.prefixedMethodNames(klass, method_prefix)
if tests:
- cases = makeTestCases(cls, tests, methodPrefix)
- testCases.append(cases)
+ cases = makeTestCases(klass, tests, method_prefix)
+ test_cases.append(cases)
try:
#c = cls()
#cls, opts = processTestOptions(cls, config)
@@ -191,8 +215,7 @@ def loadTestsAndOptions(classes, config):
opts.update(inputs)
options.append(opts)
- log.debug("runner.loadTestsAndOptions: OPTIONS: %s" % options)
- return testCases, options
+ return test_cases, options
class ORunner(object):
"""
@@ -201,7 +224,7 @@ class ORunner(object):
them in input units. I also create all the report instances required to run
the tests.
"""
- def __init__(self, cases, options=None, config=None, *arg, **kw):
+ def __init__(self, cases, options=None, config=None):
self.baseSuite = InputTestSuite
self.cases = cases
self.options = options
@@ -232,21 +255,17 @@ class ORunner(object):
reportFile, testSuite=self.baseSuite(self.cases)
)
- def runWithInputUnit(self, inputUnit):
+ def runWithInputUnit(self, input_unit):
idx = 0
result = self.reporterFactory.create()
- log.debug("Running test with input unit %s" % inputUnit)
- for inputs in inputUnit:
+ log.debug("Running test with input unit %s" % input_unit)
+ for inputs in input_unit:
result.reporterFactory = self.reporterFactory
log.debug("Running with %s" % inputs)
suite = self.baseSuite(self.cases)
suite.input = inputs
- try:
- suite(result, idx)
- except Exception, e:
- log.err("Error in running test!")
- log.err(e)
+ suite(result, idx)
# XXX refactor all of this index bullshit to avoid having to pass
# this index around. Probably what I want to do is go and make
@@ -262,5 +281,5 @@ class ORunner(object):
def run(self):
self.reporterFactory.options = self.options
- for inputUnit in InputUnitFactory(self.inputs):
- self.runWithInputUnit(inputUnit)
+ for input_unit in InputUnitFactory(self.inputs):
+ self.runWithInputUnit(input_unit)
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits