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

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

Issue 10830193: Remove SWIGged use of BrowserProxy and TabProxy from PyAuto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 # Ignore the first iteration. 586 # Ignore the first iteration.
587 if iteration: 587 if iteration:
588 timings.append(elapsed_time) 588 timings.append(elapsed_time)
589 logging.info('Iteration %d of %d: %f milliseconds', iteration, 589 logging.info('Iteration %d of %d: %f milliseconds', iteration,
590 self._num_iterations, elapsed_time) 590 self._num_iterations, elapsed_time)
591 self.assertTrue(self._timeout_count <= self._max_timeout_count, 591 self.assertTrue(self._timeout_count <= self._max_timeout_count,
592 msg='Test exceeded automation timeout threshold.') 592 msg='Test exceeded automation timeout threshold.')
593 self.assertEqual(1 + num_tabs, self.GetTabCount(), 593 self.assertEqual(1 + num_tabs, self.GetTabCount(),
594 msg='Did not open %d new tab(s).' % num_tabs) 594 msg='Did not open %d new tab(s).' % num_tabs)
595 for _ in range(num_tabs): 595 for _ in range(num_tabs):
596 self.GetBrowserWindow(0).GetTab(1).Close(True) 596 self.CloseTab(1, 0)
597 597
598 self._PrintSummaryResults(description, timings, 'milliseconds', graph_name) 598 self._PrintSummaryResults(description, timings, 'milliseconds', graph_name)
599 599
600 def _LoginToGoogleAccount(self, account_key='test_google_account'): 600 def _LoginToGoogleAccount(self, account_key='test_google_account'):
601 """Logs in to a test Google account. 601 """Logs in to a test Google account.
602 602
603 Args: 603 Args:
604 account_key: The string key associated with the test account login 604 account_key: The string key associated with the test account login
605 credentials to use. 605 credentials to use.
606 """ 606 """
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 window.domAutomationController.send(JSON.stringify(result)); 731 window.domAutomationController.send(JSON.stringify(result));
732 """ 732 """
733 results = eval(self.ExecuteJavascript(js_get_results, tab_index=1)) 733 results = eval(self.ExecuteJavascript(js_get_results, tab_index=1))
734 score_pattern = '(\w+): (\d+)' 734 score_pattern = '(\w+): (\d+)'
735 final_score = re.search(score_pattern, results['final_score']).group(2) 735 final_score = re.search(score_pattern, results['final_score']).group(2)
736 result_dict = {'final_score': int(final_score)} 736 result_dict = {'final_score': int(final_score)}
737 for match in re.finditer(score_pattern, results['all_results']): 737 for match in re.finditer(score_pattern, results['all_results']):
738 benchmark_name = match.group(1) 738 benchmark_name = match.group(1)
739 benchmark_score = match.group(2) 739 benchmark_score = match.group(2)
740 result_dict[benchmark_name] = int(benchmark_score) 740 result_dict[benchmark_name] = int(benchmark_score)
741 self.GetBrowserWindow(0).GetTab(1).Close(True) 741 self.CloseTab(1, 0)
742 return result_dict 742 return result_dict
743 743
744 timings = {} 744 timings = {}
745 for iteration in xrange(self._num_iterations + 1): 745 for iteration in xrange(self._num_iterations + 1):
746 result_dict = _RunBenchmarkOnce(url) 746 result_dict = _RunBenchmarkOnce(url)
747 # Ignore the first iteration. 747 # Ignore the first iteration.
748 if iteration: 748 if iteration:
749 for key, val in result_dict.items(): 749 for key, val in result_dict.items():
750 timings.setdefault(key, []).append(val) 750 timings.setdefault(key, []).append(val)
751 logging.info('Iteration %d of %d:\n%s', iteration, self._num_iterations, 751 logging.info('Iteration %d of %d:\n%s', iteration, self._num_iterations,
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 # Measures performance using the first demo. 1430 # Measures performance using the first demo.
1431 avg_fps = self._MeasureFpsOverTime() 1431 avg_fps = self._MeasureFpsOverTime()
1432 status1 = self._GetStdAvgAndCompare(avg_fps, desc_array[index], 1432 status1 = self._GetStdAvgAndCompare(avg_fps, desc_array[index],
1433 ref_dict) 1433 ref_dict)
1434 # Measures performance using the second demo. 1434 # Measures performance using the second demo.
1435 self.NavigateToURL(url_array[index + 1]) 1435 self.NavigateToURL(url_array[index + 1])
1436 avg_fps = self._MeasureFpsOverTime() 1436 avg_fps = self._MeasureFpsOverTime()
1437 status2 = self._GetStdAvgAndCompare(avg_fps, desc_array[index + 1], 1437 status2 = self._GetStdAvgAndCompare(avg_fps, desc_array[index + 1],
1438 ref_dict) 1438 ref_dict)
1439 # Go Back to previous demo 1439 # Go Back to previous demo
1440 self.GetBrowserWindow(0).GetTab(0).GoBack(); 1440 self.TabGoBack()
1441 # Measures performance for first demo when moved back 1441 # Measures performance for first demo when moved back
1442 avg_fps = self._MeasureFpsOverTime() 1442 avg_fps = self._MeasureFpsOverTime()
1443 status3 = self._GetStdAvgAndCompare( 1443 status3 = self._GetStdAvgAndCompare(
1444 avg_fps, desc_array[index] + '_backward', 1444 avg_fps, desc_array[index] + '_backward',
1445 ref_dict) 1445 ref_dict)
1446 # Go Forward to previous demo 1446 # Go Forward to previous demo
1447 self.GetBrowserWindow(0).GetTab(0).GoForward(); 1447 self.TabGoForward()
1448 # Measures performance for second demo when moved forward 1448 # Measures performance for second demo when moved forward
1449 avg_fps = self._MeasureFpsOverTime() 1449 avg_fps = self._MeasureFpsOverTime()
1450 status4 = self._GetStdAvgAndCompare( 1450 status4 = self._GetStdAvgAndCompare(
1451 avg_fps, desc_array[index + 1] + '_forward', 1451 avg_fps, desc_array[index + 1] + '_forward',
1452 ref_dict) 1452 ref_dict)
1453 if not all([status1, status2, status3, status4]): 1453 if not all([status1, status2, status3, status4]):
1454 all_demos_passed = False 1454 all_demos_passed = False
1455 self.assertTrue( 1455 self.assertTrue(
1456 all_demos_passed, 1456 all_demos_passed,
1457 msg='One or more demos failed to yield an acceptable FPS value') 1457 msg='One or more demos failed to yield an acceptable FPS value')
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 # Get the scroll test results from the webpage. 1714 # Get the scroll test results from the webpage.
1715 results_js = """ 1715 results_js = """
1716 var __stringify = JSON.stringify || JSON.encode; 1716 var __stringify = JSON.stringify || JSON.encode;
1717 window.domAutomationController.send(__stringify({ 1717 window.domAutomationController.send(__stringify({
1718 'first_paint_time': chrome.loadTimes().firstPaintTime - 1718 'first_paint_time': chrome.loadTimes().firstPaintTime -
1719 chrome.loadTimes().requestTime, 1719 chrome.loadTimes().requestTime,
1720 'frame_times': __frame_times, 1720 'frame_times': __frame_times,
1721 })); 1721 }));
1722 """ 1722 """
1723 results = eval(self.ExecuteJavascript(results_js, tab_index=1)) 1723 results = eval(self.ExecuteJavascript(results_js, tab_index=1))
1724 self.GetBrowserWindow(0).GetTab(1).Close(True) 1724 self.CloseTab(1, 0)
1725 return ScrollResults(results['first_paint_time'], results['frame_times']) 1725 return ScrollResults(results['first_paint_time'], results['frame_times'])
1726 1726
1727 def RunScrollTest(self, url, description, graph_name, setup_js=''): 1727 def RunScrollTest(self, url, description, graph_name, setup_js=''):
1728 """Runs a scroll performance test on the specified webpage. 1728 """Runs a scroll performance test on the specified webpage.
1729 1729
1730 Args: 1730 Args:
1731 url: The string url for the webpage on which to run the scroll test. 1731 url: The string url for the webpage on which to run the scroll test.
1732 description: A string description for the particular test being run. 1732 description: A string description for the particular test being run.
1733 graph_name: A string name for the performance graph associated with this 1733 graph_name: A string name for the performance graph associated with this
1734 test. Only used on Chrome desktop. 1734 test. Only used on Chrome desktop.
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
2350 2350
2351 for iteration_num in xrange(2): 2351 for iteration_num in xrange(2):
2352 for site in tabs: 2352 for site in tabs:
2353 self.AppendTab(pyauto.GURL(site)) 2353 self.AppendTab(pyauto.GURL(site))
2354 2354
2355 self._RecordMemoryStats(description, 2355 self._RecordMemoryStats(description,
2356 '%dTabs%d' % (len(tabs), iteration_num + 1), 2356 '%dTabs%d' % (len(tabs), iteration_num + 1),
2357 duration) 2357 duration)
2358 2358
2359 for _ in xrange(len(tabs)): 2359 for _ in xrange(len(tabs)):
2360 self.GetBrowserWindow(0).GetTab(1).Close(True) 2360 self.CloseTab(1, 0)
2361 2361
2362 self._RecordMemoryStats(description, '0Tabs%d' % (iteration_num + 1), 2362 self._RecordMemoryStats(description, '0Tabs%d' % (iteration_num + 1),
2363 duration) 2363 duration)
2364 2364
2365 def testOpenCloseTabsControl(self): 2365 def testOpenCloseTabsControl(self):
2366 """Measures memory usage when opening/closing tabs to about:blank.""" 2366 """Measures memory usage when opening/closing tabs to about:blank."""
2367 tabs = ['about:blank'] * 10 2367 tabs = ['about:blank'] * 10
2368 self._RunTest(tabs, 'MemCtrl', 15) 2368 self._RunTest(tabs, 'MemCtrl', 15)
2369 2369
2370 def testOpenCloseTabsLiveSites(self): 2370 def testOpenCloseTabsLiveSites(self):
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
2612 """Identifies the port number to which the server is currently bound. 2612 """Identifies the port number to which the server is currently bound.
2613 2613
2614 Returns: 2614 Returns:
2615 The numeric port number to which the server is currently bound. 2615 The numeric port number to which the server is currently bound.
2616 """ 2616 """
2617 return self._server.server_address[1] 2617 return self._server.server_address[1]
2618 2618
2619 2619
2620 if __name__ == '__main__': 2620 if __name__ == '__main__':
2621 pyauto_functional.Main() 2621 pyauto_functional.Main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698