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

Side by Side Diff: scripts/slave/recipe_modules/webrtc/steps.py

Issue 2438173004: WebRTC: Use Chromium's GTestTest for Android (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698