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

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

Issue 873403002: Add support for cc_perftests and other non-telemetry gtest based tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Use template string. Created 5 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 re 5 import re
6 6
7 7
8 class Test(object): 8 class Test(object):
9 """ 9 """
10 Base class for tests that can be retried after deapplying a previously 10 Base class for tests that can be retried after deapplying a previously
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 96
97 This makes it possible to keep the logic src-side as opposed 97 This makes it possible to keep the logic src-side as opposed
98 to the build repo most Chromium developers are unfamiliar with. 98 to the build repo most Chromium developers are unfamiliar with.
99 99
100 Another advantage is being to test changes to these scripts 100 Another advantage is being to test changes to these scripts
101 on trybots. 101 on trybots.
102 102
103 All new tests are strongly encouraged to use this infrastructure. 103 All new tests are strongly encouraged to use this infrastructure.
104 """ 104 """
105 105
106 def __init__(self, name, script, all_compile_targets): 106 def __init__(self, name, script, all_compile_targets, script_args=None):
107 super(ScriptTest, self).__init__() 107 super(ScriptTest, self).__init__()
108 self._name = name 108 self._name = name
109 self._script = script 109 self._script = script
110 self._all_compile_targets = all_compile_targets 110 self._all_compile_targets = all_compile_targets
111 self._script_args = script_args
111 112
112 @property 113 @property
113 def name(self): 114 def name(self):
114 return self._name 115 return self._name
115 116
116 def compile_targets(self, api): 117 def compile_targets(self, api):
117 try: 118 try:
118 return self._all_compile_targets[self._script] 119 target_name = self._name
Paweł Hajdan Jr. 2015/02/11 08:24:03 This is not target name, but test/step name. Real
shatch 2015/02/12 20:46:32 Ok, checked for script args and take the target na
120 if api.chromium.c.TARGET_PLATFORM == 'android':
121 target_name += '_apk'
Paweł Hajdan Jr. 2015/02/11 08:24:03 Similarly, this logic does not belong here. Just r
shatch 2015/02/12 20:46:32 Made a change in the other CL to add the _apk.
122
123 return [string.Template(s).safe_substitute({'name': target_name})
Paweł Hajdan Jr. 2015/02/11 08:24:03 Did you run this locally? I'd expect a NameError f
shatch 2015/02/12 20:46:32 Oops, not sure how I lost that.
124 for s in self._all_compile_targets[self._script]]
119 except KeyError: 125 except KeyError:
120 # Not all scripts will have test data inside recipes, 126 # Not all scripts will have test data inside recipes,
121 # so return a default value. 127 # so return a default value.
122 # TODO(phajdan.jr): Revisit this when all script tests 128 # TODO(phajdan.jr): Revisit this when all script tests
123 # lists move src-side. We should be able to provide 129 # lists move src-side. We should be able to provide
124 # test data then. 130 # test data then.
125 if api.chromium._test_data.enabled: 131 if api.chromium._test_data.enabled:
126 return [] 132 return []
127 133
128 raise 134 raise
129 135
130 def run(self, api, suffix): 136 def run(self, api, suffix):
131 name = self.name 137 name = self.name
132 if suffix: 138 if suffix:
133 name += ' (%s)' % suffix 139 name += ' (%s)' % suffix
134 140
135 run_args = [] 141 run_args = []
136 if suffix == 'without patch': 142 if suffix == 'without patch':
137 run_args.extend([ 143 run_args.extend([
138 '--filter-file', api.json.input(self.failures(api, 'with patch')) 144 '--filter-file', api.json.input(self.failures(api, 'with patch'))
139 ]) 145 ])
140 146
141 try: 147 try:
148 script_args = []
149 if self._script_args:
150 script_args = ['--args', api.json.input(self._script_args)]
142 api.python( 151 api.python(
143 name, 152 name,
144 # Enforce that all scripts are in the specified directory 153 # Enforce that all scripts are in the specified directory
145 # for consistency. 154 # for consistency.
146 api.path['checkout'].join( 155 api.path['checkout'].join(
147 'testing', 'scripts', api.path.basename(self._script)), 156 'testing', 'scripts', api.path.basename(self._script)),
148 args=(api.chromium.get_common_args_for_scripts() + 157 args=(api.chromium.get_common_args_for_scripts() +
158 script_args +
149 ['run', '--output', api.json.output()] + 159 ['run', '--output', api.json.output()] +
150 run_args), 160 run_args),
151 step_test_data=lambda: api.json.test_api.output( 161 step_test_data=lambda: api.json.test_api.output(
152 {'valid': True, 'failures': []})) 162 {'valid': True, 'failures': []}))
153 finally: 163 finally:
154 self._test_runs[suffix] = api.step.active_result 164 self._test_runs[suffix] = api.step.active_result
155 165
156 return self._test_runs[suffix] 166 return self._test_runs[suffix]
157 167
158 def has_valid_results(self, api, suffix): 168 def has_valid_results(self, api, suffix):
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 enable_swarming=use_swarming, 327 enable_swarming=use_swarming,
318 swarming_shards=swarming_shards) 328 swarming_shards=swarming_shards)
319 329
320 330
321 def generate_script(api, mastername, buildername, test_spec, 331 def generate_script(api, mastername, buildername, test_spec,
322 enable_swarming=False, scripts_compile_targets=None): 332 enable_swarming=False, scripts_compile_targets=None):
323 for script_spec in test_spec.get(buildername, {}).get('scripts', []): 333 for script_spec in test_spec.get(buildername, {}).get('scripts', []):
324 yield ScriptTest( 334 yield ScriptTest(
325 str(script_spec['name']), 335 str(script_spec['name']),
326 script_spec['script'], 336 script_spec['script'],
327 scripts_compile_targets) 337 scripts_compile_targets,
338 script_spec.get('args', []))
328 339
329 340
330 class DynamicPerfTests(Test): 341 class DynamicPerfTests(Test):
331 def __init__(self, browser, perf_id, shard_index, num_shards): 342 def __init__(self, browser, perf_id, shard_index, num_shards):
332 self.browser = browser 343 self.browser = browser
333 self.perf_id = perf_id 344 self.perf_id = perf_id
334 self.shard_index = shard_index 345 self.shard_index = shard_index
335 self.num_shards = num_shards 346 self.num_shards = num_shards
336 347
337 @property 348 @property
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 GTestTest('crypto_unittests'), 1050 GTestTest('crypto_unittests'),
1040 GTestTest('gfx_unittests'), 1051 GTestTest('gfx_unittests'),
1041 GTestTest('url_unittests'), 1052 GTestTest('url_unittests'),
1042 GTestTest('content_unittests'), 1053 GTestTest('content_unittests'),
1043 GTestTest('net_unittests'), 1054 GTestTest('net_unittests'),
1044 GTestTest('ui_base_unittests'), 1055 GTestTest('ui_base_unittests'),
1045 GTestTest('ui_ios_unittests'), 1056 GTestTest('ui_ios_unittests'),
1046 GTestTest('sync_unit_tests'), 1057 GTestTest('sync_unit_tests'),
1047 GTestTest('sql_unittests'), 1058 GTestTest('sql_unittests'),
1048 ] 1059 ]
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698