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

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

Issue 2438173004: WebRTC: Use Chromium's GTestTest for Android (Closed)
Patch Set: Get rid of import hack. Created 4 years, 1 month 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
6 def generate_tests(api, test_suite, revision, enable_swarming=False): 5 def generate_tests(api, test_suite, revision, enable_swarming=False):
7 tests = [] 6 tests = []
8 7
9 if test_suite == 'webrtc': 8 if test_suite == 'webrtc':
10 for test, extra_args in sorted(api.NORMAL_TESTS.items()): 9 for test, extra_args in sorted(api.NORMAL_TESTS.items()):
11 tests.append(WebRTCTest(test, enable_swarming=enable_swarming, 10 tests.append(WebRTCTest(test, enable_swarming=enable_swarming,
12 revision=revision, **extra_args)) 11 revision=revision, **extra_args))
13 elif test_suite == 'webrtc_baremetal': 12 elif test_suite == 'webrtc_baremetal':
14 if api.m.platform.is_linux: 13 if api.m.platform.is_linux:
15 f = api.m.path['checkout'].join 14 f = api.m.path['checkout'].join
(...skipping 16 matching lines...) Expand all
32 BaremetalTest('voe_auto_test', revision, args=['--automated']), 31 BaremetalTest('voe_auto_test', revision, args=['--automated']),
33 BaremetalTest('video_capture_tests', revision), 32 BaremetalTest('video_capture_tests', revision),
34 ]) 33 ])
35 if not api.m.tryserver.is_tryserver: 34 if not api.m.tryserver.is_tryserver:
36 tests.append(BaremetalTest('webrtc_perf_tests', revision, perf_test=True)) 35 tests.append(BaremetalTest('webrtc_perf_tests', revision, perf_test=True))
37 elif (test_suite == 'android_perf' and not api.m.tryserver.is_tryserver 36 elif (test_suite == 'android_perf' and not api.m.tryserver.is_tryserver
38 and api.c.PERF_ID and api.m.chromium.c.BUILD_CONFIG == 'Release'): 37 and api.c.PERF_ID and api.m.chromium.c.BUILD_CONFIG == 'Release'):
39 tests.append(AndroidPerfTest('webrtc_perf_tests', revision, 38 tests.append(AndroidPerfTest('webrtc_perf_tests', revision,
40 perf_id=api.c.PERF_ID)) 39 perf_id=api.c.PERF_ID))
41 elif test_suite == 'android_swarming': 40 elif test_suite == 'android_swarming':
41 GTestTest = api.m.chromium_tests.steps.GTestTest
ehmaldonado_chromium 2016/10/25 08:00:23 Is this OK? Using api.m.chromium_tests.steps.GTest
kjellander_chromium 2016/10/25 08:34:26 I prefer this, yes.
42 for test in (api.ANDROID_DEVICE_TESTS + 42 for test in (api.ANDROID_DEVICE_TESTS +
43 api.ANDROID_INSTRUMENTATION_TESTS): 43 api.ANDROID_INSTRUMENTATION_TESTS):
44 tests.append(Test(test, enable_swarming=enable_swarming)) 44 tests.append(GTestTest(test, enable_swarming=enable_swarming,
45 override_isolate_target=test))
45 for test in api.ANDROID_JUNIT_TESTS: 46 for test in api.ANDROID_JUNIT_TESTS:
46 tests.append(AndroidJunitTest(test)) 47 tests.append(AndroidJunitTest(test))
47 48
48 return tests 49 return tests
49 50
50 51
51 # TODO(kjellander): Continue refactoring an integrate the classes in the 52 # TODO(kjellander): Continue refactoring an integrate the classes in the
52 # chromium_tests recipe module instead (if possible). 53 # chromium_tests recipe module instead (if possible).
53 class Test(object): 54 class Test(object):
54 def __init__(self, name, enable_swarming=False, swarming_shards=1): 55 def __init__(self, name, enable_swarming=False, swarming_shards=1):
55 self._name = name 56 self._name = name
56 self._enable_swarming = enable_swarming 57 self._enable_swarming = enable_swarming
57 self._swarming_task = None 58 self._swarming_task = None
58 self._swarming_shards = swarming_shards 59 self._swarming_shards = swarming_shards
59 60
60 @property
61 def name(self): # pragma: no cover
62 return self._name
63
64 @property
65 def enable_swarming(self):
66 return self._enable_swarming
67
68 @property
69 def swarming_task(self):
70 return self._swarming_task
71
72 def run_nonswarming(self, api, suffix): # pragma: no cover: 61 def run_nonswarming(self, api, suffix): # pragma: no cover:
73 raise NotImplementedError() 62 raise NotImplementedError()
74 63
75 def pre_run(self, api, suffix): 64 def pre_run(self, api, suffix):
76 return [] 65 return []
77 66
78 def run(self, api, suffix): 67 def run(self, api, suffix):
79 if self._enable_swarming: 68 if self._enable_swarming:
80 isolated_hash = api.m.isolate.isolated_tests[self._name] 69 isolated_hash = api.m.isolate.isolated_tests[self._name]
81 self._swarming_task = api.m.swarming.task(self._name, isolated_hash, 70 self._swarming_task = api.m.swarming.task(self._name, isolated_hash,
82 shards=self._swarming_shards) 71 shards=self._swarming_shards)
83 api.m.swarming.trigger_task(self._swarming_task) 72 api.m.swarming.trigger_task(self._swarming_task)
84 else: 73 else:
85 self.run_nonswarming(api, suffix) 74 self.run_nonswarming(api, suffix)
86 75
87 def post_run(self, api, suffix): 76 def post_run(self, api, suffix):
88 return [] 77 if self._enable_swarming:
78 api.swarming.collect_task(self._swarming_task)
79 else:
80 return []
89 81
90 class WebRTCTest(Test): 82 class WebRTCTest(Test):
91 """A normal WebRTC desktop test.""" 83 """A normal WebRTC desktop test."""
92 def __init__(self, name, revision=None, enable_swarming=False, 84 def __init__(self, name, revision=None, enable_swarming=False,
93 swarming_shards=1, parallel=True, perf_test=False, 85 swarming_shards=1, parallel=True, perf_test=False,
94 **runtest_kwargs): 86 **runtest_kwargs):
95 super(WebRTCTest, self).__init__(name, enable_swarming, swarming_shards) 87 super(WebRTCTest, self).__init__(name, enable_swarming, swarming_shards)
96 self._revision = revision 88 self._revision = revision
97 self._parallel = parallel 89 self._parallel = parallel
98 self._perf_test = perf_test 90 self._perf_test = perf_test
99 self._runtest_kwargs = runtest_kwargs 91 self._runtest_kwargs = runtest_kwargs
100 92
101 def run_nonswarming(self, api, suffix): 93 def run_nonswarming(self, api, suffix):
102 self._runtest_kwargs['test'] = self._name 94 self._runtest_kwargs['test'] = self._name
103 api.add_test(name=self._name, revision=self._revision, 95 api.add_test(name=self._name, revision=self._revision,
104 parallel=self._parallel, perf_test=self._perf_test, 96 parallel=self._parallel, perf_test=self._perf_test,
105 **self._runtest_kwargs) 97 **self._runtest_kwargs)
106 98
107
108 class BaremetalTest(WebRTCTest): 99 class BaremetalTest(WebRTCTest):
109 """A WebRTC desktop test that uses audio and/or video devices.""" 100 """A WebRTC desktop test that uses audio and/or video devices."""
110 def __init__(self, name, revision, perf_test=False, **runtest_kwargs): 101 def __init__(self, name, revision, perf_test=False, **runtest_kwargs):
111 # Tests accessing hardware devices shouldn't be run in parallel. 102 # Tests accessing hardware devices shouldn't be run in parallel.
112 super(BaremetalTest, self).__init__(name, revision, parallel=False, 103 super(BaremetalTest, self).__init__(name, revision, parallel=False,
113 perf_test=perf_test, **runtest_kwargs) 104 perf_test=perf_test, **runtest_kwargs)
114 105
115 class AndroidJunitTest(Test): 106 class AndroidJunitTest(Test):
116 """Runs an Android Junit test.""" 107 """Runs an Android Junit test."""
117 108
(...skipping 22 matching lines...) Expand all
140 'run_%s' % self._name) 131 'run_%s' % self._name)
141 args = ['--verbose'] 132 args = ['--verbose']
142 api.add_test(name=self._name, 133 api.add_test(name=self._name,
143 test=wrapper_script, 134 test=wrapper_script,
144 args=args, 135 args=args,
145 revision=self._revision, 136 revision=self._revision,
146 python_mode=True, 137 python_mode=True,
147 perf_test=True, 138 perf_test=True,
148 perf_dashboard_id=self._name) 139 perf_dashboard_id=self._name)
149 140
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698