[ooni-probe/master] Refactor HTTP Requests test

commit becee5fe855d13fe46f72fe77648d68641bca4fc Author: Arturo Filastò <art@fuffa.org> Date: Fri Feb 8 17:38:54 2013 +0100 Refactor HTTP Requests test Fix bug where response headers where not getting compared --- nettests/blocking/http_requests.py | 64 +++++++++++++---------------------- ooni/templates/httpt.py | 2 + 2 files changed, 26 insertions(+), 40 deletions(-) diff --git a/nettests/blocking/http_requests.py b/nettests/blocking/http_requests.py index aedb1b8..56e5944 100644 --- a/nettests/blocking/http_requests.py +++ b/nettests/blocking/http_requests.py @@ -25,7 +25,7 @@ class HTTPRequestsTest(httpt.HTTPTest): """ name = "HTTP Requests Test" author = "Arturo Filastò" - version = "0.1" + version = "0.2" usageOptions = UsageOptions @@ -50,9 +50,7 @@ class HTTPRequestsTest(httpt.HTTPTest): self.factor = self.localOptions['factor'] - def compare_body_lengths(self): - body_length_a = self.control_body_length - body_length_b = self.experiment_body_length + def compare_body_lengths(self, body_length_a, body_length_b): if body_length_b == 0 and body_length_a != 0: rel = float(body_length_b)/float(body_length_a) @@ -75,13 +73,15 @@ class HTTPRequestsTest(httpt.HTTPTest): log.msg("censorship could be happening") self.report['body_length_match'] = False - def compare_headers(self): - diff = TrueHeaders(self.control_headers).getDiff(self.experiment_headers) + def compare_headers(self, headers_a, headers_b): + diff = headers_a.getDiff(headers_b) if diff: - log.msg("Headers appear to match") + log.msg("Headers appear to *not* match") + self.report['headers_diff'] = diff self.report['headers_match'] = False else: - log.msg("Headers appear to *not* match") + log.msg("Headers appear to match") + self.report['headers_diff'] = diff self.report['headers_match'] = True def test_get(self): @@ -89,47 +89,31 @@ class HTTPRequestsTest(httpt.HTTPTest): log.err("There was an error while testing %s" % self.url) log.exception(failure) - def control_body(result): - """ - Callback for processing the control HTTP body response. - """ - self.control_body_length = len(result) - if self.experiment_body_length is not None: - self.compare_body_lengths() - - def experiment_body(result): - """ - Callback for processing the experiment HTTP body response. - """ - self.experiment_body_length = len(result) - if self.control_body_length is not None: - self.compare_body_lengths() - - def control_headers(headers_dict): - """ - Callback for processing the control HTTP headers response. - """ - self.control_headers = headers_dict - - def experiment_headers(headers_dict): - """ - Callback for processing the experiment HTTP headers response. - """ - self.experiment_headers = headers_dict + def callback(res): + experiment, control = res + experiment_success, experiment_response = experiment + control_success, control_response = control + + self.compare_body_lengths(len(experiment_response.body), + len(control_response.body)) + + self.compare_headers(control_response.headers, + experiment_response.headers) l = [] log.msg("Performing GET request to %s" % self.url) - experiment_request = self.doRequest(self.url, method="GET", - body_processor=experiment_body, - headers_processor=control_headers) + experiment_request = self.doRequest(self.url, method="GET") log.msg("Performing GET request to %s via Tor" % self.url) control_request = self.doRequest(self.url, method="GET", - use_tor=True, body_processor=control_body, - headers_processor=control_headers) + use_tor=True) l.append(experiment_request) l.append(control_request) + dl = defer.DeferredList(l) + dl.addCallback(callback) + dl.addErrback(errback) + return dl diff --git a/ooni/templates/httpt.py b/ooni/templates/httpt.py index b506d77..f7d5441 100644 --- a/ooni/templates/httpt.py +++ b/ooni/templates/httpt.py @@ -139,6 +139,8 @@ class HTTPTest(NetTestCase): body_processor(response_body) else: self.processResponseBody(response_body) + response.body = response_body + return response def processResponseBody(self, body): """
participants (1)
-
art@torproject.org