[tor-commits] [ooni-probe/master] Start adding support for not reporting to file on disk

art at torproject.org art at torproject.org
Fri Apr 29 09:42:24 UTC 2016


commit 687a6ffdf9e2fabfeb8711cbbd085d0378fb7a9e
Author: Arturo Filastò <art at fuffa.org>
Date:   Fri Dec 4 17:44:04 2015 +0100

    Start adding support for not reporting to file on disk
---
 ooni/director.py |  5 +++--
 ooni/nettest.py  |  1 +
 ooni/oonicli.py  | 11 ++++++++---
 ooni/reporter.py | 38 ++++++++++++++++++++++++--------------
 4 files changed, 36 insertions(+), 19 deletions(-)

diff --git a/ooni/director.py b/ooni/director.py
index f633048..4aa5fba 100644
--- a/ooni/director.py
+++ b/ooni/director.py
@@ -233,7 +233,7 @@ class Director(object):
 
     @defer.inlineCallbacks
     def startNetTest(self, net_test_loader, report_filename,
-                     collector_address=None):
+                     collector_address=None, no_yamloo=False):
         """
         Create the Report for the NetTest and start the report NetTest.
 
@@ -248,7 +248,8 @@ class Director(object):
             self.startSniffing(net_test_loader.testDetails)
 
         report = Report(net_test_loader.testDetails, report_filename,
-                        self.reportEntryManager, collector_address)
+                        self.reportEntryManager, collector_address,
+                        no_yamloo)
 
         net_test = NetTest(net_test_loader, report)
         net_test.director = self
diff --git a/ooni/nettest.py b/ooni/nettest.py
index 848d958..5207b8a 100644
--- a/ooni/nettest.py
+++ b/ooni/nettest.py
@@ -131,6 +131,7 @@ def getNetTestInformation(net_test_file):
 class NetTestLoader(object):
     method_prefix = 'test'
     collector = None
+    yamloo = True
     requiresTor = False
     reportID = None
 
diff --git a/ooni/oonicli.py b/ooni/oonicli.py
index d75aa41..b9133c9 100644
--- a/ooni/oonicli.py
+++ b/ooni/oonicli.py
@@ -34,7 +34,8 @@ class Options(usage.Options):
 
     optFlags = [["help", "h"],
                 ["resume", "r"],
-                ["no-collector", "n"],
+                ["no-collector", "n", "disable writing to collector"],
+                ["no-yamloo", "N", "disable writing to YAML file"],
                 ["no-geoip", "g"],
                 ["list", "s"],
                 ["printdeck", "p"],
@@ -228,6 +229,9 @@ def setupCollector(global_options, net_test_loader):
 def createDeck(global_options, url=None):
     log.msg("Creating deck for: %s" % (url))
 
+    if global_options['no-yamloo']:
+        log.msg("Will not write to a yamloo report file")
+
     deck = Deck(no_collector=global_options['no-collector'])
     deck.bouncer = global_options['bouncer']
 
@@ -316,8 +320,9 @@ def runTestWithDirector(director, global_options, url=None,
             net_test_loader.annotations = global_options['annotations']
 
             director.startNetTest(net_test_loader,
-                                    global_options['reportfile'],
-                                    collector)
+                                  global_options['reportfile'],
+                                  collector,
+                                  global_options['no-yamloo'])
         return director.allTestsDone
 
     d.addCallback(setup_nettest)
diff --git a/ooni/reporter.py b/ooni/reporter.py
index a8272f5..db6f7c1 100644
--- a/ooni/reporter.py
+++ b/ooni/reporter.py
@@ -554,7 +554,8 @@ class OONIBReportLog(object):
 class Report(object):
 
     def __init__(self, test_details, report_filename,
-                 reportEntryManager, collector_address=None):
+                 reportEntryManager, collector_address=None,
+                 no_yamloo=False):
         """
         This is an abstraction layer on top of all the configured reporters.
 
@@ -574,14 +575,19 @@ class Report(object):
             collector:
                 The address of the oonib collector for this report.
 
+            no_yamloo:
+                If we should disable reporting to disk.
         """
         self.test_details = test_details
         self.collector_address = collector_address
 
         self.report_log = OONIBReportLog()
 
-        self.yaml_reporter = YAMLReporter(test_details, report_filename=report_filename)
-        self.report_filename = self.yaml_reporter.report_path
+        self.yaml_reporter = None
+        self.report_filename = None
+        if not no_yamloo:
+            self.yaml_reporter = YAMLReporter(test_details, report_filename=report_filename)
+            self.report_filename = self.yaml_reporter.report_path
 
         self.oonib_reporter = None
         if collector_address:
@@ -627,11 +633,13 @@ class Report(object):
         if self.oonib_reporter:
             deferreds.append(self.open_oonib_reporter())
         else:
-            deferreds.append(self.report_log.not_created(self.report_filename))
+            if self.yaml_reporter:
+                deferreds.append(self.report_log.not_created(self.report_filename))
 
-        yaml_report_created = \
-            defer.maybeDeferred(self.yaml_reporter.createReport)
-        yaml_report_created.addErrback(yaml_report_failed)
+        if self.yaml_reporter:
+            yaml_report_created = \
+                defer.maybeDeferred(self.yaml_reporter.createReport)
+            yaml_report_created.addErrback(yaml_report_failed)
 
         dl = defer.DeferredList(deferreds)
         dl.addCallback(all_reports_openned)
@@ -666,10 +674,11 @@ class Report(object):
             if not d.called:
                 d.callback(None)
 
-        write_yaml_report = ReportEntry(self.yaml_reporter, measurement)
-        self.reportEntryManager.schedule(write_yaml_report)
-        write_yaml_report.done.addErrback(yaml_report_failed)
-        deferreds.append(write_yaml_report.done)
+        if self.yaml_reporter:
+            write_yaml_report = ReportEntry(self.yaml_reporter, measurement)
+            self.reportEntryManager.schedule(write_yaml_report)
+            write_yaml_report.done.addErrback(yaml_report_failed)
+            deferreds.append(write_yaml_report.done)
 
         if self.oonib_reporter:
             write_oonib_report = ReportEntry(self.oonib_reporter, measurement)
@@ -707,9 +716,10 @@ class Report(object):
             if not d.called:
                 d.callback(None)
 
-        close_yaml = defer.maybeDeferred(self.yaml_reporter.finish)
-        close_yaml.addErrback(yaml_report_failed)
-        deferreds.append(close_yaml)
+        if self.yaml_reporter:
+            close_yaml = defer.maybeDeferred(self.yaml_reporter.finish)
+            close_yaml.addErrback(yaml_report_failed)
+            deferreds.append(close_yaml)
 
         if self.oonib_reporter:
             close_oonib = self.oonib_reporter.finish()





More information about the tor-commits mailing list