OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 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 """Contains test runners for launching tests on simulators and devices.""" | 6 """Contains test runners for launching tests on simulators and devices.""" |
7 | 7 |
8 # pylint: disable=relative-import | 8 # pylint: disable=relative-import |
9 import environment_setup | 9 import environment_setup |
10 | 10 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 raise XcodeVersionNotFoundError(xcode_version) | 148 raise XcodeVersionNotFoundError(xcode_version) |
149 | 149 |
150 self.gs_bucket = gs_bucket | 150 self.gs_bucket = gs_bucket |
151 self.perf_bot_name = perf_bot_name | 151 self.perf_bot_name = perf_bot_name |
152 self.perf_master_name = perf_master_name | 152 self.perf_master_name = perf_master_name |
153 self.perf_revision = perf_revision | 153 self.perf_revision = perf_revision |
154 self.perf_build_number = perf_build_number | 154 self.perf_build_number = perf_build_number |
155 self.perf_builder_name = perf_builder_name | 155 self.perf_builder_name = perf_builder_name |
156 self.perf_x_value = perf_x_value | 156 self.perf_x_value = perf_x_value |
157 self.test_args = test_args or [] | 157 self.test_args = test_args or [] |
| 158 self.xcode_version = xcode_version |
158 | 159 |
159 self.summary = { | 160 self.summary = { |
160 'links': collections.OrderedDict(), | 161 'links': collections.OrderedDict(), |
161 'logs': collections.OrderedDict(), | 162 'logs': collections.OrderedDict(), |
162 } | 163 } |
163 | 164 |
164 @staticmethod | 165 @staticmethod |
165 def Print(message, blank_lines=0, time_to_sleep=0): | 166 def Print(message, blank_lines=0, time_to_sleep=0): |
166 """Prints a message. | 167 """Prints a message. |
167 | 168 |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 '-c', 'Print:CFBundleIdentifier', | 481 '-c', 'Print:CFBundleIdentifier', |
481 os.path.join(self.app_path, 'Info.plist'), | 482 os.path.join(self.app_path, 'Info.plist'), |
482 ).stdout[0] | 483 ).stdout[0] |
483 | 484 |
484 self.iossim_path = iossim_path | 485 self.iossim_path = iossim_path |
485 self.platform = platform | 486 self.platform = platform |
486 self.version = version | 487 self.version = version |
487 self.timeout = '120' | 488 self.timeout = '120' |
488 self.homedir = '' | 489 self.homedir = '' |
489 self.start_time = None | 490 self.start_time = None |
| 491 self.xcode_version = xcode_version |
490 | 492 |
491 def SetStartTime(self): | 493 def SetStartTime(self): |
492 """Sets the start time, for finding crash reports during this run.""" | 494 """Sets the start time, for finding crash reports during this run.""" |
493 # Crash reports have a timestamp in their filename, formatted as | 495 # Crash reports have a timestamp in their filename, formatted as |
494 # YYYY-MM-DD-HHMMSS. | 496 # YYYY-MM-DD-HHMMSS. |
495 self.start_time = time.strftime('%Y-%m-%d-%H%M%S', time.localtime()) | 497 self.start_time = time.strftime('%Y-%m-%d-%H%M%S', time.localtime()) |
496 | 498 |
497 def CreateNewHomeDirectory(self): | 499 def CreateNewHomeDirectory(self): |
498 """Creates a new home directory for the simulator.""" | 500 """Creates a new home directory for the simulator.""" |
499 self.homedir = tempfile.mkdtemp() | 501 if self.xcode_version == '8.0': |
| 502 cmd = [ |
| 503 self.iossim_path, |
| 504 '-d', self.platform, |
| 505 '-s', self.version, |
| 506 '-w' |
| 507 ] |
| 508 subprocess.check_output(cmd) |
| 509 cmd = [ |
| 510 self.iossim_path, |
| 511 '-d', self.platform, |
| 512 '-s', self.version, |
| 513 '-p' |
| 514 ] |
| 515 self.homedir = subprocess.check_output(cmd) |
| 516 else: |
| 517 self.homedir = tempfile.mkdtemp() |
| 518 |
500 | 519 |
501 def RemoveHomeDirectory(self): | 520 def RemoveHomeDirectory(self): |
502 """Recursively removes the home directory being used by the simulator.""" | 521 """Recursively removes the home directory being used by the simulator.""" |
503 if os.path.exists(self.homedir): | 522 if self.xcode_version == '8.0': |
504 shutil.rmtree(self.homedir, ignore_errors=True) | 523 cmd = [ |
| 524 self.iossim_path, |
| 525 '-d', self.platform, |
| 526 '-s', self.version, |
| 527 '-w' |
| 528 ] |
| 529 subprocess.check_output(cmd) |
505 self.homedir = '' | 530 self.homedir = '' |
| 531 else: |
| 532 if os.path.exists(self.homedir): |
| 533 shutil.rmtree(self.homedir, ignore_errors=True) |
| 534 self.homedir = '' |
506 | 535 |
507 def KillSimulators(self): | 536 def KillSimulators(self): |
508 """Forcibly kills any running iOS simulator instances.""" | 537 """Forcibly kills any running iOS simulator instances.""" |
509 kill_cmd = [ | 538 kill_cmd = [ |
510 'pkill', | 539 'pkill', |
511 '-9', | 540 '-9', |
512 '-x', | 541 '-x', |
513 # The iOS simulator has a different name depending on the Xcode version. | 542 # The iOS simulator has a different name depending on the Xcode version. |
514 'iPhone Simulator', # Xcode 5 | 543 'iPhone Simulator', # Xcode 5 |
515 'iOS Simulator', # Xcode 6 | 544 'iOS Simulator', # Xcode 6 |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 blacklist: Whether to blacklist the elements of test_filter or not. Only | 704 blacklist: Whether to blacklist the elements of test_filter or not. Only |
676 works when test_filter is not None. | 705 works when test_filter is not None. |
677 | 706 |
678 Returns: | 707 Returns: |
679 A list whose elements are the args representing the command. | 708 A list whose elements are the args representing the command. |
680 """ | 709 """ |
681 cmd = [ | 710 cmd = [ |
682 self.iossim_path, | 711 self.iossim_path, |
683 '-d', self.platform, | 712 '-d', self.platform, |
684 '-s', self.version, | 713 '-s', self.version, |
685 '-t', self.timeout, | |
686 '-u', self.homedir, | |
687 ] | 714 ] |
688 args = [] | 715 args = [] |
689 | 716 |
| 717 if self.xcode_version != '8.0': |
| 718 cmd.extend([ |
| 719 '-t', self.timeout, |
| 720 '-u', self.homedir |
| 721 ]) |
| 722 |
690 if test_filter is not None: | 723 if test_filter is not None: |
691 kif_filter = self.GetKIFTestFilter(test_filter, blacklist) | 724 kif_filter = self.GetKIFTestFilter(test_filter, blacklist) |
692 gtest_filter = self.GetGTestFilter(test_filter, blacklist) | 725 gtest_filter = self.GetGTestFilter(test_filter, blacklist) |
693 | 726 |
694 cmd.extend([ | 727 cmd.extend([ |
695 '-e', 'GKIF_SCENARIO_FILTER=%s' % kif_filter, | 728 '-e', 'GKIF_SCENARIO_FILTER=%s' % kif_filter, |
696 ]) | 729 ]) |
697 args.append('--gtest_filter=%s' % gtest_filter) | 730 |
| 731 if self.xcode_version == '8.0': |
| 732 cmd.extend([ |
| 733 '-c', '--gtest_filter=%s' % gtest_filter, |
| 734 ]) |
| 735 else: |
| 736 args.append('--gtest_filter=%s' % gtest_filter) |
698 | 737 |
699 cmd.append(self.app_path) | 738 cmd.append(self.app_path) |
700 cmd.extend(self.test_args) | 739 cmd.extend(self.test_args) |
701 cmd.extend(args) | 740 cmd.extend(args) |
702 return cmd | 741 return cmd |
703 | 742 |
704 @TestRunner.RequireTearDown | 743 @TestRunner.RequireTearDown |
705 def Launch(self, *args, **kwargs): | 744 def Launch(self, *args, **kwargs): |
706 """Launches the test.""" | 745 """Launches the test.""" |
707 self.SetUp() | 746 self.SetUp() |
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1389 ) | 1428 ) |
1390 | 1429 |
1391 # Uninstall and re-install the app. | 1430 # Uninstall and re-install the app. |
1392 self.UninstallApp() | 1431 self.UninstallApp() |
1393 self.InstallApp() | 1432 self.InstallApp() |
1394 | 1433 |
1395 result = self._Run( | 1434 result = self._Run( |
1396 self.GetLaunchCommand(), self.GetLaunchEnvironment(), *args, **kwargs) | 1435 self.GetLaunchCommand(), self.GetLaunchEnvironment(), *args, **kwargs) |
1397 | 1436 |
1398 return self.RunAllTests(result, *args, **kwargs) | 1437 return self.RunAllTests(result, *args, **kwargs) |
OLD | NEW |