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

Side by Side Diff: chrome/test/functional/perf.py

Issue 8566053: Adding a short-running pyauto-based Angry Birds performance test to perf.py. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor style edit. Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Basic pyauto performance tests. 6 """Basic pyauto performance tests.
7 7
8 For tests that need to be run for multiple iterations (e.g., so that average 8 For tests that need to be run for multiple iterations (e.g., so that average
9 and standard deviation values can be reported), the default number of iterations 9 and standard deviation values can be reported), the default number of iterations
10 run for each of these tests is specified by |_DEFAULT_NUM_ITERATIONS|. 10 run for each of these tests is specified by |_DEFAULT_NUM_ITERATIONS|.
(...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 benchmark = benchmark[:benchmark.find('_mflops')] 1111 benchmark = benchmark[:benchmark.find('_mflops')]
1112 logging.info('Results for ScimarkGui_' + benchmark + ':') 1112 logging.info('Results for ScimarkGui_' + benchmark + ':')
1113 logging.info(' %.2f MFLOPS', mflops) 1113 logging.info(' %.2f MFLOPS', mflops)
1114 logging.info(' %.2f MB', mem) 1114 logging.info(' %.2f MB', mem)
1115 self._OutputPerfGraphValue( 1115 self._OutputPerfGraphValue(
1116 '%s_ScimarkGui-%s-MFLOPS' % ('MFLOPS', benchmark), mflops) 1116 '%s_ScimarkGui-%s-MFLOPS' % ('MFLOPS', benchmark), mflops)
1117 self._OutputPerfGraphValue( 1117 self._OutputPerfGraphValue(
1118 '%s_ScimarkGui-%s-Mem' % ('MB', benchmark), mem) 1118 '%s_ScimarkGui-%s-Mem' % ('MB', benchmark), mem)
1119 1119
1120 1120
1121 class LiveGamePerfTest(BasePerfTest):
1122 """Tests to measure performance of live gaming webapps."""
1123
1124 def ExtraChromeFlags(self):
1125 """Ensures Chrome is launched with custom flags.
1126
1127 Returns:
1128 A list of extra flags to pass to Chrome when it is launched.
1129 """
1130 # Ensure Chrome enables remote debugging on port 9222. This is required to
1131 # take v8 heap snapshots of tabs in Chrome.
1132 return (super(LiveGamePerfTest, self).ExtraChromeFlags() +
1133 ['--remote-debugging-port=9222'])
1134
1135 def _RunLiveGamePerfTest(self, url, url_title_substring,
1136 description):
1137 """Measures performance metrics for the specified live gaming webapp.
1138
1139 This function connects to the specified URL to launch the gaming webapp,
1140 waits for a period of time for the webapp to run, then collects some
1141 performance metrics about the running webapp.
1142
1143 Args:
1144 url: The string URL of the gaming webapp to analyze.
1145 url_title_substring: A string that is expected to be a substring of the
1146 webpage title for the specified gaming webapp. Used
1147 to verify that the webapp loads correctly.
1148 description: A string description for this game, used in the performance
1149 value description. Should not contain any spaces.
1150 """
1151 self.NavigateToURL(url)
1152 loaded_tab_title = self.GetActiveTabTitle()
1153 self.assertTrue(loaded_tab_title.find(url_title_substring) >= 0,
Nirnimesh 2011/11/19 02:31:14 better written as: url_title_substring in loaded_t
dennis_jeffrey 2011/11/22 23:36:37 Done.
1154 msg='Loaded tab title missing "%s": "%s"' %
1155 (url_title_substring, loaded_tab_title))
1156 cpu_usage_start = self._GetCPUUsage()
1157
1158 # Let the app run for 1 minute.
Nirnimesh 2011/11/19 02:31:14 Don't you want to measure cpu usage over a range o
dennis_jeffrey 2011/11/22 23:36:37 Ignoring this as per our offline discussion. With
1159 time.sleep(60)
1160
1161 cpu_usage_end = self._GetCPUUsage()
1162 fraction_non_idle_time = self._GetFractionNonIdleCPUTime(
1163 cpu_usage_start, cpu_usage_end)
1164
1165 logging.info('Fraction of CPU time spent non-idle: %.2f' %
1166 fraction_non_idle_time)
1167 self._OutputPerfGraphValue('Fraction_%sCpuBusy' % description,
1168 fraction_non_idle_time)
1169 snapshotter = perf_snapshot.PerformanceSnapshotter()
1170 snapshot = snapshotter.HeapSnapshot()[0]
1171 v8_heap_size = snapshot['total_heap_size'] / (1024.0 * 1024.0)
1172 logging.info('Total v8 heap size: %.2f MB' % v8_heap_size)
1173 self._OutputPerfGraphValue('MB_%sV8HeapSize' % description, v8_heap_size)
1174
1175 def testAngryBirds(self):
1176 """Measures performance for Angry Birds."""
1177 self._RunLiveGamePerfTest('http://chrome.angrybirds.com', 'Angry Birds',
1178 'AngryBirds')
1179
1180
1121 class PerfTestServerRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): 1181 class PerfTestServerRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
1122 """Request handler for the local performance test server.""" 1182 """Request handler for the local performance test server."""
1123 1183
1124 def _IgnoreHandler(self, unused_args): 1184 def _IgnoreHandler(self, unused_args):
1125 """A GET request handler that simply replies with status code 200. 1185 """A GET request handler that simply replies with status code 200.
1126 1186
1127 Args: 1187 Args:
1128 unused_args: A dictionary of arguments for the current GET request. 1188 unused_args: A dictionary of arguments for the current GET request.
1129 The arguments are ignored. 1189 The arguments are ignored.
1130 """ 1190 """
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 """Identifies the port number to which the server is currently bound. 1404 """Identifies the port number to which the server is currently bound.
1345 1405
1346 Returns: 1406 Returns:
1347 The numeric port number to which the server is currently bound. 1407 The numeric port number to which the server is currently bound.
1348 """ 1408 """
1349 return self._server.server_address[1] 1409 return self._server.server_address[1]
1350 1410
1351 1411
1352 if __name__ == '__main__': 1412 if __name__ == '__main__':
1353 pyauto_functional.Main() 1413 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698