
commit cf72e20df6fb9271f415984c65c7026f26f56325 Author: Arturo Filastò <art@fuffa.org> Date: Thu Nov 8 16:08:57 2012 +0100 Refactor reporting system * Fix import error in http host test --- nettests/core/http_host.py | 1 + nettests/simpletest.py | 2 +- ooni/nettest.py | 4 +++- ooni/reporter.py | 31 ++++++++++++------------------- ooni/runner.py | 11 ++++++++--- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/nettests/core/http_host.py b/nettests/core/http_host.py index 137d3b8..e09fc84 100644 --- a/nettests/core/http_host.py +++ b/nettests/core/http_host.py @@ -9,6 +9,7 @@ # :authors: Arturo Filastò # :licence: see LICENSE +from twisted.python import usage from ooni.templates import httpt class UsageOptions(usage.Options): diff --git a/nettests/simpletest.py b/nettests/simpletest.py index a83b8ce..11bd485 100644 --- a/nettests/simpletest.py +++ b/nettests/simpletest.py @@ -1,6 +1,6 @@ from ooni import nettest class SimpleTest(nettest.NetTestCase): - inputs = range(1,100) + inputs = range(1,20) optParameters = [['asset', 'a', None, 'Asset file'], ['controlserver', 'c', 'google.com', 'Specify the control server'], ['resume', 'r', 0, 'Resume at this index'], diff --git a/ooni/nettest.py b/ooni/nettest.py index a8d3560..83c5727 100644 --- a/ooni/nettest.py +++ b/ooni/nettest.py @@ -47,10 +47,12 @@ class InputTestSuite(pyunit.TestSuite): "running is not a nettest") log.debug(e) - log.debug("Running test") + log.debug("Running test with name %s" % str(test)) # XXX we may want in a future to put all of these tests inside of a # thread pool and run them all in parallel test(result) + # Here we need to set the test name to be that of the test case we are running + result._tests[self._idx]['test'] = str(test) log.debug("Ran.") self._idx += 1 diff --git a/ooni/reporter.py b/ooni/reporter.py index 6fab5f9..c9654e8 100644 --- a/ooni/reporter.py +++ b/ooni/reporter.py @@ -156,10 +156,10 @@ class OReporter(pyunit.TestResult): self._write(format_string, *args) self._write('\n') - def writeYamlLine(self, line): - to_write = safe_dump([line]) - self._write(to_write) - + def writeReportEntry(self, entry): + self._write('---\n') + self._write(safe_dump(entry)) + self._write('...\n') class ReporterFactory(OReporter): """ @@ -224,8 +224,7 @@ class ReporterFactory(OReporter): 'test_version': options['version'], } - self.writeYamlLine(test_details) - self._writeln('') + self.writeReportEntry(test_details) def create(self): r = OONIReporter(self._stream, self.tbformat, self.realtime, @@ -265,7 +264,7 @@ class OONIReporter(OReporter): if not self._startTime: self._startTime = self._getTime() - log.debug("Starting test %s" % idx) + log.debug("startTest on %s" % idx) test.report = {} self._tests[idx] = {} @@ -277,17 +276,15 @@ class OONIReporter(OReporter): test_input = test.input self._tests[idx]['input'] = test_input - self._tests[idx]['name'] = test.name log.debug("Now starting %s" % self._tests[idx]) - def stopTest(self, test): log.debug("Stopping test") super(OONIReporter, self).stopTest(test) idx = self.getTestIndex(test) - self._tests[idx]['last_time'] = self._getTime() - \ + self._tests[idx]['runtime'] = self._getTime() - \ self._tests[idx]['test_started'] # XXX I put a dict() here so that the object is re-instantiated and I @@ -313,15 +310,11 @@ class OONIReporter(OReporter): and L{_separator} are all implemented. """ log.debug("Test run concluded") - if self._startTime is not None: - self.report['start_time'] = self._startTime - self.report['run_time'] = time.time() - self._startTime - self.report['tests_run'] = self.testsRun - self.report['tests'] = self._tests - self.writeReport() - - def writeReport(self): - self.writeYamlLine(self.report) + self.writeTestsReport(self._tests) + + def writeTestsReport(self, tests): + for test in tests.values(): + self.writeReportEntry(test) def addSuccess(self, test): OReporter.addSuccess(self, test) diff --git a/ooni/runner.py b/ooni/runner.py index b4d9560..6ed89ab 100644 --- a/ooni/runner.py +++ b/ooni/runner.py @@ -170,12 +170,17 @@ class ORunner(object): log.msg("Could not find inputs!") log.msg("options[0] = %s" % first) self.inputs = [None] + if cmd_line_options['reportfile']: + report_filename = cmd_line_options['reportfile'] + else: + report_filename = 'report_'+date.timestamp()+'.yamloo' + if os.path.exists(report_filename): + os.rename(report_filename, report_filename+'.1') try: - reportFile = open(cmd_line_options['reportfile'], 'a+') + reportFile = open(report_filename, 'w+') except TypeError: - filename = 'report_'+date.timestamp()+'.yaml' - reportFile = open(filename, 'a+') + reportFile = open(filename_filename, 'w+') self.reporterFactory = ReporterFactory(reportFile, testSuite=self.baseSuite(self.cases))
participants (1)
-
art@torproject.org