Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Side by Side Diff: tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py

Issue 942863004: Integration test for “lo-fi” mode in Chrome-Proxy request header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 import time 6 import time
7 7
8 from integration_tests import network_metrics 8 from integration_tests import network_metrics
9 from telemetry.page import page_test 9 from telemetry.page import page_test
10 from telemetry.value import scalar 10 from telemetry.value import scalar
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 return None 64 return None
65 65
66 chrome_proxy_request_header = self.response.request_headers['Chrome-Proxy'] 66 chrome_proxy_request_header = self.response.request_headers['Chrome-Proxy']
67 values = [v.strip() for v in chrome_proxy_request_header.split(',')] 67 values = [v.strip() for v in chrome_proxy_request_header.split(',')]
68 for value in values: 68 for value in values:
69 kvp = value.split('=', 1) 69 kvp = value.split('=', 1)
70 if len(kvp) == 2 and kvp[0].strip() == 'c': 70 if len(kvp) == 2 and kvp[0].strip() == 'c':
71 return kvp[1].strip() 71 return kvp[1].strip()
72 return None 72 return None
73 73
74 def HasChromeProxyLoFi(self):
75 if 'Chrome-Proxy' not in self.response.request_headers:
76 return False
77 chrome_proxy_request_header = self.response.request_headers['Chrome-Proxy']
78 values = [v.strip() for v in chrome_proxy_request_header.split(',')]
79 for value in values:
80 if len(value) == 5 and value == 'q=low':
81 return True
82 return False
74 83
75 class ChromeProxyMetric(network_metrics.NetworkMetric): 84 class ChromeProxyMetric(network_metrics.NetworkMetric):
76 """A Chrome proxy timeline metric.""" 85 """A Chrome proxy timeline metric."""
77 86
78 def __init__(self): 87 def __init__(self):
79 super(ChromeProxyMetric, self).__init__() 88 super(ChromeProxyMetric, self).__init__()
80 self.compute_data_saving = True 89 self.compute_data_saving = True
81 90
82 def SetEvents(self, events): 91 def SetEvents(self, events):
83 """Used for unittest.""" 92 """Used for unittest."""
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 raise ChromeProxyMetricException, ( 182 raise ChromeProxyMetricException, (
174 '%s: Response missing via header. Only "%s" clients should ' 183 '%s: Response missing via header. Only "%s" clients should '
175 'bypass for this page, but this client is "%s".' % ( 184 'bypass for this page, but this client is "%s".' % (
176 resp.response.url, bypass_for_client_type, client_type)) 185 resp.response.url, bypass_for_client_type, client_type))
177 186
178 results.AddValue(scalar.ScalarValue( 187 results.AddValue(scalar.ScalarValue(
179 results.current_page, 'via', 'count', via_count)) 188 results.current_page, 'via', 'count', via_count))
180 results.AddValue(scalar.ScalarValue( 189 results.AddValue(scalar.ScalarValue(
181 results.current_page, 'bypass', 'count', bypass_count)) 190 results.current_page, 'bypass', 'count', bypass_count))
182 191
192 def AddResultsForLoFi(self, tab, results):
193 lo_fi_count = 0
194
195 for resp in self.IterResponses(tab):
196 if resp.HasChromeProxyViaHeader():
197 lo_fi_count += 1
198 else:
199 r = resp.response
200 raise ChromeProxyMetricException, (
201 '%s: LoFi not in request header.' % (r.url))
202
203 cl = resp.content_length
204 resource = resp.response.url
205 results.AddValue(scalar.ScalarValue(
206 results.current_page, 'lo_fi', 'count', lo_fi_count))
207
208 for resp in self.IterResponses(tab):
209 r = resp.response
210 cl = resp.content_length
211 ocl = resp.original_content_length
212 saving = resp.data_saving_rate * 100
213 if cl > 100:
214 raise ChromeProxyMetricException, (
215 'Image %s is %d bytes. Expecting less than 100 bytes' %
bengr 2015/02/27 23:38:38 Add a period.
megjablon 2015/02/28 00:57:32 Done.
216 (resource, cl))
217
218 results.AddValue(scalar.ScalarValue(
219 results.current_page, 'content_length', 'bytes', cl))
220 results.AddValue(scalar.ScalarValue(
221 results.current_page, 'original_content_length', 'bytes', ocl))
222 results.AddValue(scalar.ScalarValue(
223 results.current_page, 'data_saving', 'percent', saving))
224
183 def AddResultsForBypass(self, tab, results): 225 def AddResultsForBypass(self, tab, results):
184 bypass_count = 0 226 bypass_count = 0
185 227
186 for resp in self.IterResponses(tab): 228 for resp in self.IterResponses(tab):
187 if resp.HasChromeProxyViaHeader(): 229 if resp.HasChromeProxyViaHeader():
188 r = resp.response 230 r = resp.response
189 raise ChromeProxyMetricException, ( 231 raise ChromeProxyMetricException, (
190 '%s: Should not have Via header (%s) (refer=%s, status=%d)' % ( 232 '%s: Should not have Via header (%s) (refer=%s, status=%d)' % (
191 r.url, r.GetHeader('Via'), r.GetHeader('Referer'), r.status)) 233 r.url, r.GetHeader('Via'), r.GetHeader('Referer'), r.status))
192 bypass_count += 1 234 bypass_count += 1
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 'Response for %s should have via header; proxy should no longer ' 455 'Response for %s should have via header; proxy should no longer '
414 'be bypassed.\nReponse: status=(%d, %s)\nHeaders:\n %s' % ( 456 'be bypassed.\nReponse: status=(%d, %s)\nHeaders:\n %s' % (
415 r.url, r.status, r.status_text, r.headers)) 457 r.url, r.status, r.status_text, r.headers))
416 else: 458 else:
417 via_count += 1 459 via_count += 1
418 460
419 results.AddValue(scalar.ScalarValue( 461 results.AddValue(scalar.ScalarValue(
420 results.current_page, 'bypass', 'count', bypass_count)) 462 results.current_page, 'bypass', 'count', bypass_count))
421 results.AddValue(scalar.ScalarValue( 463 results.AddValue(scalar.ScalarValue(
422 results.current_page, 'via', 'count', via_count)) 464 results.current_page, 'via', 'count', via_count))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698