[tor-commits] [torflow/master] Better registering test results for HttpTest

mikeperry at torproject.org mikeperry at torproject.org
Wed Sep 14 01:45:07 UTC 2011


commit a8a11da002d9ff867f3441b8c0114a9d57b22a5c
Author: christian <christian at avtok.com>
Date:   Mon Aug 22 17:52:26 2011 -0400

    Better registering test results for HttpTest
---
 NetworkScanners/ExitAuthority/soat.py |   51 +++++++++++++--------------------
 1 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/NetworkScanners/ExitAuthority/soat.py b/NetworkScanners/ExitAuthority/soat.py
index e8a17dc..373dc00 100755
--- a/NetworkScanners/ExitAuthority/soat.py
+++ b/NetworkScanners/ExitAuthority/soat.py
@@ -1002,6 +1002,12 @@ class Test:
     datahandler.saveResult(result)
     return TEST_FAILURE
 
+  def register_inconclusive(self, result):
+    if self.rescan_nodes:
+      result.from_rescan = True
+    self.results.append(result)
+    datahandler.saveResult(result)
+    return TEST_INCONCLUSIVE
 
 class BaseHTTPTest(Test):
   def __init__(self, scan_filetypes=scan_filetypes):
@@ -1205,7 +1211,7 @@ class BaseHTTPTest(Test):
     for cookie in self.cookie_jar:
       my_cookie_jar.set_cookie(cookie)
 
-    # CA we should modify our headers for maximum magic
+    # CA we should modify our headers so we look like a browser
 
     # pfoobar means that foobar was acquired over a _p_roxy
     preq = torify(http_request, address, my_tor_cookie_jar, self.headers)
@@ -1217,12 +1223,7 @@ class BaseHTTPTest(Test):
       plog('NOTICE', 'We had no exit node to test, skipping to the next test.')
       result = HttpTestResult(None,
                               address, TEST_INCONCLUSIVE, INCONCLUSIVE_NOEXIT)
-      if self.rescan_nodes:
-        # CA: we shouldn't need to do this
-        result.from_rescan = True
-      self.results.append(result)
-      # CA: when do we use datahandler?
-      return TEST_INCONCLUSIVE
+      return self.register_inconclusive(result)
 
     exit_node = "$"+exit_node.idhex
 
@@ -1244,11 +1245,7 @@ class BaseHTTPTest(Test):
         if (direct_req.code == preq.code):
           result = HttpTestResult(self.node_map[exit_node[1:]],
                                   address, TEST_INCONCLUSIVE, INCONCLUSIVE_NOLOCALCONTENT)
-          if self.rescan_nodes:
-            # CA: we shouldn't need to do this
-            result.from_rescan = True
-          self.results.append(result)
-          return TEST_INCONCLUSIVE
+          return self.register_inconclusive(result)
 
       #  Error => behavior lookup table
       #  Error code     (Failure reason,        Register method,               Set extra_info to pcontent?)
@@ -1283,23 +1280,20 @@ class BaseHTTPTest(Test):
       if extra_info:
         result.extra_info = str(pcontent)
 
-      register(result)
-      return TEST_FAILURE
+      return register(result)
 
     # If we have no content, we had a connection error
     if not preq.content:
       result = HttpTestResult(self.node_map[exit_node[1:]],
                               address, TEST_FAILURE, FAILURE_NOEXITCONTENT)
-      self.register_exit_failure(result)
-      # Restore cookie jars
-      return TEST_FAILURE
+      return self.register_exit_failure(result)
 
     #
     # Tor was able to connect, so now it's time to make the comparison
     #
 
     # Compare the content
-    # TODO should we check if mimetype agrees with filetype?
+
     result = self.compare(address,filetype,preq)
     if result == COMPARE_NOEQUAL:
       # Reload direct content and try again
@@ -1312,10 +1306,7 @@ class BaseHTTPTest(Test):
         result = HttpTestResult(self.node_map[exit_node[1:]],
                                 address, TEST_INCONCLUSIVE,
                                 INCONCLUSIVE_NOLOCALCONTENT)
-        if self.rescan_nodes:
-          result.from_rescan = True
-        self.results.append(result)
-        return TEST_INCONCLUSIVE
+        return self.register_inconclusive(result)
 
       # Try our comparison again
       dynamic = self.compare(address,filetype,new_req)
@@ -1326,8 +1317,8 @@ class BaseHTTPTest(Test):
                                 address, TEST_FAILURE, FAILURE_EXITONLY,
                                 sha1sum.hexdigest(), psha1sum.hexdigest(),
                                 address_to_context(address)+".content")
-        self.register_exit_failure(result)
-        retval = TEST_FAILURE
+        retval = self.register_exit_failure(result)
+
       else:
         # The content is dynamic.
         # Here's where "no dynamic" comes in.
@@ -1338,22 +1329,20 @@ class BaseHTTPTest(Test):
                                 address, TEST_INCONCLUSIVE, INCONCLUSIVE_DYNAMIC,
                                 sha1sum_new.hexdigest(), psha1sum.hexdigest(),
                                 address_to_context(address)+".content")
-        self.results.append(result)
-        retval = TEST_INCONCLUSIVE
+        retval = self.register_inconclusive(result)
 
     elif result == COMPARE_EQUAL:
       result = HttpTestResult(self.node_map[exit_node[1:]],
                               address, TEST_SUCCESS)
-      self.register_success(result)
-      return TEST_SUCCESS
+      retval = self.register_success(result)
+
     elif result == COMPARE_TRUNCATION:
       result = HttpTestResult(self.node_map[exit_node[1:]],
                               address, TEST_FAILURE, FAILURE_EXITTRUNCATION,
                               sha1sum.hexdigest(), psha1sum.hexdigest(),
                               content_prefix+".content",
                               exit_content_file)
-      self.register_exit_failure(result)
-      retval = TEST_FAILURE
+      retval = self.register_exit_failure(result)
 
     # If we failed, then store what the exit node handed us
     if retval == TEST_FAILURE:
@@ -2108,7 +2097,7 @@ class SearchBasedTest:
     return list(urllist)
 
   def get_search_urls_for_filetype(self, filetype, number=0):
-    # CA. I don't want to support 'any' any more. We must specify a filetype
+    # We don't want to support 'any' any more. We must specify a filetype
     assert(filetype != 'any')
     assert(filetype)
 





More information about the tor-commits mailing list