[tor-commits] [ooni-probe/master] Delete measurements module
isis at torproject.org
isis at torproject.org
Sun Mar 10 01:57:01 UTC 2013
commit ca24885eeea83c023e79eecedb139db21cbc1cd9
Author: Arturo Filastò <art at fuffa.org>
Date: Sat Jan 12 18:30:50 2013 +0100
Delete measurements module
---
ooni/measurements.py | 161 --------------------------------------------------
1 files changed, 0 insertions(+), 161 deletions(-)
diff --git a/ooni/measurements.py b/ooni/measurements.py
deleted file mode 100644
index 86d6f84..0000000
--- a/ooni/measurements.py
+++ /dev/null
@@ -1,161 +0,0 @@
-from .tasks import TaskWithTimeout
-from inspect import getmembers
-from ooni.nettest import NetTestCase
-from ooni.ratelimiting import StaticRateLimiter
-from twisted.python.reflect import prefixedMethodNames
-from twisted.trial.runner import filenameToModule
-from StringIO import StringIO
-from os.path import isfile
-
-class Measurement(TaskWithTimeout):
- def __init__(self, test_class, test_method, test_input, net_test):
- """
- test_class:
- is the class, subclass of NetTestCase, of the test to be run
-
- test_method:
- is a string representing the test method to be called to perform
- this measurement
-
- test_input:
- is the input to the test
- """
- self.test_instance = test_class()
- self.test_instance.input = test_input
- self.test_instance.report = {}
- self.test_instance._start_time = time.time()
- self.test_instance._setUp()
- self.test_instance.setUp()
- self.test = getattr(self.test_instance, test_method)
-
- def succeeded(self):
- self.net_test.measurementSuccess()
-
- def failed(self):
- self.net_test.measurementFailed()
-
- def timedOut(self):
- self.net_test.measurementTimeOut()
-
- def run(self):
- d = defer.maybeDeferred(self.test)
- d.addCallback(self.succeeded)
- d.addErrback(self.failed)
- return d
-
-class NetTest(object):
- director = None
- method_prefix = 'test'
-
- def __init__(self, net_test_file, inputs, options, report):
- """
- net_test_file:
- is a file object containing the test to be run.
-
- inputs:
- is a generator containing the inputs to the net test.
-
- options:
- is a dict containing the options to be passed to the net test.
- """
- self.test_cases = self.loadNetTest(net_test_file)
- self.inputs = inputs
- self.options = options
-
- def loadNetTest(self, net_test_object):
- """
- Creates all the necessary test_cases (a list of tuples containing the
- NetTestCase (test_class, test_method))
-
- example:
- [(test_classA, test_method1),
- (test_classA, test_method2),
- (test_classA, test_method3),
- (test_classA, test_method4),
- (test_classA, test_method5),
-
- (test_classB, test_method1),
- (test_classB, test_method2)]
-
- Note: the inputs must be valid for test_classA and test_classB.
-
- net_test_object:
- is a file like object that will be used to generate the test_cases.
- """
- try:
- if isfile(net_test_object):
- return self._loadNetTestFile(net_test_object)
- except TypeError:
- if isinstance(net_test_object, StringIO) or \
- isinstance(net_test_object, str):
- return self._loadNetTestString(net_test_object)
-
- def _loadNetTestString(self, net_test_string):
- """
- Load NetTest from a string
- """
- ns = {}
- test_cases = []
- exec net_test_string.read() in ns
- for item in ns.itervalues():
- test_cases.extend(self._get_test_methods(item))
- return test_cases
-
- def _loadNetTestFile(self, net_test_file):
- """
- Load NetTest from a file
- """
- test_cases = []
- module = filenameToModule(net_test_file)
- for __, item in getmembers(module):
- test_cases.extend(self._get_test_methods(item))
- return test_cases
-
- def _get_test_methods(self, item):
- """
- Look for test_ methods in subclasses of NetTestCase
- """
- test_cases = []
- try:
- assert issubclass(item, NetTestCase)
- methods = prefixedMethodNames(item, self.method_prefix)
- for method in methods:
- test_cases.append((item, self.method_prefix + method))
- except (TypeError, AssertionError):
- pass
- return test_cases
-
- def timedOut(self, measurement):
- """
- This gets called when a measurement has timed out. This may or may not
- trigger a retry inside of MeasurementsTracker.
- """
- self.director.measurementTimedOut(measurement)
-
- def failed(self, measurement, failure):
- """
- This gets called when a measurement has failed in the sense that all
- the retries have failed at successfully running the test.
- This means that it's a definitive failure and we will no longer make
- any attempts at re-running the measurement.
- """
- self.director.measurementFailed(measurement, failure)
-
- def succeeded(self, measurement):
- """
- This gets called when a measurement has failed.
- """
- self.report.write(measurement)
-
- def generateMeasurements(self):
- """
- This is a generator that yields measurements and sets their timeout
- value and their netTest attribute.
- """
- for test_input in self.inputs:
- for test_class, test_method in self.test_cases:
- measurement = Measurement(test_class, test_method, test_input)
- measurement.netTest = self
- measurement.timeout = self.rateLimiter.timeout
- yield measurement
-
More information about the tor-commits
mailing list