[tor-commits] [ooni-probe/master] Implement reporter for OONIB

art at torproject.org art at torproject.org
Wed Oct 31 14:07:14 UTC 2012


commit 09b5124f23682f052c985b997e8b7c67c897e64c
Author: Arturo Filastò <arturo at filasto.net>
Date:   Wed Oct 31 14:06:19 2012 +0000

    Implement reporter for OONIB
    * Fix bad bug in reporter for OONIC
---
 ooni/reporter.py |   56 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/ooni/reporter.py b/ooni/reporter.py
index 4d09729..14327ef 100644
--- a/ooni/reporter.py
+++ b/ooni/reporter.py
@@ -3,6 +3,7 @@ import logging
 import sys
 import time
 import yaml
+import json
 import traceback
 
 from yaml.representer import *
@@ -14,6 +15,8 @@ from datetime import datetime
 from twisted.python.util import untilConcludes
 from twisted.trial import reporter
 from twisted.internet import defer
+
+from ooni.templates.httpt import BodyReceiver, StringProducer
 from ooni.utils import date, log, geodata
 
 try:
@@ -76,6 +79,47 @@ def safe_dump(data, stream=None, **kw):
     """
     return yaml.dump_all([data], stream, Dumper=OSafeDumper, **kw)
 
+class OONIBReporter(object):
+    def __init__(self, backend_url):
+        from twisted.web.client import Agent
+        from twisted.internet import reactor
+
+        self.agent = Agent(reactor)
+        self.backend_url = backend_url
+
+    def _newReportCreated(self, data):
+        #log.debug("Got this as result: %s" % data)
+        print "Got this as result: %s" % data
+
+        return data
+
+    def _processResponseBody(self, response, body_cb):
+        #log.debug("Got response %s" % response)
+        print "Got response %s" % response
+
+        done = defer.Deferred()
+        response.deliverBody(BodyReceiver(done))
+        done.addCallback(body_cb)
+        return done
+
+    def newReport(self, test_name, test_version):
+        url = self.backend_url + '/new'
+        print "Creating report via url %s" % url
+
+        software_version = '0.0.1'
+
+        request = {'software_name': 'ooni-probe',
+                'software_version': software_version,
+                'test_name': test_name, 'test_version': test_version,
+                'progress': 0}
+
+        #log.debug("Creating report via url %s" % url)
+        bodyProducer = StringProducer(json.dumps(request))
+        d = self.agent.request("POST", url, bodyProducer=bodyProducer)
+        d.addCallback(self._processResponseBody, self._newReportCreated)
+        return d
+
+
 class OReporter(pyunit.TestResult):
     """
     This is an extension of the unittest TestResult. It adds support for
@@ -269,11 +313,11 @@ class OONIReporter(OReporter):
         self.writeYamlLine(self.report)
 
     def addSuccess(self, test):
-        OONIReporter.addSuccess(self, test)
+        OReporter.addSuccess(self, test)
         #self.report['result'] = {'value': 'success'}
 
     def addError(self, test, exception):
-        OONIReporter.addError(self, test, exception)
+        OReporter.addError(self, test, exception)
         exc_type, exc_value, exc_traceback = exception
         log.err(exc_type)
         log.err(str(exc_value))
@@ -282,19 +326,19 @@ class OONIReporter(OReporter):
             log.err(line)
 
     def addFailure(self, *args):
-        OONIReporter.addFailure(self, *args)
+        OReporter.addFailure(self, *args)
         log.warn(args)
 
     def addSkip(self, *args):
-        OONIReporter.addSkip(self, *args)
+        OReporter.addSkip(self, *args)
         #self.report['result'] = {'value': 'skip', 'args': args}
 
     def addExpectedFailure(self, *args):
-        OONIReporter.addExpectedFailure(self, *args)
+        OReporter.addExpectedFailure(self, *args)
         #self.report['result'] = {'value': 'expectedFailure', 'args': args}
 
     def addUnexpectedSuccess(self, *args):
-        OONIReporter.addUnexpectedSuccess(self, *args)
+        OReporter.addUnexpectedSuccess(self, *args)
         #self.report['result'] = {'args': args, 'value': 'unexpectedSuccess'}
 
 



More information about the tor-commits mailing list