Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 DEPS | |
| 6 GTestTest = DEPS['chromium_tests'].steps.GTestTest | |
| 5 | 7 |
| 6 def generate_tests(api, test_suite, revision, enable_swarming=False): | 8 def generate_tests(api, test_suite, revision, enable_swarming=False): |
|
iannucci
2016/10/24 17:25:20
I think that api.chromium_tests.steps.GTestTest wo
| |
| 7 tests = [] | 9 tests = [] |
| 8 | 10 |
| 9 if test_suite == 'webrtc': | 11 if test_suite == 'webrtc': |
| 10 for test, extra_args in sorted(api.NORMAL_TESTS.items()): | 12 for test, extra_args in sorted(api.NORMAL_TESTS.items()): |
| 11 tests.append(WebRTCTest(test, enable_swarming=enable_swarming, | 13 tests.append(WebRTCTest(test, enable_swarming=enable_swarming, |
| 12 revision=revision, **extra_args)) | 14 revision=revision, **extra_args)) |
| 13 elif test_suite == 'webrtc_baremetal': | 15 elif test_suite == 'webrtc_baremetal': |
| 14 if api.m.platform.is_linux: | 16 if api.m.platform.is_linux: |
| 15 f = api.m.path['checkout'].join | 17 f = api.m.path['checkout'].join |
| 16 tests.extend([ | 18 tests.extend([ |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 40 ]) | 42 ]) |
| 41 if not api.m.tryserver.is_tryserver: | 43 if not api.m.tryserver.is_tryserver: |
| 42 tests.append(BaremetalTest('webrtc_perf_tests', revision, perf_test=True)) | 44 tests.append(BaremetalTest('webrtc_perf_tests', revision, perf_test=True)) |
| 43 elif (test_suite == 'android_perf' and not api.m.tryserver.is_tryserver | 45 elif (test_suite == 'android_perf' and not api.m.tryserver.is_tryserver |
| 44 and api.c.PERF_ID and api.m.chromium.c.BUILD_CONFIG == 'Release'): | 46 and api.c.PERF_ID and api.m.chromium.c.BUILD_CONFIG == 'Release'): |
| 45 tests.append(AndroidPerfTest('webrtc_perf_tests', revision, | 47 tests.append(AndroidPerfTest('webrtc_perf_tests', revision, |
| 46 perf_id=api.c.PERF_ID)) | 48 perf_id=api.c.PERF_ID)) |
| 47 elif test_suite == 'android_swarming': | 49 elif test_suite == 'android_swarming': |
| 48 for test in (api.ANDROID_DEVICE_TESTS + | 50 for test in (api.ANDROID_DEVICE_TESTS + |
| 49 api.ANDROID_INSTRUMENTATION_TESTS): | 51 api.ANDROID_INSTRUMENTATION_TESTS): |
| 50 tests.append(Test(test, enable_swarming=enable_swarming)) | 52 tests.append(GTestTest(test, enable_swarming=enable_swarming, |
| 53 override_isolate_target=test)) | |
| 51 for test in api.ANDROID_JUNIT_TESTS: | 54 for test in api.ANDROID_JUNIT_TESTS: |
| 52 tests.append(AndroidJunitTest(test)) | 55 tests.append(AndroidJunitTest(test)) |
| 53 | 56 |
| 54 return tests | 57 return tests |
| 55 | 58 |
| 56 | 59 |
| 57 # TODO(kjellander): Continue refactoring an integrate the classes in the | 60 # TODO(kjellander): Continue refactoring an integrate the classes in the |
| 58 # chromium_tests recipe module instead (if possible). | 61 # chromium_tests recipe module instead (if possible). |
| 59 class Test(object): | 62 class Test(object): |
| 60 def __init__(self, name, enable_swarming=False, swarming_shards=1): | 63 def __init__(self, name, enable_swarming=False, swarming_shards=1): |
| 61 self._name = name | 64 self._name = name |
| 62 self._enable_swarming = enable_swarming | 65 self._enable_swarming = enable_swarming |
| 63 self._swarming_task = None | 66 self._swarming_task = None |
| 64 self._swarming_shards = swarming_shards | 67 self._swarming_shards = swarming_shards |
| 65 | 68 |
| 66 @property | |
| 67 def name(self): # pragma: no cover | |
| 68 return self._name | |
| 69 | |
| 70 @property | |
| 71 def enable_swarming(self): | |
| 72 return self._enable_swarming | |
| 73 | |
| 74 @property | |
| 75 def swarming_task(self): | |
| 76 return self._swarming_task | |
| 77 | |
| 78 def run_nonswarming(self, api, suffix): # pragma: no cover: | 69 def run_nonswarming(self, api, suffix): # pragma: no cover: |
| 79 raise NotImplementedError() | 70 raise NotImplementedError() |
| 80 | 71 |
| 81 def pre_run(self, api, suffix): | 72 def pre_run(self, api, suffix): |
| 82 return [] | 73 return [] |
| 83 | 74 |
| 84 def run(self, api, suffix): | 75 def run(self, api, suffix): |
| 85 if self._enable_swarming: | 76 if self._enable_swarming: |
| 86 isolated_hash = api.m.isolate.isolated_tests[self._name] | 77 isolated_hash = api.m.isolate.isolated_tests[self._name] |
| 87 self._swarming_task = api.m.swarming.task(self._name, isolated_hash, | 78 self._swarming_task = api.m.swarming.task(self._name, isolated_hash, |
| 88 shards=self._swarming_shards) | 79 shards=self._swarming_shards) |
| 89 api.m.swarming.trigger_task(self._swarming_task) | 80 api.m.swarming.trigger_task(self._swarming_task) |
| 90 else: | 81 else: |
| 91 self.run_nonswarming(api, suffix) | 82 self.run_nonswarming(api, suffix) |
| 92 | 83 |
| 93 def post_run(self, api, suffix): | 84 def post_run(self, api, suffix): |
| 94 return [] | 85 if self._enable_swarming: |
| 86 api.swarming.collect_task(self._swarming_task) | |
| 87 else: | |
| 88 return [] | |
| 95 | 89 |
| 96 class WebRTCTest(Test): | 90 class WebRTCTest(Test): |
| 97 """A normal WebRTC desktop test.""" | 91 """A normal WebRTC desktop test.""" |
| 98 def __init__(self, name, revision=None, enable_swarming=False, | 92 def __init__(self, name, revision=None, enable_swarming=False, |
| 99 swarming_shards=1, parallel=True, perf_test=False, | 93 swarming_shards=1, parallel=True, perf_test=False, |
| 100 **runtest_kwargs): | 94 **runtest_kwargs): |
| 101 super(WebRTCTest, self).__init__(name, enable_swarming, swarming_shards) | 95 super(WebRTCTest, self).__init__(name, enable_swarming, swarming_shards) |
| 102 self._revision = revision | 96 self._revision = revision |
| 103 self._parallel = parallel | 97 self._parallel = parallel |
| 104 self._perf_test = perf_test | 98 self._perf_test = perf_test |
| 105 self._runtest_kwargs = runtest_kwargs | 99 self._runtest_kwargs = runtest_kwargs |
| 106 | 100 |
| 107 def run_nonswarming(self, api, suffix): | 101 def run_nonswarming(self, api, suffix): |
| 108 self._runtest_kwargs['test'] = self._name | 102 self._runtest_kwargs['test'] = self._name |
| 109 api.add_test(name=self._name, revision=self._revision, | 103 api.add_test(name=self._name, revision=self._revision, |
| 110 parallel=self._parallel, perf_test=self._perf_test, | 104 parallel=self._parallel, perf_test=self._perf_test, |
| 111 **self._runtest_kwargs) | 105 **self._runtest_kwargs) |
| 112 | 106 |
| 113 | |
| 114 class BaremetalTest(WebRTCTest): | 107 class BaremetalTest(WebRTCTest): |
| 115 """A WebRTC desktop test that uses audio and/or video devices.""" | 108 """A WebRTC desktop test that uses audio and/or video devices.""" |
| 116 def __init__(self, name, revision, perf_test=False, **runtest_kwargs): | 109 def __init__(self, name, revision, perf_test=False, **runtest_kwargs): |
| 117 # Tests accessing hardware devices shouldn't be run in parallel. | 110 # Tests accessing hardware devices shouldn't be run in parallel. |
| 118 super(BaremetalTest, self).__init__(name, revision, parallel=False, | 111 super(BaremetalTest, self).__init__(name, revision, parallel=False, |
| 119 perf_test=perf_test, **runtest_kwargs) | 112 perf_test=perf_test, **runtest_kwargs) |
| 120 | 113 |
| 121 class AndroidJunitTest(Test): | 114 class AndroidJunitTest(Test): |
| 122 """Runs an Android Junit test.""" | 115 """Runs an Android Junit test.""" |
| 123 | 116 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 146 'run_%s' % self._name) | 139 'run_%s' % self._name) |
| 147 args = ['--verbose'] | 140 args = ['--verbose'] |
| 148 api.add_test(name=self._name, | 141 api.add_test(name=self._name, |
| 149 test=wrapper_script, | 142 test=wrapper_script, |
| 150 args=args, | 143 args=args, |
| 151 revision=self._revision, | 144 revision=self._revision, |
| 152 python_mode=True, | 145 python_mode=True, |
| 153 perf_test=True, | 146 perf_test=True, |
| 154 perf_dashboard_id=self._name) | 147 perf_dashboard_id=self._name) |
| 155 | 148 |
| OLD | NEW |