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

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

Issue 1098253004: Move top_20 tests to a separate suite (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit tests Created 5 years, 7 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 base64 5 import base64
6 import unittest 6 import unittest
7 7
8 from common import chrome_proxy_metrics as com_metrics
sclittle 2015/05/01 23:05:39 nit: change to common_metrics
bustamante 2015/05/01 23:54:11 Done.
9 from common import network_metrics_unittest as network_unittest
8 from integration_tests import chrome_proxy_metrics as metrics 10 from integration_tests import chrome_proxy_metrics as metrics
9 from integration_tests import network_metrics_unittest as network_unittest
10 from telemetry.unittest_util import test_page_test_results 11 from telemetry.unittest_util import test_page_test_results
11 12
12 TEST_EXTRA_VIA_HEADER = '1.1 EXTRA_VIA_HEADER' 13 TEST_EXTRA_VIA_HEADER = '1.1 EXTRA_VIA_HEADER'
13 14
14 # Timeline events used in tests. 15 # Timeline events used in tests.
15 # An HTML not via proxy. 16 # An HTML not via proxy.
16 EVENT_HTML_DIRECT = network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 17 EVENT_HTML_DIRECT = network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
17 url='http://test.html1', 18 url='http://test.html1',
18 response_headers={ 19 response_headers={
19 'Content-Type': 'text/html', 20 'Content-Type': 'text/html',
20 'Content-Length': str(len(network_unittest.HTML_BODY)), 21 'Content-Length': str(len(network_unittest.HTML_BODY)),
21 }, 22 },
22 body=network_unittest.HTML_BODY) 23 body=network_unittest.HTML_BODY)
23 24
24 # An HTML via proxy. 25 # An HTML via proxy.
25 EVENT_HTML_PROXY_VIA = ( 26 EVENT_HTML_PROXY_VIA = (
26 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 27 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
27 url='http://test.html2', 28 url='http://test.html2',
28 response_headers={ 29 response_headers={
29 'Content-Type': 'text/html', 30 'Content-Type': 'text/html',
30 'Content-Encoding': 'gzip', 31 'Content-Encoding': 'gzip',
31 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)), 32 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)),
32 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 33 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
33 }, 34 },
34 body=network_unittest.HTML_BODY, 35 body=network_unittest.HTML_BODY,
35 remote_port=443)) 36 remote_port=443))
36 37
37 # An HTML via proxy with extra header. 38 # An HTML via proxy with extra header.
38 EVENT_HTML_PROXY_EXTRA_VIA = ( 39 EVENT_HTML_PROXY_EXTRA_VIA = (
39 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 40 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
40 url='http://test.html2', 41 url='http://test.html2',
41 response_headers={ 42 response_headers={
42 'Content-Type': 'text/html', 43 'Content-Type': 'text/html',
43 'Content-Encoding': 'gzip', 44 'Content-Encoding': 'gzip',
44 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)), 45 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)),
45 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER + ", " + 46 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER + ", " +
46 TEST_EXTRA_VIA_HEADER, 47 TEST_EXTRA_VIA_HEADER,
47 }, 48 },
48 body=network_unittest.HTML_BODY, 49 body=network_unittest.HTML_BODY,
49 remote_port=443)) 50 remote_port=443))
50 51
51 # An HTML via the HTTP fallback proxy. 52 # An HTML via the HTTP fallback proxy.
52 EVENT_HTML_PROXY_VIA_HTTP_FALLBACK = ( 53 EVENT_HTML_PROXY_VIA_HTTP_FALLBACK = (
53 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 54 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
54 url='http://test.html2', 55 url='http://test.html2',
55 response_headers={ 56 response_headers={
56 'Content-Type': 'text/html', 57 'Content-Type': 'text/html',
57 'Content-Encoding': 'gzip', 58 'Content-Encoding': 'gzip',
58 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)), 59 'X-Original-Content-Length': str(len(network_unittest.HTML_BODY)),
59 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 60 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
60 }, 61 },
61 body=network_unittest.HTML_BODY, 62 body=network_unittest.HTML_BODY,
62 remote_port=80)) 63 remote_port=80))
63 64
64 # An image via proxy with Via header. 65 # An image via proxy with Via header.
65 EVENT_IMAGE_PROXY_VIA = ( 66 EVENT_IMAGE_PROXY_VIA = (
66 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 67 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
67 url='http://test.image', 68 url='http://test.image',
68 response_headers={ 69 response_headers={
69 'Content-Type': 'image/jpeg', 70 'Content-Type': 'image/jpeg',
70 'Content-Encoding': 'gzip', 71 'Content-Encoding': 'gzip',
71 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL), 72 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL),
72 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 73 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
73 }, 74 },
74 body=base64.b64encode(network_unittest.IMAGE_BODY), 75 body=base64.b64encode(network_unittest.IMAGE_BODY),
75 base64_encoded_body=True, 76 base64_encoded_body=True,
76 remote_port=443)) 77 remote_port=443))
77 78
78 # An image via the HTTP fallback proxy. 79 # An image via the HTTP fallback proxy.
79 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK = ( 80 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK = (
80 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 81 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
81 url='http://test.image', 82 url='http://test.image',
82 response_headers={ 83 response_headers={
83 'Content-Type': 'image/jpeg', 84 'Content-Type': 'image/jpeg',
84 'Content-Encoding': 'gzip', 85 'Content-Encoding': 'gzip',
85 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL), 86 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL),
86 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 87 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
87 }, 88 },
88 body=base64.b64encode(network_unittest.IMAGE_BODY), 89 body=base64.b64encode(network_unittest.IMAGE_BODY),
89 base64_encoded_body=True, 90 base64_encoded_body=True,
90 remote_port=80)) 91 remote_port=80))
91 92
92 # An image via proxy with Via header and it is cached. 93 # An image via proxy with Via header and it is cached.
93 EVENT_IMAGE_PROXY_CACHED = ( 94 EVENT_IMAGE_PROXY_CACHED = (
94 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 95 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
95 url='http://test.image', 96 url='http://test.image',
96 response_headers={ 97 response_headers={
97 'Content-Type': 'image/jpeg', 98 'Content-Type': 'image/jpeg',
98 'Content-Encoding': 'gzip', 99 'Content-Encoding': 'gzip',
99 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL), 100 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL),
100 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 101 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
101 }, 102 },
102 body=base64.b64encode(network_unittest.IMAGE_BODY), 103 body=base64.b64encode(network_unittest.IMAGE_BODY),
103 base64_encoded_body=True, 104 base64_encoded_body=True,
104 served_from_cache=True)) 105 served_from_cache=True))
105 106
106 # An image fetched directly. 107 # An image fetched directly.
107 EVENT_IMAGE_DIRECT = ( 108 EVENT_IMAGE_DIRECT = (
108 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 109 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
109 url='http://test.image', 110 url='http://test.image',
110 response_headers={ 111 response_headers={
111 'Content-Type': 'image/jpeg', 112 'Content-Type': 'image/jpeg',
112 'Content-Encoding': 'gzip', 113 'Content-Encoding': 'gzip',
113 }, 114 },
114 body=base64.b64encode(network_unittest.IMAGE_BODY), 115 body=base64.b64encode(network_unittest.IMAGE_BODY),
115 base64_encoded_body=True)) 116 base64_encoded_body=True))
116 117
117 # A safe-browsing malware response. 118 # A safe-browsing malware response.
118 EVENT_MALWARE_PROXY = ( 119 EVENT_MALWARE_PROXY = (
119 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 120 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
120 url='http://test.malware', 121 url='http://test.malware',
121 response_headers={ 122 response_headers={
122 'X-Malware-Url': '1', 123 'X-Malware-Url': '1',
123 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 124 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
124 'Location': 'http://test.malware', 125 'Location': 'http://test.malware',
125 }, 126 },
126 status=307)) 127 status=307))
127 128
128 # An HTML via proxy with the Via header. 129 # An HTML via proxy with the Via header.
129 EVENT_IMAGE_BYPASS = ( 130 EVENT_IMAGE_BYPASS = (
130 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 131 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
131 url='http://test.image', 132 url='http://test.image',
132 response_headers={ 133 response_headers={
133 'Chrome-Proxy': 'bypass=1', 134 'Chrome-Proxy': 'bypass=1',
134 'Content-Type': 'text/html', 135 'Content-Type': 'text/html',
135 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 136 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
136 }, 137 },
137 status=502)) 138 status=502))
138 139
139 # An image fetched directly. 140 # An image fetched directly.
140 EVENT_IMAGE_DIRECT = ( 141 EVENT_IMAGE_DIRECT = (
141 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 142 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
142 url='http://test.image', 143 url='http://test.image',
143 response_headers={ 144 response_headers={
144 'Content-Type': 'image/jpeg', 145 'Content-Type': 'image/jpeg',
145 'Content-Encoding': 'gzip', 146 'Content-Encoding': 'gzip',
146 }, 147 },
147 body=base64.b64encode(network_unittest.IMAGE_BODY), 148 body=base64.b64encode(network_unittest.IMAGE_BODY),
148 base64_encoded_body=True)) 149 base64_encoded_body=True))
149 150
150 151
151 class ChromeProxyMetricTest(unittest.TestCase): 152 class ChromeProxyMetricTest(unittest.TestCase):
152 153
153 _test_proxy_info = {} 154 _test_proxy_info = {}
154 155
155 def _StubGetProxyInfo(self, info): 156 def _StubGetProxyInfo(self, info):
156 def stub(unused_tab, unused_url=''): # pylint: disable=W0613 157 def stub(unused_tab, unused_url=''): # pylint: disable=W0613
157 return ChromeProxyMetricTest._test_proxy_info 158 return ChromeProxyMetricTest._test_proxy_info
158 metrics.GetProxyInfoFromNetworkInternals = stub 159 metrics.GetProxyInfoFromNetworkInternals = stub
159 ChromeProxyMetricTest._test_proxy_info = info 160 ChromeProxyMetricTest._test_proxy_info = info
160 161
161 def testChromeProxyResponse(self): 162 def testChromeProxyResponse(self):
sclittle 2015/05/01 23:05:39 Move this testChromeProxyResponse into a unittest
bustamante 2015/05/01 23:54:11 Done.
162 # An https non-proxy response. 163 # An https non-proxy response.
163 resp = metrics.ChromeProxyResponse( 164 resp = com_metrics.ChromeProxyResponse(
164 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 165 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
165 url='https://test.url', 166 url='https://test.url',
166 response_headers={ 167 response_headers={
167 'Content-Type': 'text/html', 168 'Content-Type': 'text/html',
168 'Content-Length': str(len(network_unittest.HTML_BODY)), 169 'Content-Length': str(len(network_unittest.HTML_BODY)),
169 'Via': 'some other via', 170 'Via': 'some other via',
170 }, 171 },
171 body=network_unittest.HTML_BODY)) 172 body=network_unittest.HTML_BODY))
172 self.assertFalse(resp.ShouldHaveChromeProxyViaHeader()) 173 self.assertFalse(resp.ShouldHaveChromeProxyViaHeader())
173 self.assertFalse(resp.HasChromeProxyViaHeader()) 174 self.assertFalse(resp.HasChromeProxyViaHeader())
174 self.assertTrue(resp.IsValidByViaHeader()) 175 self.assertTrue(resp.IsValidByViaHeader())
175 176
176 # A proxied JPEG image response 177 # A proxied JPEG image response
177 resp = metrics.ChromeProxyResponse( 178 resp = com_metrics.ChromeProxyResponse(
178 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent( 179 network_unittest.NetworkMetricTest.MakeNetworkTimelineEvent(
179 url='http://test.image', 180 url='http://test.image',
180 response_headers={ 181 response_headers={
181 'Content-Type': 'image/jpeg', 182 'Content-Type': 'image/jpeg',
182 'Content-Encoding': 'gzip', 183 'Content-Encoding': 'gzip',
183 'Via': '1.1 ' + metrics.CHROME_PROXY_VIA_HEADER, 184 'Via': '1.1 ' + com_metrics.CHROME_PROXY_VIA_HEADER,
184 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL), 185 'X-Original-Content-Length': str(network_unittest.IMAGE_OCL),
185 }, 186 },
186 body=base64.b64encode(network_unittest.IMAGE_BODY), 187 body=base64.b64encode(network_unittest.IMAGE_BODY),
187 base64_encoded_body=True)) 188 base64_encoded_body=True))
188 self.assertTrue(resp.ShouldHaveChromeProxyViaHeader()) 189 self.assertTrue(resp.ShouldHaveChromeProxyViaHeader())
189 self.assertTrue(resp.HasChromeProxyViaHeader()) 190 self.assertTrue(resp.HasChromeProxyViaHeader())
190 self.assertTrue(resp.IsValidByViaHeader()) 191 self.assertTrue(resp.IsValidByViaHeader())
191 192
192 def testChromeProxyMetricForDataSaving(self):
193 metric = metrics.ChromeProxyMetric()
194 events = [
195 EVENT_HTML_DIRECT,
196 EVENT_HTML_PROXY_VIA,
197 EVENT_IMAGE_PROXY_CACHED,
198 EVENT_IMAGE_DIRECT]
199 metric.SetEvents(events)
200
201 self.assertTrue(len(events), len(list(metric.IterResponses(None))))
202 results = test_page_test_results.TestPageTestResults(self)
203
204 metric.AddResultsForDataSaving(None, results)
205 results.AssertHasPageSpecificScalarValue('resources_via_proxy', 'count', 2)
206 results.AssertHasPageSpecificScalarValue('resources_from_cache', 'count', 1)
207 results.AssertHasPageSpecificScalarValue('resources_direct', 'count', 2)
208
209 # Passing in zero responses should cause a failure.
210 metric.SetEvents([])
211 no_responses_exception = False
212 try:
213 metric.AddResultsForDataSaving(None, results)
214 except metrics.ChromeProxyMetricException:
215 no_responses_exception = True
216 self.assertTrue(no_responses_exception)
217
218 def testChromeProxyMetricForHeaderValidation(self): 193 def testChromeProxyMetricForHeaderValidation(self):
219 metric = metrics.ChromeProxyMetric() 194 metric = metrics.ChromeProxyMetric()
220 metric.SetEvents([ 195 metric.SetEvents([
221 EVENT_HTML_DIRECT, 196 EVENT_HTML_DIRECT,
222 EVENT_HTML_PROXY_VIA, 197 EVENT_HTML_PROXY_VIA,
223 EVENT_IMAGE_PROXY_CACHED, 198 EVENT_IMAGE_PROXY_CACHED,
224 EVENT_IMAGE_DIRECT]) 199 EVENT_IMAGE_DIRECT])
225 200
226 results = test_page_test_results.TestPageTestResults(self) 201 results = test_page_test_results.TestPageTestResults(self)
227 202
228 missing_via_exception = False 203 missing_via_exception = False
229 try: 204 try:
230 metric.AddResultsForHeaderValidation(None, results) 205 metric.AddResultsForHeaderValidation(None, results)
231 except metrics.ChromeProxyMetricException: 206 except com_metrics.ChromeProxyMetricException:
232 missing_via_exception = True 207 missing_via_exception = True
233 # Only the HTTP image response does not have a valid Via header. 208 # Only the HTTP image response does not have a valid Via header.
234 self.assertTrue(missing_via_exception) 209 self.assertTrue(missing_via_exception)
235 210
236 # Two events with valid Via headers. 211 # Two events with valid Via headers.
237 metric.SetEvents([ 212 metric.SetEvents([
238 EVENT_HTML_PROXY_VIA, 213 EVENT_HTML_PROXY_VIA,
239 EVENT_IMAGE_PROXY_CACHED]) 214 EVENT_IMAGE_PROXY_CACHED])
240 metric.AddResultsForHeaderValidation(None, results) 215 metric.AddResultsForHeaderValidation(None, results)
241 results.AssertHasPageSpecificScalarValue('checked_via_header', 'count', 2) 216 results.AssertHasPageSpecificScalarValue('checked_via_header', 'count', 2)
242 217
243 # Passing in zero responses should cause a failure. 218 # Passing in zero responses should cause a failure.
244 metric.SetEvents([]) 219 metric.SetEvents([])
245 no_responses_exception = False 220 no_responses_exception = False
246 try: 221 try:
247 metric.AddResultsForHeaderValidation(None, results) 222 metric.AddResultsForHeaderValidation(None, results)
248 except metrics.ChromeProxyMetricException: 223 except com_metrics.ChromeProxyMetricException:
249 no_responses_exception = True 224 no_responses_exception = True
250 self.assertTrue(no_responses_exception) 225 self.assertTrue(no_responses_exception)
251 226
252 def testChromeProxyMetricForExtraViaHeader(self): 227 def testChromeProxyMetricForExtraViaHeader(self):
253 metric = metrics.ChromeProxyMetric() 228 metric = metrics.ChromeProxyMetric()
254 metric.SetEvents([EVENT_HTML_DIRECT, 229 metric.SetEvents([EVENT_HTML_DIRECT,
255 EVENT_HTML_PROXY_EXTRA_VIA]) 230 EVENT_HTML_PROXY_EXTRA_VIA])
256 results = test_page_test_results.TestPageTestResults(self) 231 results = test_page_test_results.TestPageTestResults(self)
257 metric.AddResultsForExtraViaHeader(None, results, TEST_EXTRA_VIA_HEADER) 232 metric.AddResultsForExtraViaHeader(None, results, TEST_EXTRA_VIA_HEADER)
258 # The direct page should not count an extra via header, but should also not 233 # The direct page should not count an extra via header, but should also not
259 # throw an exception. 234 # throw an exception.
260 results.AssertHasPageSpecificScalarValue('extra_via_header', 'count', 1) 235 results.AssertHasPageSpecificScalarValue('extra_via_header', 'count', 1)
261 236
262 metric.SetEvents([EVENT_HTML_PROXY_VIA]) 237 metric.SetEvents([EVENT_HTML_PROXY_VIA])
263 exception_occurred = False 238 exception_occurred = False
264 try: 239 try:
265 metric.AddResultsForExtraViaHeader(None, results, TEST_EXTRA_VIA_HEADER) 240 metric.AddResultsForExtraViaHeader(None, results, TEST_EXTRA_VIA_HEADER)
266 except metrics.ChromeProxyMetricException: 241 except com_metrics.ChromeProxyMetricException:
267 exception_occurred = True 242 exception_occurred = True
268 # The response had the chrome proxy via header, but not the extra expected 243 # The response had the chrome proxy via header, but not the extra expected
269 # via header. 244 # via header.
270 self.assertTrue(exception_occurred) 245 self.assertTrue(exception_occurred)
271 246
272 def testChromeProxyMetricForBypass(self): 247 def testChromeProxyMetricForBypass(self):
273 metric = metrics.ChromeProxyMetric() 248 metric = metrics.ChromeProxyMetric()
274 metric.SetEvents([ 249 metric.SetEvents([
275 EVENT_HTML_DIRECT, 250 EVENT_HTML_DIRECT,
276 EVENT_HTML_PROXY_VIA, 251 EVENT_HTML_PROXY_VIA,
277 EVENT_IMAGE_PROXY_CACHED, 252 EVENT_IMAGE_PROXY_CACHED,
278 EVENT_IMAGE_DIRECT]) 253 EVENT_IMAGE_DIRECT])
279 results = test_page_test_results.TestPageTestResults(self) 254 results = test_page_test_results.TestPageTestResults(self)
280 255
281 bypass_exception = False 256 bypass_exception = False
282 try: 257 try:
283 metric.AddResultsForBypass(None, results) 258 metric.AddResultsForBypass(None, results)
284 except metrics.ChromeProxyMetricException: 259 except com_metrics.ChromeProxyMetricException:
285 bypass_exception = True 260 bypass_exception = True
286 # Two of the first three events have Via headers. 261 # Two of the first three events have Via headers.
287 self.assertTrue(bypass_exception) 262 self.assertTrue(bypass_exception)
288 263
289 # Use directly fetched image only. It is treated as bypassed. 264 # Use directly fetched image only. It is treated as bypassed.
290 metric.SetEvents([EVENT_IMAGE_DIRECT]) 265 metric.SetEvents([EVENT_IMAGE_DIRECT])
291 metric.AddResultsForBypass(None, results) 266 metric.AddResultsForBypass(None, results)
292 results.AssertHasPageSpecificScalarValue('bypass', 'count', 1) 267 results.AssertHasPageSpecificScalarValue('bypass', 'count', 1)
293 268
294 # Passing in zero responses should cause a failure. 269 # Passing in zero responses should cause a failure.
295 metric.SetEvents([]) 270 metric.SetEvents([])
296 no_responses_exception = False 271 no_responses_exception = False
297 try: 272 try:
298 metric.AddResultsForBypass(None, results) 273 metric.AddResultsForBypass(None, results)
299 except metrics.ChromeProxyMetricException: 274 except com_metrics.ChromeProxyMetricException:
300 no_responses_exception = True 275 no_responses_exception = True
301 self.assertTrue(no_responses_exception) 276 self.assertTrue(no_responses_exception)
302 277
303 def testChromeProxyMetricForCorsBypass(self): 278 def testChromeProxyMetricForCorsBypass(self):
304 metric = metrics.ChromeProxyMetric() 279 metric = metrics.ChromeProxyMetric()
305 metric.SetEvents([EVENT_HTML_PROXY_VIA, 280 metric.SetEvents([EVENT_HTML_PROXY_VIA,
306 EVENT_IMAGE_BYPASS, 281 EVENT_IMAGE_BYPASS,
307 EVENT_IMAGE_DIRECT]) 282 EVENT_IMAGE_DIRECT])
308 results = test_page_test_results.TestPageTestResults(self) 283 results = test_page_test_results.TestPageTestResults(self)
309 metric.AddResultsForCorsBypass(None, results) 284 metric.AddResultsForCorsBypass(None, results)
310 results.AssertHasPageSpecificScalarValue('cors_bypass', 'count', 1) 285 results.AssertHasPageSpecificScalarValue('cors_bypass', 'count', 1)
311 286
312 # Passing in zero responses should cause a failure. 287 # Passing in zero responses should cause a failure.
313 metric.SetEvents([]) 288 metric.SetEvents([])
314 no_responses_exception = False 289 no_responses_exception = False
315 try: 290 try:
316 metric.AddResultsForCorsBypass(None, results) 291 metric.AddResultsForCorsBypass(None, results)
317 except metrics.ChromeProxyMetricException: 292 except com_metrics.ChromeProxyMetricException:
318 no_responses_exception = True 293 no_responses_exception = True
319 self.assertTrue(no_responses_exception) 294 self.assertTrue(no_responses_exception)
320 295
321 def testChromeProxyMetricForBlockOnce(self): 296 def testChromeProxyMetricForBlockOnce(self):
322 metric = metrics.ChromeProxyMetric() 297 metric = metrics.ChromeProxyMetric()
323 metric.SetEvents([EVENT_HTML_DIRECT, 298 metric.SetEvents([EVENT_HTML_DIRECT,
324 EVENT_IMAGE_PROXY_VIA]) 299 EVENT_IMAGE_PROXY_VIA])
325 results = test_page_test_results.TestPageTestResults(self) 300 results = test_page_test_results.TestPageTestResults(self)
326 metric.AddResultsForBlockOnce(None, results) 301 metric.AddResultsForBlockOnce(None, results)
327 results.AssertHasPageSpecificScalarValue('eligible_responses', 'count', 2) 302 results.AssertHasPageSpecificScalarValue('eligible_responses', 'count', 2)
328 results.AssertHasPageSpecificScalarValue('bypass', 'count', 1) 303 results.AssertHasPageSpecificScalarValue('bypass', 'count', 1)
329 304
330 metric.SetEvents([EVENT_HTML_DIRECT, 305 metric.SetEvents([EVENT_HTML_DIRECT,
331 EVENT_IMAGE_DIRECT]) 306 EVENT_IMAGE_DIRECT])
332 exception_occurred = False 307 exception_occurred = False
333 try: 308 try:
334 metric.AddResultsForBlockOnce(None, results) 309 metric.AddResultsForBlockOnce(None, results)
335 except metrics.ChromeProxyMetricException: 310 except com_metrics.ChromeProxyMetricException:
336 exception_occurred = True 311 exception_occurred = True
337 # The second response was over direct, but was expected via proxy. 312 # The second response was over direct, but was expected via proxy.
338 self.assertTrue(exception_occurred) 313 self.assertTrue(exception_occurred)
339 314
340 # Passing in zero responses should cause a failure. 315 # Passing in zero responses should cause a failure.
341 metric.SetEvents([]) 316 metric.SetEvents([])
342 no_responses_exception = False 317 no_responses_exception = False
343 try: 318 try:
344 metric.AddResultsForBlockOnce(None, results) 319 metric.AddResultsForBlockOnce(None, results)
345 except metrics.ChromeProxyMetricException: 320 except com_metrics.ChromeProxyMetricException:
346 no_responses_exception = True 321 no_responses_exception = True
347 self.assertTrue(no_responses_exception) 322 self.assertTrue(no_responses_exception)
348 323
349 def testChromeProxyMetricForSafebrowsingOn(self): 324 def testChromeProxyMetricForSafebrowsingOn(self):
350 metric = metrics.ChromeProxyMetric() 325 metric = metrics.ChromeProxyMetric()
351 metric.SetEvents([EVENT_MALWARE_PROXY]) 326 metric.SetEvents([EVENT_MALWARE_PROXY])
352 results = test_page_test_results.TestPageTestResults(self) 327 results = test_page_test_results.TestPageTestResults(self)
353 328
354 metric.AddResultsForSafebrowsingOn(None, results) 329 metric.AddResultsForSafebrowsingOn(None, results)
355 results.AssertHasPageSpecificScalarValue( 330 results.AssertHasPageSpecificScalarValue(
(...skipping 12 matching lines...) Expand all
368 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK]) 343 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK])
369 results = test_page_test_results.TestPageTestResults(self) 344 results = test_page_test_results.TestPageTestResults(self)
370 metric.AddResultsForHTTPFallback(None, results) 345 metric.AddResultsForHTTPFallback(None, results)
371 results.AssertHasPageSpecificScalarValue('via_fallback', 'count', 2) 346 results.AssertHasPageSpecificScalarValue('via_fallback', 'count', 2)
372 347
373 metric.SetEvents([EVENT_HTML_PROXY_VIA, 348 metric.SetEvents([EVENT_HTML_PROXY_VIA,
374 EVENT_IMAGE_PROXY_VIA]) 349 EVENT_IMAGE_PROXY_VIA])
375 exception_occurred = False 350 exception_occurred = False
376 try: 351 try:
377 metric.AddResultsForHTTPFallback(None, results) 352 metric.AddResultsForHTTPFallback(None, results)
378 except metrics.ChromeProxyMetricException: 353 except com_metrics.ChromeProxyMetricException:
379 exception_occurred = True 354 exception_occurred = True
380 # The responses came through the SPDY proxy, but were expected through the 355 # The responses came through the SPDY proxy, but were expected through the
381 # HTTP fallback proxy. 356 # HTTP fallback proxy.
382 self.assertTrue(exception_occurred) 357 self.assertTrue(exception_occurred)
383 358
384 # Passing in zero responses should cause a failure. 359 # Passing in zero responses should cause a failure.
385 metric.SetEvents([]) 360 metric.SetEvents([])
386 no_responses_exception = False 361 no_responses_exception = False
387 try: 362 try:
388 metric.AddResultsForHTTPFallback(None, results) 363 metric.AddResultsForHTTPFallback(None, results)
389 except metrics.ChromeProxyMetricException: 364 except com_metrics.ChromeProxyMetricException:
390 no_responses_exception = True 365 no_responses_exception = True
391 self.assertTrue(no_responses_exception) 366 self.assertTrue(no_responses_exception)
392 367
393 def testChromeProxyMetricForHTTPToDirectFallback(self): 368 def testChromeProxyMetricForHTTPToDirectFallback(self):
394 metric = metrics.ChromeProxyMetric() 369 metric = metrics.ChromeProxyMetric()
395 metric.SetEvents([EVENT_HTML_PROXY_VIA_HTTP_FALLBACK, 370 metric.SetEvents([EVENT_HTML_PROXY_VIA_HTTP_FALLBACK,
396 EVENT_HTML_DIRECT, 371 EVENT_HTML_DIRECT,
397 EVENT_IMAGE_DIRECT]) 372 EVENT_IMAGE_DIRECT])
398 results = test_page_test_results.TestPageTestResults(self) 373 results = test_page_test_results.TestPageTestResults(self)
399 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2') 374 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2')
400 results.AssertHasPageSpecificScalarValue('via_fallback', 'count', 1) 375 results.AssertHasPageSpecificScalarValue('via_fallback', 'count', 1)
401 results.AssertHasPageSpecificScalarValue('bypass', 'count', 2) 376 results.AssertHasPageSpecificScalarValue('bypass', 'count', 2)
402 377
403 metric.SetEvents([EVENT_HTML_PROXY_VIA, 378 metric.SetEvents([EVENT_HTML_PROXY_VIA,
404 EVENT_HTML_DIRECT]) 379 EVENT_HTML_DIRECT])
405 exception_occurred = False 380 exception_occurred = False
406 try: 381 try:
407 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2') 382 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2')
408 except metrics.ChromeProxyMetricException: 383 except com_metrics.ChromeProxyMetricException:
409 exception_occurred = True 384 exception_occurred = True
410 # The first response was expected through the HTTP fallback proxy. 385 # The first response was expected through the HTTP fallback proxy.
411 self.assertTrue(exception_occurred) 386 self.assertTrue(exception_occurred)
412 387
413 metric.SetEvents([EVENT_HTML_PROXY_VIA_HTTP_FALLBACK, 388 metric.SetEvents([EVENT_HTML_PROXY_VIA_HTTP_FALLBACK,
414 EVENT_HTML_PROXY_VIA_HTTP_FALLBACK, 389 EVENT_HTML_PROXY_VIA_HTTP_FALLBACK,
415 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK]) 390 EVENT_IMAGE_PROXY_VIA_HTTP_FALLBACK])
416 exception_occurred = False 391 exception_occurred = False
417 try: 392 try:
418 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2') 393 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2')
419 except metrics.ChromeProxyMetricException: 394 except com_metrics.ChromeProxyMetricException:
420 exception_occurred = True 395 exception_occurred = True
421 # All but the first response were expected to be over direct. 396 # All but the first response were expected to be over direct.
422 self.assertTrue(exception_occurred) 397 self.assertTrue(exception_occurred)
423 398
424 metric.SetEvents([EVENT_HTML_DIRECT, 399 metric.SetEvents([EVENT_HTML_DIRECT,
425 EVENT_HTML_DIRECT, 400 EVENT_HTML_DIRECT,
426 EVENT_IMAGE_DIRECT]) 401 EVENT_IMAGE_DIRECT])
427 exception_occurred = False 402 exception_occurred = False
428 try: 403 try:
429 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2') 404 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2')
430 except metrics.ChromeProxyMetricException: 405 except com_metrics.ChromeProxyMetricException:
431 exception_occurred = True 406 exception_occurred = True
432 # The first response was expected through the HTTP fallback proxy. 407 # The first response was expected through the HTTP fallback proxy.
433 self.assertTrue(exception_occurred) 408 self.assertTrue(exception_occurred)
434 409
435 # Passing in zero responses should cause a failure. 410 # Passing in zero responses should cause a failure.
436 metric.SetEvents([]) 411 metric.SetEvents([])
437 no_responses_exception = False 412 no_responses_exception = False
438 try: 413 try:
439 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2') 414 metric.AddResultsForHTTPToDirectFallback(None, results, 'test.html2')
440 except metrics.ChromeProxyMetricException: 415 except com_metrics.ChromeProxyMetricException:
441 no_responses_exception = True 416 no_responses_exception = True
442 self.assertTrue(no_responses_exception) 417 self.assertTrue(no_responses_exception)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698