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

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

Issue 397483002: Move chrome_proxy tests from under tools/perf to tools/chrome_proxy/integration_tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments and sync'ed Created 6 years, 5 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 integration_tests import network_metrics
8 from metrics import test_page_measurement_results 9 from metrics import test_page_measurement_results
9 from metrics import network
10 from telemetry.timeline import event 10 from telemetry.timeline import event
11 11
12 12
13 HTML_BODY = """<!DOCTYPE HTML> 13 HTML_BODY = """<!DOCTYPE HTML>
14 <html> 14 <html>
15 <head> </head> 15 <head> </head>
16 <body> 16 <body>
17 <div id="test"> TEST HTML</div> 17 <div id="test"> TEST HTML</div>
18 </body> 18 </body>
19 </html>""" 19 </html>"""
20 IMAGE_BODY = """fake image data""" 20 IMAGE_BODY = """fake image data"""
21 GZIPPED_HTML_LEN = network.HTTPResponse.GetGizppedBodyLength(HTML_BODY) 21 GZIPPED_HTML_LEN = network_metrics.HTTPResponse.GetGizppedBodyLength(HTML_BODY)
22 # Make up original content length for the image. 22 # Make up original content length for the image.
23 IMAGE_OCL = 3 * len(IMAGE_BODY) 23 IMAGE_OCL = 3 * len(IMAGE_BODY)
24 24
25 25
26 class NetworkMetricTest(unittest.TestCase): 26 class NetworkMetricTest(unittest.TestCase):
27 @staticmethod 27 @staticmethod
28 def MakeNetworkTimelineEvent( 28 def MakeNetworkTimelineEvent(
29 url, response_headers, body=None, base64_encoded_body=False, 29 url, response_headers, body=None, base64_encoded_body=False,
30 served_from_cache=False, request_headers=None, status=200): 30 served_from_cache=False, request_headers=None, status=200):
31 if not request_headers: 31 if not request_headers:
(...skipping 10 matching lines...) Expand all
42 e.args['body'] = body 42 e.args['body'] = body
43 e.args['base64_encoded_body'] = base64_encoded_body 43 e.args['base64_encoded_body'] = base64_encoded_body
44 e.args['served_from_cache'] = served_from_cache 44 e.args['served_from_cache'] = served_from_cache
45 return e 45 return e
46 46
47 def testHTTPResponse(self): 47 def testHTTPResponse(self):
48 url = 'http://test.url' 48 url = 'http://test.url'
49 self.assertLess(GZIPPED_HTML_LEN, len(HTML_BODY)) 49 self.assertLess(GZIPPED_HTML_LEN, len(HTML_BODY))
50 50
51 # A plain text HTML response 51 # A plain text HTML response
52 resp = network.HTTPResponse(self.MakeNetworkTimelineEvent( 52 resp = network_metrics.HTTPResponse(self.MakeNetworkTimelineEvent(
53 url=url, 53 url=url,
54 response_headers={ 54 response_headers={
55 'Content-Type': 'text/html', 55 'Content-Type': 'text/html',
56 'Content-Length': str(len(HTML_BODY)), 56 'Content-Length': str(len(HTML_BODY)),
57 }, 57 },
58 body=HTML_BODY)) 58 body=HTML_BODY))
59 self.assertEqual(url, resp.response.url) 59 self.assertEqual(url, resp.response.url)
60 body, base64_encoded = resp.response.GetBody() 60 body, base64_encoded = resp.response.GetBody()
61 self.assertEqual(HTML_BODY, body) 61 self.assertEqual(HTML_BODY, body)
62 self.assertFalse(base64_encoded) 62 self.assertFalse(base64_encoded)
63 self.assertEqual('text/html', resp.response.GetHeader('Content-Type')) 63 self.assertEqual('text/html', resp.response.GetHeader('Content-Type'))
64 64
65 self.assertEqual(len(HTML_BODY), resp.content_length) 65 self.assertEqual(len(HTML_BODY), resp.content_length)
66 self.assertEqual(None, resp.response.GetHeader('Content-Encoding')) 66 self.assertEqual(None, resp.response.GetHeader('Content-Encoding'))
67 self.assertFalse(resp.has_original_content_length) 67 self.assertFalse(resp.has_original_content_length)
68 self.assertEqual(0.0, resp.data_saving_rate) 68 self.assertEqual(0.0, resp.data_saving_rate)
69 69
70 # A gzipped HTML response 70 # A gzipped HTML response
71 resp = network.HTTPResponse(self.MakeNetworkTimelineEvent( 71 resp = network_metrics.HTTPResponse(self.MakeNetworkTimelineEvent(
72 url=url, 72 url=url,
73 response_headers={ 73 response_headers={
74 'Content-Type': 'text/html', 74 'Content-Type': 'text/html',
75 'Content-Encoding': 'gzip', 75 'Content-Encoding': 'gzip',
76 'X-Original-Content-Length': str(len(HTML_BODY)), 76 'X-Original-Content-Length': str(len(HTML_BODY)),
77 }, 77 },
78 body=HTML_BODY)) 78 body=HTML_BODY))
79 body, base64_encoded = resp.response.GetBody() 79 body, base64_encoded = resp.response.GetBody()
80 self.assertFalse(base64_encoded) 80 self.assertFalse(base64_encoded)
81 self.assertEqual(GZIPPED_HTML_LEN, resp.content_length) 81 self.assertEqual(GZIPPED_HTML_LEN, resp.content_length)
82 self.assertEqual('gzip', resp.response.GetHeader('Content-Encoding')) 82 self.assertEqual('gzip', resp.response.GetHeader('Content-Encoding'))
83 self.assertTrue(resp.has_original_content_length) 83 self.assertTrue(resp.has_original_content_length)
84 self.assertEqual(len(HTML_BODY), resp.original_content_length) 84 self.assertEqual(len(HTML_BODY), resp.original_content_length)
85 self.assertEqual( 85 self.assertEqual(
86 float(len(HTML_BODY) - GZIPPED_HTML_LEN) / len(HTML_BODY), 86 float(len(HTML_BODY) - GZIPPED_HTML_LEN) / len(HTML_BODY),
87 resp.data_saving_rate) 87 resp.data_saving_rate)
88 88
89 # A JPEG image response. 89 # A JPEG image response.
90 resp = network.HTTPResponse(self.MakeNetworkTimelineEvent( 90 resp = network_metrics.HTTPResponse(self.MakeNetworkTimelineEvent(
91 url='http://test.image', 91 url='http://test.image',
92 response_headers={ 92 response_headers={
93 'Content-Type': 'image/jpeg', 93 'Content-Type': 'image/jpeg',
94 'Content-Encoding': 'gzip', 94 'Content-Encoding': 'gzip',
95 'X-Original-Content-Length': str(IMAGE_OCL), 95 'X-Original-Content-Length': str(IMAGE_OCL),
96 }, 96 },
97 body=base64.b64encode(IMAGE_BODY), 97 body=base64.b64encode(IMAGE_BODY),
98 base64_encoded_body=True)) 98 base64_encoded_body=True))
99 body, base64_encoded = resp.response.GetBody() 99 body, base64_encoded = resp.response.GetBody()
100 self.assertTrue(base64_encoded) 100 self.assertTrue(base64_encoded)
101 self.assertEqual(IMAGE_BODY, base64.b64decode(body)) 101 self.assertEqual(IMAGE_BODY, base64.b64decode(body))
102 self.assertEqual(len(IMAGE_BODY), resp.content_length) 102 self.assertEqual(len(IMAGE_BODY), resp.content_length)
103 self.assertTrue(resp.has_original_content_length) 103 self.assertTrue(resp.has_original_content_length)
104 self.assertEqual(IMAGE_OCL, resp.original_content_length) 104 self.assertEqual(IMAGE_OCL, resp.original_content_length)
105 self.assertFalse(resp.response.served_from_cache) 105 self.assertFalse(resp.response.served_from_cache)
106 self.assertEqual(float(IMAGE_OCL - len(IMAGE_BODY)) / IMAGE_OCL, 106 self.assertEqual(float(IMAGE_OCL - len(IMAGE_BODY)) / IMAGE_OCL,
107 resp.data_saving_rate) 107 resp.data_saving_rate)
108 108
109 # A JPEG image response from cache. 109 # A JPEG image response from cache.
110 resp = network.HTTPResponse(self.MakeNetworkTimelineEvent( 110 resp = network_metrics.HTTPResponse(self.MakeNetworkTimelineEvent(
111 url='http://test.image', 111 url='http://test.image',
112 response_headers={ 112 response_headers={
113 'Content-Type': 'image/jpeg', 113 'Content-Type': 'image/jpeg',
114 'Content-Encoding': 'gzip', 114 'Content-Encoding': 'gzip',
115 'X-Original-Content-Length': str(IMAGE_OCL), 115 'X-Original-Content-Length': str(IMAGE_OCL),
116 }, 116 },
117 body=base64.b64encode(IMAGE_BODY), 117 body=base64.b64encode(IMAGE_BODY),
118 base64_encoded_body=True, 118 base64_encoded_body=True,
119 served_from_cache=True)) 119 served_from_cache=True))
120 self.assertEqual(len(IMAGE_BODY), resp.content_length) 120 self.assertEqual(len(IMAGE_BODY), resp.content_length)
(...skipping 26 matching lines...) Expand all
147 self.MakeNetworkTimelineEvent( 147 self.MakeNetworkTimelineEvent(
148 url='http://test.image', 148 url='http://test.image',
149 response_headers={ 149 response_headers={
150 'Content-Type': 'image/jpeg', 150 'Content-Type': 'image/jpeg',
151 'Content-Encoding': 'gzip', 151 'Content-Encoding': 'gzip',
152 'X-Original-Content-Length': str(IMAGE_OCL), 152 'X-Original-Content-Length': str(IMAGE_OCL),
153 }, 153 },
154 body=base64.b64encode(IMAGE_BODY), 154 body=base64.b64encode(IMAGE_BODY),
155 base64_encoded_body=True), 155 base64_encoded_body=True),
156 ] 156 ]
157 metric = network.NetworkMetric() 157 metric = network_metrics.NetworkMetric()
158 metric._events = events 158 metric._events = events
159 metric.compute_data_saving = True 159 metric.compute_data_saving = True
160 160
161 self.assertTrue(len(events), len(list(metric.IterResponses(None)))) 161 self.assertTrue(len(events), len(list(metric.IterResponses(None))))
162 results = test_page_measurement_results.TestPageMeasurementResults(self) 162 results = test_page_measurement_results.TestPageMeasurementResults(self)
163 metric.AddResults(None, results) 163 metric.AddResults(None, results)
164 164
165 cl = len(HTML_BODY) + GZIPPED_HTML_LEN + len(IMAGE_BODY) 165 cl = len(HTML_BODY) + GZIPPED_HTML_LEN + len(IMAGE_BODY)
166 results.AssertHasPageSpecificScalarValue('content_length', 'bytes', cl) 166 results.AssertHasPageSpecificScalarValue('content_length', 'bytes', cl)
167 167
168 ocl = len(HTML_BODY) + len(HTML_BODY) + IMAGE_OCL 168 ocl = len(HTML_BODY) + len(HTML_BODY) + IMAGE_OCL
169 results.AssertHasPageSpecificScalarValue( 169 results.AssertHasPageSpecificScalarValue(
170 'original_content_length', 'bytes', ocl) 170 'original_content_length', 'bytes', ocl)
171 171
172 saving_percent = float(ocl - cl) * 100/ ocl 172 saving_percent = float(ocl - cl) * 100/ ocl
173 results.AssertHasPageSpecificScalarValue( 173 results.AssertHasPageSpecificScalarValue(
174 'data_saving', 'percent', saving_percent) 174 'data_saving', 'percent', saving_percent)
OLDNEW
« no previous file with comments | « tools/chrome_proxy/integration_tests/network_metrics.py ('k') | tools/chrome_proxy/run_benchmark » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698