[tor-commits] [ooni-probe/master] Refactor captive portal test to run tests in threads

art at torproject.org art at torproject.org
Mon Nov 12 15:31:50 UTC 2012


commit cfab60ab130742152e5dfb96450e4d625a4da1a8
Author: Arturo Filastò <art at fuffa.org>
Date:   Mon Nov 12 16:31:25 2012 +0100

    Refactor captive portal test to run tests in threads
---
 nettests/core/captiveportal.py |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/nettests/core/captiveportal.py b/nettests/core/captiveportal.py
index 66779bb..be8da27 100644
--- a/nettests/core/captiveportal.py
+++ b/nettests/core/captiveportal.py
@@ -37,6 +37,9 @@ import string
 import urllib2
 from urlparse import urlparse
 
+from twisted.python import usage
+from twisted.internet import defer, threads
+
 from ooni import nettest
 from ooni.templates import httpt
 from ooni.utils import net
@@ -52,7 +55,8 @@ except ImportError:
 __plugoo__ = "captiveportal"
 __desc__ = "Captive portal detection test"
 
-optParameters = [['asset', 'a', None, 'Asset file'],
+class UsageOptions(usage.Options):
+    optParameters = [['asset', 'a', None, 'Asset file'],
                  ['experiment-url', 'e', 'http://google.com/', 'Experiment URL'],
                  ['user-agent', 'u', random.choice(net.userAgents),
                   'User agent for HTTP requests']
@@ -66,8 +70,9 @@ class CaptivePortal(nettest.NetTestCase):
 
     name = "captivep"
     description = "Captive Portal Test"
-    version = '0.1'
-    author = "Isis LoveCruft <isis at torproject.org>"
+    version = '0.2'
+    author = "Isis Lovecruft"
+    usageOptions = UsageOptions
 
     def http_fetch(self, url, headers={}):
         """
@@ -424,8 +429,6 @@ class CaptivePortal(nettest.NetTestCase):
         Google Chrome resolves three 10-byte random hostnames.
         """
         subtest = "Google Chrome DNS-based"
-
-        log.msg("")
         log.msg("Running the Google Chrome DNS-based captive portal test...")
 
         gmatch, google_dns_result = self.compare_random_hostnames(3, 10)
@@ -600,6 +603,7 @@ class CaptivePortal(nettest.NetTestCase):
 
             self.report['result'] = False
 
+    @defer.inlineCallbacks
     def test_captive_portal(self):
         """
         Runs the CaptivePortal(Test).
@@ -625,15 +629,15 @@ class CaptivePortal(nettest.NetTestCase):
 
         log.msg("")
         log.msg("Running vendor tests...")
-        self.report['vendor_tests'] = self.run_vendor_tests()
+        self.report['vendor_tests'] = yield threads.deferToThread(self.run_vendor_tests)
 
         log.msg("")
         log.msg("Running vendor DNS-based tests...")
-        self.report['vendor_dns_tests'] = self.run_vendor_dns_tests()
+        self.report['vendor_dns_tests'] = yield threads.deferToThread(self.run_vendor_dns_tests)
 
         log.msg("")
         log.msg("Checking that DNS requests are not being tampered...")
-        self.report['check0x20'] = self.check_0x20_to_auth_ns('ooni.nu')
+        self.report['check0x20'] = yield threads.deferToThread(self.check_0x20_to_auth_ns, 'ooni.nu')
 
         log.msg("")
         log.msg("Captive portal test finished!")



More information about the tor-commits mailing list