OLD | NEW |
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 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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.CloseTab(tab_index=1) | 596 self.CloseTab(tab_index=1) |
597 | 597 |
598 self._PrintSummaryResults(description, timings, 'milliseconds', graph_name) | 598 self._PrintSummaryResults(description, timings, 'milliseconds', graph_name) |
599 | 599 |
| 600 def _GetConfig(self): |
| 601 """Load perf test configuration file. |
| 602 |
| 603 Returns: |
| 604 A dictionary that represents the config information. |
| 605 """ |
| 606 config_file = os.path.join(os.path.dirname(__file__), 'perf.cfg') |
| 607 config = {'username': None, |
| 608 'password': None, |
| 609 'google_account_url': 'https://accounts.google.com/', |
| 610 'gmail_url': 'https://www.gmail.com', |
| 611 'plus_url': 'https://plus.google.com', |
| 612 'docs_url': 'https://docs.google.com'} |
| 613 if os.path.exists(config_file): |
| 614 try: |
| 615 new_config = pyauto.PyUITest.EvalDataFrom(config_file) |
| 616 for key in new_config: |
| 617 if new_config.get(key) is not None: |
| 618 config[key] = new_config.get(key) |
| 619 except SyntaxError, e: |
| 620 logging.info('Could not read %s: %s', config_file, str(e)) |
| 621 return config |
| 622 |
600 def _LoginToGoogleAccount(self, account_key='test_google_account'): | 623 def _LoginToGoogleAccount(self, account_key='test_google_account'): |
601 """Logs in to a test Google account. | 624 """Logs in to a test Google account. |
602 | 625 |
| 626 Login with user-defined credentials if they exist. |
| 627 Else login with private test credentials if they exist. |
| 628 Else fail. |
| 629 |
603 Args: | 630 Args: |
604 account_key: The string key associated with the test account login | 631 account_key: The string key in private_tests_info.txt which is associated |
605 credentials to use. | 632 with the test account login credentials to use. It will only |
| 633 be used when fail to load user-defined credentials. |
| 634 |
| 635 Raises: |
| 636 RuntimeError: if could not get credential information. |
606 """ | 637 """ |
607 creds = self.GetPrivateInfo()[account_key] | 638 private_file = os.path.join(pyauto.PyUITest.DataDir(), 'pyauto_private', |
608 test_utils.GoogleAccountsLogin(self, creds['username'], creds['password']) | 639 'private_tests_info.txt') |
| 640 config_file = os.path.join(os.path.dirname(__file__), 'perf.cfg') |
| 641 config = self._GetConfig() |
| 642 google_account_url = config.get('google_account_url') |
| 643 username = config.get('username') |
| 644 password = config.get('password') |
| 645 if username and password: |
| 646 logging.info( |
| 647 'Using google account credential from %s', |
| 648 os.path.join(os.path.dirname(__file__), 'perf.cfg')) |
| 649 elif os.path.exists(private_file): |
| 650 creds = self.GetPrivateInfo()[account_key] |
| 651 username = creds['username'] |
| 652 password = creds['password'] |
| 653 logging.info( |
| 654 'User-defined credentials not found,' + |
| 655 ' using private test credentials instead.') |
| 656 else: |
| 657 message = 'No user-defined or private test ' \ |
| 658 'credentials could be found. ' \ |
| 659 'Please specify credential information in %s.' \ |
| 660 % config_file |
| 661 raise RuntimeError(message) |
| 662 test_utils.GoogleAccountsLogin( |
| 663 self, username, password, url=google_account_url) |
609 self.NavigateToURL('about:blank') # Clear the existing tab. | 664 self.NavigateToURL('about:blank') # Clear the existing tab. |
610 | 665 |
611 def _GetCPUUsage(self): | 666 def _GetCPUUsage(self): |
612 """Returns machine's CPU usage. | 667 """Returns machine's CPU usage. |
613 | 668 |
614 This function uses /proc/stat to identify CPU usage, and therefore works | 669 This function uses /proc/stat to identify CPU usage, and therefore works |
615 only on Linux/ChromeOS. | 670 only on Linux/ChromeOS. |
616 | 671 |
617 Returns: | 672 Returns: |
618 A dictionary with 'user', 'nice', 'system' and 'idle' values. | 673 A dictionary with 'user', 'nice', 'system' and 'idle' values. |
(...skipping 1992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2611 """Identifies the port number to which the server is currently bound. | 2666 """Identifies the port number to which the server is currently bound. |
2612 | 2667 |
2613 Returns: | 2668 Returns: |
2614 The numeric port number to which the server is currently bound. | 2669 The numeric port number to which the server is currently bound. |
2615 """ | 2670 """ |
2616 return self._server.server_address[1] | 2671 return self._server.server_address[1] |
2617 | 2672 |
2618 | 2673 |
2619 if __name__ == '__main__': | 2674 if __name__ == '__main__': |
2620 pyauto_functional.Main() | 2675 pyauto_functional.Main() |
OLD | NEW |