[tor-commits] [ooni-probe/master] Revert "Refactor the code of the post processor to work properly."

art at torproject.org art at torproject.org
Sat Nov 23 11:11:41 UTC 2013


commit 458ee9fc3b7efa542a9c343b078c65c5698f7021
Author: aagbsn <aagbsn at extc.org>
Date:   Fri Nov 22 12:49:14 2013 +0000

    Revert "Refactor the code of the post processor to work properly."
    
    This reverts commit e89163c608f27cd34cd871b6bcb814a24b65c762.
    
    Reason: this commit breaks writing reports.
---
 ooni/nettest.py |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/ooni/nettest.py b/ooni/nettest.py
index 9304f2b..f008654 100644
--- a/ooni/nettest.py
+++ b/ooni/nettest.py
@@ -563,16 +563,25 @@ class NetTest(object):
                     measurement = self.makeMeasurement(klass, method, input)
                     measurements.append(measurement.done)
                     self.state.taskCreated()
-                    measurement.done.addCallback(klass.postProcessor)
-                    if self.report:
-                        @measurement.done.addCallback
-                        def cb(*a):
-                            self.report.write(measurement)
-                    measurement.done.addBoth(self.doneReport)
                     yield measurement
 
                 # When the measurement.done callbacks have all fired
                 # call the postProcessor before writing the report
+                if self.report:
+                    post = defer.DeferredList(measurements)
+
+                    # Call the postProcessor, which must return a single report
+                    # or a deferred
+                    post.addCallback(klass.postProcessor)
+                    def noPostProcessor(failure, report):
+                        failure.trap(NoPostProcessor)
+                        return report
+                    post.addErrback(noPostProcessor, klass.report)
+                    post.addCallback(self.report.write)
+
+                if self.report and self.director:
+                    #ghetto hax to keep NetTestState counts are accurate
+                    [post.addBoth(self.doneReport) for _ in measurements]
 
         self.state.allTasksScheduled()
 





More information about the tor-commits mailing list