| 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 json | 5 import json |
| 6 | 6 |
| 7 DEPS = [ | 7 DEPS = [ |
| 8 'auto_bisect', | 8 'auto_bisect', |
| 9 'chromium', |
| 9 'chromium_tests', | 10 'chromium_tests', |
| 10 'recipe_engine/json', | 11 'recipe_engine/json', |
| 12 'depot_tools/gclient', |
| 11 'recipe_engine/path', | 13 'recipe_engine/path', |
| 14 'recipe_engine/platform', |
| 12 'recipe_engine/properties', | 15 'recipe_engine/properties', |
| 13 'recipe_engine/raw_io', | 16 'recipe_engine/raw_io', |
| 14 'recipe_engine/step', | 17 'recipe_engine/step', |
| 15 ] | 18 ] |
| 16 | 19 |
| 17 """This file is a recipe demonstrating the auto_bisect recipe module. | 20 """This file is a recipe demonstrating the auto_bisect recipe module. |
| 18 | 21 |
| 19 For more information about recipes, see: https://goo.gl/xKnjz6 | 22 For more information about recipes, see: https://goo.gl/xKnjz6 |
| 20 """ | 23 """ |
| 21 | 24 |
| 22 | 25 |
| 23 def RunSteps(api): | 26 def RunSteps(api): |
| 24 fake_checkout_path = api.path.mkdtemp('fake_checkout') | 27 # Dupe of bisection/desktop_bisect recipe. |
| 25 api.path['checkout'] = fake_checkout_path | 28 mastername = api.properties.get('mastername') |
| 26 bisector = api.auto_bisect.create_bisector(api.properties['bisect_config'], | 29 buildername = api.properties.get('buildername') |
| 27 do_not_nest_wait_for_revision=True) | 30 bot_config = api.chromium_tests.create_bot_config_object(mastername, |
| 28 | 31 buildername) |
| 29 # Request builds and tests for initial range and wait. | 32 api.chromium_tests.configure_build(bot_config) |
| 30 bisector.good_rev.start_job() | 33 api.gclient.apply_config('perf') |
| 31 bisector.bad_rev.start_job() | 34 api.gclient.c.got_revision_mapping.pop('catapult', None) |
| 32 bisector.wait_for_all([bisector.good_rev, bisector.bad_rev]) | 35 update_step, bot_db = api.chromium_tests.prepare_checkout(bot_config) |
| 33 | 36 api.path.c.dynamic_paths['catapult'] = api.auto_bisect.working_dir.join( |
| 34 if bisector.good_rev.failed or bisector.bad_rev.failed: | 37 'catapult') |
| 35 return | 38 api.auto_bisect.start_try_job(api, update_step=update_step, bot_db=bot_db, |
| 36 | 39 do_not_nest_wait_for_revision=True) |
| 37 assert bisector.check_improvement_direction() | |
| 38 assert bisector.check_initial_confidence() | |
| 39 revision_to_check = bisector.get_revision_to_eval() | |
| 40 revision_to_check.start_job() | |
| 41 bisector.wait_for(revision_to_check) | |
| 42 bisector.check_bisect_finished(revision_to_check) | |
| 43 | |
| 44 # Evaluate inserted DEPS-modified revisions. | |
| 45 revision_to_check = bisector.get_revision_to_eval() | |
| 46 if revision_to_check: | |
| 47 revision_to_check.start_job() | |
| 48 # Only added for coverage. | |
| 49 revision_to_check.read_deps(bisector.get_perf_tester_name()) | |
| 50 api.auto_bisect.query_revision_info(revision_to_check) | |
| 51 else: | |
| 52 raise api.step.StepFailure('Expected revision to check.') | |
| 53 # TODO(robertocn): Add examples for the following operations: | |
| 54 # Abort unnecessary jobs | |
| 55 # Print results (may be done in a unit test) | |
| 56 | |
| 57 # Test runner for classic bisect script; calls bisect script in recipe | |
| 58 # wrapper with extra_src and path_to_config to override default behavior for | |
| 59 # android-chrome bisect jobs. | |
| 60 if api.properties.get('mastername'): | |
| 61 # TODO(akuegel): Load the config explicitly instead of relying on the | |
| 62 # builders.py entries in chromium_tests. | |
| 63 mastername = api.properties.get('mastername') | |
| 64 buildername = api.properties.get('buildername') | |
| 65 bot_config = api.chromium_tests.create_bot_config_object( | |
| 66 mastername, buildername) | |
| 67 api.chromium_tests.configure_build(bot_config) | |
| 68 api.chromium_tests.prepare_checkout(bot_config) | |
| 69 kwargs = { | |
| 70 'extra_src': 'dummy_extra_src', | |
| 71 'path_to_config': '/dummy/path/', | |
| 72 } | |
| 73 api.auto_bisect.run_bisect_script(**kwargs) | |
| 74 | |
| 75 | 40 |
| 76 def GenTests(api): | 41 def GenTests(api): |
| 77 dummy_gs_location = ('gs://chrome-perf/bisect-results/' | 42 yield ( |
| 78 'a6298e4afedbf2cd461755ea6f45b0ad64222222-test.results') | 43 api.test('basic_linux_bisect') |
| 79 basic_test = _make_test(api, _get_basic_test_data(), 'basic') | 44 + api.properties( |
| 80 yield basic_test | 45 mastername='tryserver.chromium.perf', |
| 81 | 46 buildername='linux_perf_bisect', |
| 82 invalid_config_test = api.test('invalid_config') | 47 slavename='dummyslave', |
| 83 invalid_config_test += api.properties( | 48 buildnumber=571, |
| 84 bisect_config=_get_config({'good_revision': 'not a valid revision'})) | 49 bisect_config={ |
| 85 yield invalid_config_test | 50 'test_type': 'perf', |
| 86 | 51 'command': |
| 87 failed_build_test = _make_test( | 52 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 88 api, _get_ref_range_only_test_data(), 'failed_build_test', | 53 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 89 extra_config={'dummy_builds': None}) | 54 'good_revision': '314015', |
| 90 failed_build_test += api.step_data('gsutil ls', retcode=1) | 55 'bad_revision': '314017', |
| 91 failed_build_test += api.step_data('gsutil ls (2)' , retcode=1) | 56 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 92 failed_build_test += api.step_data('gsutil ls (3)' , retcode=1) | 57 'bug_id': '-1', |
| 93 failed_build_test += api.step_data( | 58 'gs_bucket': 'chrome-perf', |
| 94 'buildbucket.get', stdout=api.json.output( | 59 'dummy_tests': 'True', |
| 95 {'build':{'status': 'COMPLETE', 'result': 'FAILED'}})) | 60 'dummy_job_names': 'True', |
| 96 yield failed_build_test | 61 'bypass_stats_check': 'True', |
| 97 | 62 'skip_gclient_ops': 'True', |
| 98 | 63 'recipe_tester_name': 'linux_perf_tester' |
| 99 delayed_build_test = _make_test( | 64 }) |
| 100 api, _get_ref_range_only_test_data(), 'delayed_build_test', | 65 + api.auto_bisect([ |
| 101 extra_config={'dummy_builds': None}) | 66 { |
| 102 delayed_build_test += api.step_data('gsutil ls', retcode=1) | 67 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 103 delayed_build_test += api.step_data('gsutil ls (2)', retcode=1) | 68 'commit_pos': '314015', |
| 104 delayed_build_test += api.step_data('gsutil ls (3)', retcode=1) | 69 'parsed_values': [19, 20, 23], |
| 105 delayed_build_test += api.step_data('gsutil ls (4)', retcode=1) | 70 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 106 delayed_build_test += api.step_data('gsutil ls (5)', retcode=1) | 71 'gsutil_exists': 10 * [False] |
| 107 delayed_build_test += api.step_data('gsutil ls (6)', retcode=1) | 72 }, |
| 108 delayed_build_test += api.step_data( | 73 { |
| 109 'buildbucket.get', stdout=api.json.output( | 74 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 110 {'build':{'status': 'PENDING'}})) | 75 'commit_pos': '314016', |
| 111 yield delayed_build_test | 76 'parsed_values': [12, 13, 16], |
| 112 | 77 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 113 missing_metric_test = _make_test( | 78 'gsutil_exists': [True], |
| 114 api, _get_ref_range_only_missing_metric_test_data(), | 79 'cl_info': { |
| 115 'missing_metric_test') | 80 'author': 'DummyAuthor', |
| 116 yield missing_metric_test | 81 'email': 'dummy@nowhere.com', |
| 117 | 82 'subject': 'Some random CL', |
| 118 windows_test = _make_test( | 83 'date': '01/01/2015', |
| 119 api, _get_basic_test_data(), 'windows_bisector', platform='windows') | 84 'body': ('A long description for a CL.\n' |
| 120 yield windows_test | 85 'Containing multiple lines'), |
| 121 | |
| 122 winx64_test = _make_test( | |
| 123 api, _get_basic_test_data(), 'windows_x64_bisector', platform='win_x64') | |
| 124 yield winx64_test | |
| 125 | |
| 126 mac_test = _make_test( | |
| 127 api, _get_basic_test_data(), 'mac_bisector', platform='mac') | |
| 128 yield mac_test | |
| 129 | |
| 130 android_test = _make_test( | |
| 131 api, _get_basic_test_data(), 'android_bisector', platform='android') | |
| 132 yield android_test | |
| 133 | |
| 134 android_arm64_test = _make_test( | |
| 135 api, _get_basic_test_data(), 'android_arm64_bisector', | |
| 136 platform='android_arm64') | |
| 137 yield android_arm64_test | |
| 138 | |
| 139 failed_data = _get_basic_test_data() | |
| 140 failed_data[0].pop('DEPS') | |
| 141 failed_data[1]['test_results']['results']['errors'] = ['Dummy error.'] | |
| 142 failed_data[1].pop('DEPS_change') | |
| 143 failed_data[1].pop('DEPS') | |
| 144 failed_data[1].pop('DEPS_interval') | |
| 145 failed_data[0].pop('git_diff') | |
| 146 failed_data[0].pop('cl_info') | |
| 147 yield _make_test(api, failed_data, 'failed_test') | |
| 148 | |
| 149 yield _make_test(api, _get_reversed_basic_test_data(), 'reversed_basic') | |
| 150 | |
| 151 bad_git_hash_data = _get_basic_test_data() | |
| 152 bad_git_hash_data[1]['interned_hashes'] = {'003': '12345', '002': 'Bad Hash'} | |
| 153 | |
| 154 bisect_script_test = _make_test( | |
| 155 api, _get_basic_test_data(), 'basic_bisect_script') | |
| 156 | |
| 157 yield bisect_script_test | |
| 158 | |
| 159 | |
| 160 def _get_ref_range_only_test_data(): | |
| 161 return [ | |
| 162 { | |
| 163 'refrange': True, | |
| 164 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', | |
| 165 'commit_pos': '314015', | |
| 166 'fail_to_build': True, | |
| 167 }, | |
| 168 { | |
| 169 'refrange': True, | |
| 170 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', | |
| 171 'commit_pos': '314017', | |
| 172 }, | |
| 173 ] | |
| 174 | |
| 175 | |
| 176 def _get_ref_range_only_missing_metric_test_data(): | |
| 177 return [ | |
| 178 { | |
| 179 'refrange': True, | |
| 180 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', | |
| 181 'commit_pos': '314015', | |
| 182 'test_results': { | |
| 183 'results': { | |
| 184 'values': [], | |
| 185 }, | 86 }, |
| 186 'retcodes': [0], | 87 }, |
| 187 } | 88 { |
| 188 }, | 89 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 189 { | 90 'commit_pos': '314017', |
| 190 'refrange': True, | 91 'parsed_values': [12, 13, 14, 15, 16], |
| 191 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', | 92 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 192 'commit_pos': '314017', | 93 }])) |
| 193 'test_results': { | 94 yield ( |
| 194 'results': { | 95 api.test('basic_win64_bisect') |
| 195 'values': [], | 96 + api.platform('win', 64) |
| 97 + api.properties( |
| 98 mastername='tryserver.chromium.perf', |
| 99 buildername='winx64_zen_perf_bisect', |
| 100 slavename='dummyslave', |
| 101 buildnumber=571, |
| 102 bisect_config={ |
| 103 'test_type': 'perf', |
| 104 'command': |
| 105 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 106 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 107 'good_revision': '314015', |
| 108 'bad_revision': '314017', |
| 109 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 110 'bug_id': '-1', |
| 111 'gs_bucket': 'chrome-perf', |
| 112 'dummy_builds': 'True', |
| 113 'dummy_tests': 'True', |
| 114 'dummy_job_names': 'True', |
| 115 'bypass_stats_check': 'True', |
| 116 'skip_gclient_ops': 'True', |
| 117 'recipe_tester_name': 'winx64_perf_tester' |
| 118 }) |
| 119 + api.auto_bisect([ |
| 120 { |
| 121 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 122 'commit_pos': '314015', |
| 123 'parsed_values': [19, 20, 21, 22, 23], |
| 124 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 125 'gsutil_exists': 5 * [False] |
| 126 }, |
| 127 { |
| 128 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 129 'commit_pos': '314016', |
| 130 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 131 'cl_info': { |
| 132 'author': 'DummyAuthor', |
| 133 'email': 'dummy@nowhere.com', |
| 134 'subject': 'Some random CL', |
| 135 'date': '01/01/2015', |
| 136 'body': ('A long description for a CL.\n' |
| 137 'Containing multiple lines'), |
| 196 }, | 138 }, |
| 197 'retcodes': [0], | 139 }, |
| 198 } | 140 { |
| 199 }, | 141 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 200 ] | 142 'commit_pos': '314017', |
| 201 | 143 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 202 | 144 }])) |
| 203 def _get_basic_test_data(): | 145 yield ( |
| 204 return [ | 146 api.test('basic_win32_bisect') |
| 205 { | 147 + api.platform('win', 32) |
| 206 'refrange': True, | 148 + api.properties( |
| 207 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', | 149 mastername='tryserver.chromium.perf', |
| 208 'commit_pos': '314015', | 150 buildername='win_perf_bisect', |
| 209 'test_results': { | 151 slavename='dummyslave', |
| 210 'results':{ | 152 buildnumber=571, |
| 211 'values': [19, 20, 21, 22, 23], | 153 bisect_config={ |
| 154 'test_type': 'perf', |
| 155 'command': |
| 156 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 157 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 158 'good_revision': '314015', |
| 159 'bad_revision': '314017', |
| 160 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 161 'bug_id': '-1', |
| 162 'gs_bucket': 'chrome-perf', |
| 163 'dummy_builds': 'True', |
| 164 'dummy_tests': 'True', |
| 165 'dummy_job_names': 'True', |
| 166 'bypass_stats_check': 'True', |
| 167 'skip_gclient_ops': 'True', |
| 168 'recipe_tester_name': 'win_perf_tester' |
| 169 }) |
| 170 + api.auto_bisect([ |
| 171 { |
| 172 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 173 'commit_pos': '314015', |
| 174 'parsed_values': [19, 20, 21, 22, 23], |
| 175 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 176 'gsutil_exists': 5 * [False] |
| 177 }, |
| 178 { |
| 179 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 180 'commit_pos': '314016', |
| 181 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 182 'cl_info': { |
| 183 'author': 'DummyAuthor', |
| 184 'email': 'dummy@nowhere.com', |
| 185 'subject': 'Some random CL', |
| 186 'date': '01/01/2015', |
| 187 'body': ('A long description for a CL.\n' |
| 188 'Containing multiple lines'), |
| 212 }, | 189 }, |
| 213 'retcodes': [0], | 190 }, |
| 214 }, | 191 { |
| 215 "DEPS": ("vars={'v8_revision': '001'};" | 192 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 216 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," | 193 'commit_pos': '314017', |
| 217 "'src/third_party/WebKit': 'webkit.git@010'}"), | 194 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 218 'git_diff': { | 195 }])) |
| 219 '002': 'Dummy .diff contents 001 - 002', | 196 yield ( |
| 220 '003': 'Dummy .diff contents 001 - 003', | 197 api.test('basic_mac_bisect') |
| 221 }, | 198 + api.platform('mac', 64) |
| 222 'cl_info': { | 199 + api.properties( |
| 223 'author': 'DummyAuthor', | 200 mastername='tryserver.chromium.perf', |
| 224 'email': 'dummy@nowhere.com', | 201 buildername='mac_10_11_perf_bisect', |
| 225 'subject': 'Some random CL', | 202 slavename='dummyslave', |
| 226 'date': '01/01/2015', | 203 buildnumber=571, |
| 227 'body': ('A long description for a CL.\n' | 204 bisect_config={ |
| 228 'Containing multiple lines'), | 205 'test_type': 'perf', |
| 229 }, | 206 'command': |
| 230 }, | 207 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 231 { | 208 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 232 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', | 209 'good_revision': '314015', |
| 233 'commit_pos': '314016', | 210 'bad_revision': '314017', |
| 234 'test_results': { | 211 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 235 'results': { | 212 'bug_id': '-1', |
| 236 'values': [12, 13, 14, 15, 16], | 213 'gs_bucket': 'chrome-perf', |
| 214 'dummy_builds': 'True', |
| 215 'dummy_tests': 'True', |
| 216 'dummy_job_names': 'True', |
| 217 'bypass_stats_check': 'True', |
| 218 'skip_gclient_ops': 'True', |
| 219 'recipe_tester_name': 'mac_10_11_perf_bisect' |
| 220 }) |
| 221 + api.auto_bisect([ |
| 222 { |
| 223 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 224 'commit_pos': '314015', |
| 225 'parsed_values': [19, 20, 21, 22, 23], |
| 226 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 227 'gsutil_exists': 5 * [False] |
| 228 }, |
| 229 { |
| 230 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 231 'commit_pos': '314016', |
| 232 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 233 'cl_info': { |
| 234 'author': 'DummyAuthor', |
| 235 'email': 'dummy@nowhere.com', |
| 236 'subject': 'Some random CL', |
| 237 'date': '01/01/2015', |
| 238 'body': ('A long description for a CL.\n' |
| 239 'Containing multiple lines'), |
| 237 }, | 240 }, |
| 238 'retcodes': [0], | 241 }, |
| 239 }, | 242 { |
| 240 'DEPS_change': 'True', | 243 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 241 "DEPS": ("vars={'v8_revision': '004'};" | 244 'commit_pos': '314017', |
| 242 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," | 245 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 243 "'src/third_party/WebKit': 'webkit.git@010'}"), | 246 }])) |
| 244 'DEPS_interval': {'v8': '002 003 004'.split()}, | 247 yield ( |
| 245 }, | 248 api.test('v8_roll_bisect_bis') |
| 246 { | 249 + api.properties( |
| 247 'refrange': True, | 250 mastername='tryserver.chromium.perf', |
| 248 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', | 251 buildername='linux_perf_bisect', |
| 249 'commit_pos': '314017', | 252 slavename='dummyslave', |
| 250 'test_results': { | 253 buildnumber=571, |
| 251 'results': { | 254 bisect_config={ |
| 252 'values': [12, 13, 14, 15, 16], | 255 'test_type': 'perf', |
| 256 'command': |
| 257 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 258 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 259 'good_revision': '314015', |
| 260 'bad_revision': '314017', |
| 261 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 262 'bug_id': '-1', |
| 263 'gs_bucket': 'chrome-perf', |
| 264 'dummy_builds': 'True', |
| 265 'dummy_tests': 'True', |
| 266 'dummy_job_names': 'True', |
| 267 'bypass_stats_check': 'True', |
| 268 'skip_gclient_ops': 'True', |
| 269 'recipe_tester_name': 'linux_perf_tester' |
| 270 }) |
| 271 + api.auto_bisect([ |
| 272 { |
| 273 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 274 'commit_pos': '314015', |
| 275 'parsed_values': [19, 20, 21, 22, 23], |
| 276 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 277 }, |
| 278 { |
| 279 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 280 'commit_pos': '314016', |
| 281 'parsed_values': [19, 20, 21, 22, 23], |
| 282 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 283 "DEPS": ("vars={'v8_revision': '001'};" |
| 284 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," |
| 285 "'src/third_party/WebKit': 'webkit.git@010'}"), |
| 286 }, |
| 287 { |
| 288 'depot':'v8', |
| 289 'hash': '002', |
| 290 'parsed_values': [12, 13, 14, 15, 16], |
| 291 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 292 'gsutil_exists': 10 * [False], |
| 293 'cl_info': { |
| 294 'author': 'DummyAuthor', |
| 295 'email': 'dummy@nowhere.com', |
| 296 'subject': 'Some random CL', |
| 297 'date': '01/01/2015', |
| 298 'body': ('A long description for a CL.\n' |
| 299 'Containing multiple lines'), |
| 253 }, | 300 }, |
| 254 'retcodes': [0], | 301 }, |
| 255 } | 302 { |
| 256 }, | 303 'depot':'v8', |
| 257 ] | 304 'hash': '003', |
| 258 | 305 'parsed_values': [12, 13, 14, 15, 16], |
| 259 | 306 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 260 def _get_reversed_basic_test_data(): | 307 }, |
| 261 return [ | 308 { |
| 262 { | 309 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 263 'refrange': True, | 310 'commit_pos': '314017', |
| 264 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', | 311 'parsed_values': [12, 13, 14, 15, 16], |
| 265 'commit_pos': '314015', | 312 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 266 'test_results': { | 313 'DEPS_change': 'True', |
| 267 'results': { | 314 "DEPS": ("vars={'v8_revision': '004'};" |
| 268 'values': [19, 20, 21, 22, 23], | 315 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," |
| 316 "'src/third_party/WebKit': 'webkit.git@010'}"), |
| 317 'DEPS_interval': {'v8': '002 003 004'.split()}, |
| 318 }])) |
| 319 yield ( |
| 320 api.test('v8_roll_bisect') |
| 321 + api.properties( |
| 322 mastername='tryserver.chromium.perf', |
| 323 buildername='linux_perf_bisect', |
| 324 slavename='dummyslave', |
| 325 buildnumber=571, |
| 326 bisect_config={ |
| 327 'test_type': 'perf', |
| 328 'command': |
| 329 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 330 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 331 'good_revision': '314015', |
| 332 'bad_revision': '314017', |
| 333 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 334 'bug_id': '-1', |
| 335 'gs_bucket': 'chrome-perf', |
| 336 'dummy_builds': 'True', |
| 337 'dummy_tests': 'True', |
| 338 'dummy_job_names': 'True', |
| 339 'bypass_stats_check': 'True', |
| 340 'skip_gclient_ops': 'True', |
| 341 'recipe_tester_name': 'linux_perf_tester' |
| 342 }) |
| 343 + api.auto_bisect([ |
| 344 { |
| 345 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 346 'commit_pos': '314015', |
| 347 'parsed_values': [19, 20, 21, 22, 23], |
| 348 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 349 "DEPS": ("vars={'v8_revision': '001'};" |
| 350 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," |
| 351 "'src/third_party/WebKit': 'webkit.git@010'}"), |
| 352 }, |
| 353 { |
| 354 'depot':'v8', |
| 355 'hash': '002', |
| 356 'parsed_values': [12, 13, 14, 15, 16], |
| 357 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 358 'gsutil_exists': 10 * [False], |
| 359 'cl_info': { |
| 360 'author': 'DummyAuthor', |
| 361 'email': 'dummy@nowhere.com', |
| 362 'subject': 'Some random CL', |
| 363 'date': '01/01/2015', |
| 364 'body': ('A long description for a CL.\n' |
| 365 'Containing multiple lines'), |
| 269 }, | 366 }, |
| 270 'retcodes': [0], | 367 }, |
| 271 }, | 368 { |
| 272 'cl_info': { | 369 'depot':'v8', |
| 273 'author': 'DummyAuthor', | 370 'hash': '003', |
| 274 'email': 'dummy@nowhere.com', | 371 'parsed_values': [12, 13, 14, 15, 16], |
| 275 'subject': 'Some random CL', | 372 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 276 'date': '01/01/2015', | 373 }, |
| 277 'body': ('A long description for a CL.\n' | 374 { |
| 278 'Containing multiple lines'), | 375 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 279 }, | 376 'commit_pos': '314016', |
| 280 }, | 377 'parsed_values': [12, 13, 14, 15, 16], |
| 281 { | 378 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 282 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', | 379 'DEPS_change': 'True', |
| 283 'commit_pos': '314016', | 380 "DEPS": ("vars={'v8_revision': '004'};" |
| 284 'test_results': { | 381 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," |
| 285 'results': { | 382 "'src/third_party/WebKit': 'webkit.git@010'}"), |
| 286 'values': [19, 20, 21, 22, 23], | 383 'DEPS_interval': {'v8': '002 003 004'.split()}, |
| 384 }, |
| 385 { |
| 386 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 387 'commit_pos': '314017', |
| 388 'parsed_values': [12, 13, 14, 15, 16], |
| 389 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 390 }])) |
| 391 yield ( |
| 392 api.test('retest_bisect') |
| 393 + api.properties( |
| 394 mastername='tryserver.chromium.perf', |
| 395 buildername='linux_perf_bisect', |
| 396 slavename='dummyslave', |
| 397 buildnumber=571, |
| 398 bisect_config={ |
| 399 'test_type': 'perf', |
| 400 'command': |
| 401 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 402 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 403 'good_revision': '314015', |
| 404 'bad_revision': '314017', |
| 405 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 406 'bug_id': '-1', |
| 407 'gs_bucket': 'chrome-perf', |
| 408 'dummy_builds': 'True', |
| 409 'dummy_tests': 'True', |
| 410 'dummy_job_names': 'True', |
| 411 'skip_gclient_ops': 'True', |
| 412 'recipe_tester_name': 'linux_perf_tester' |
| 413 }) |
| 414 + api.auto_bisect([ |
| 415 { |
| 416 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 417 'commit_pos': '314015', |
| 418 'parsed_values': [20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 419 1], |
| 420 }, |
| 421 { |
| 422 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 423 'commit_pos': '314016', |
| 424 'parsed_values': [20, 1, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
| 425 10, 10, 10, 10, 10, 1], |
| 426 }, |
| 427 { |
| 428 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 429 'commit_pos': '314017', |
| 430 'parsed_values': [20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 431 1, 1, 11], |
| 432 }])) |
| 433 yield ( |
| 434 api.test('bad_config') |
| 435 + api.properties( |
| 436 mastername='tryserver.chromium.perf', |
| 437 buildername='linux_perf_bisect', |
| 438 slavename='dummyslave', |
| 439 buildnumber=571, |
| 440 bisect_config={ |
| 441 'test_type': 'perf', |
| 442 'command': |
| 443 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 444 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 445 'good_revision': '314015', |
| 446 'bad_revision': '314016', |
| 447 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 448 'bug_id': 'crbug.com/123123', |
| 449 'gs_bucket': 'chrome-perf', |
| 450 'dummy_builds': 'True', |
| 451 'dummy_tests': 'True', |
| 452 'dummy_job_names': 'True', |
| 453 'bypass_stats_check': 'True', |
| 454 'skip_gclient_ops': 'True', |
| 455 'recipe_tester_name': 'linux_perf_tester' |
| 456 })) |
| 457 yield ( |
| 458 api.test('return_code') |
| 459 + api.properties( |
| 460 mastername='tryserver.chromium.perf', |
| 461 buildername='linux_perf_bisect', |
| 462 slavename='dummyslave', |
| 463 buildnumber=571, |
| 464 bisect_config={ |
| 465 'test_type': 'return_code', |
| 466 'command': |
| 467 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 468 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 469 'good_revision': '314014', |
| 470 'bad_revision': '314017', |
| 471 'bug_id': '-1', |
| 472 'gs_bucket': 'chrome-perf', |
| 473 'dummy_builds': 'True', |
| 474 'dummy_tests': 'True', |
| 475 'dummy_job_names': 'True', |
| 476 'bypass_stats_check': 'True', |
| 477 'skip_gclient_ops': 'True', |
| 478 'recipe_tester_name': 'linux_perf_tester' |
| 479 }) |
| 480 + api.auto_bisect([ |
| 481 { |
| 482 'hash': '0a1b2c3d4f0a1b2c3d4f0a1b2c3d4f0a1b2c3d4f', |
| 483 'commit_pos': '314014', |
| 484 'parsed_values': [19, 20, 23], |
| 485 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 486 }, |
| 487 { |
| 488 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 489 'commit_pos': '314015', |
| 490 'parsed_values': [19, 20, 23], |
| 491 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 492 }, |
| 493 { |
| 494 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 495 'commit_pos': '314016', |
| 496 'parsed_values': [20, 19, 23], |
| 497 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 1}], |
| 498 }, |
| 499 { |
| 500 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 501 'commit_pos': '314017', |
| 502 'parsed_values': [20, 19, 23], |
| 503 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 1}], |
| 504 }])) |
| 505 yield ( |
| 506 api.test('basic_bisect_other_direction') |
| 507 + api.properties( |
| 508 mastername='tryserver.chromium.perf', |
| 509 buildername='linux_perf_bisect', |
| 510 slavename='dummyslave', |
| 511 buildnumber=571, |
| 512 bisect_config={ |
| 513 'test_type': 'perf', |
| 514 'command': |
| 515 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 516 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 517 'good_revision': '314015', |
| 518 'bad_revision': '314017', |
| 519 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 520 'bug_id': '-1', |
| 521 'gs_bucket': 'chrome-perf', |
| 522 'dummy_builds': 'True', |
| 523 'dummy_tests': 'True', |
| 524 'dummy_job_names': 'True', |
| 525 'bypass_stats_check': 'True', |
| 526 'skip_gclient_ops': 'True', |
| 527 'recipe_tester_name': 'linux_perf_tester' |
| 528 }) |
| 529 + api.auto_bisect([ |
| 530 { |
| 531 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 532 'commit_pos': '314015', |
| 533 'parsed_values': [19, 20, 23], |
| 534 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 535 }, |
| 536 { |
| 537 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 538 'commit_pos': '314016', |
| 539 'parsed_values': [19, 20, 23], |
| 540 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 541 }, |
| 542 { |
| 543 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 544 'commit_pos': '314017', |
| 545 'parsed_values': [12, 13, 14, 15, 16], |
| 546 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 547 'cl_info': { |
| 548 'author': 'DummyAuthor', |
| 549 'email': 'dummy@nowhere.com', |
| 550 'subject': 'Some random CL', |
| 551 'date': '01/01/2015', |
| 552 'body': ('A long description for a CL.\n' |
| 553 'Containing multiple lines'), |
| 287 }, | 554 }, |
| 288 'retcodes': [0], | 555 }])) |
| 289 }, | 556 yield ( |
| 290 "DEPS": ("vars={'v8_revision': '001'};" | 557 api.test('failed_revision') |
| 291 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," | 558 + api.properties( |
| 292 "'src/third_party/WebKit': 'webkit.git@010'}"), | 559 mastername='tryserver.chromium.perf', |
| 293 'git_diff': { | 560 buildername='linux_perf_bisect', |
| 294 '002': 'Dummy .diff contents 001 - 002', | 561 slavename='dummyslave', |
| 295 '003': 'Dummy .diff contents 001 - 003', | 562 buildnumber=571, |
| 296 }, | 563 bisect_config={ |
| 297 }, | 564 'test_type': 'perf', |
| 298 { | 565 'command': |
| 299 'refrange': True, | 566 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 300 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', | 567 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 301 'commit_pos': '314017', | 568 'good_revision': '314015', |
| 302 'test_results': { | 569 'bad_revision': '314017', |
| 303 'results': { | 570 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 304 'values': [12, 13, 14, 15, 16], | 571 'bug_id': '-1', |
| 305 }, | 572 'gs_bucket': 'chrome-perf', |
| 306 'retcodes': [0], | 573 'dummy_builds': 'True', |
| 307 }, | 574 'dummy_tests': 'True', |
| 308 'DEPS_change': 'True', | 575 'dummy_job_names': 'True', |
| 309 "DEPS": ("vars={'v8_revision': '004'};" | 576 'bypass_stats_check': 'True', |
| 310 "deps = {'src/v8': 'v8.git@' + Var('v8_revision')," | 577 'skip_gclient_ops': 'True', |
| 311 "'src/third_party/WebKit': 'webkit.git@010'}"), | 578 'recipe_tester_name': 'linux_perf_tester' |
| 312 'DEPS_interval': {'v8': '002 003 004'.split()}, | 579 }) |
| 313 }, | 580 + api.auto_bisect([ |
| 314 ] | 581 { |
| 315 | 582 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 316 | 583 'commit_pos': '314015', |
| 317 def _make_test(api, test_data, test_name, platform='linux', extra_config=None): | 584 'parsed_values': [19, 20, 23], |
| 318 basic_test = api.test(test_name) | 585 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 319 basic_test += api.properties(mastername='tryserver.chromium.perf', | 586 }, |
| 320 buildername='linux_perf_bisect', | 587 { |
| 321 slavename='dummyslave', | 588 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 322 buildnumber=123456) | 589 'commit_pos': '314016', |
| 323 basic_test += _get_revision_range_step_data(api, test_data) | 590 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 1}], |
| 324 for revision_data in test_data: | 591 }, |
| 325 for step_data in _get_step_data_for_revision(api, revision_data): | 592 { |
| 326 basic_test += step_data | 593 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111', |
| 327 if 'win_x64' in platform: | 594 'commit_pos': '314017', |
| 328 basic_test += api.properties(bisect_config=_get_config({ | 595 'parsed_values': [12, 13, 14, 15, 16], |
| 329 'command': ('src/tools/perf/run_benchmark -v --browser=release_x64' | 596 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 330 ' smoothness.tough_scrolling_cases'), | 597 }])) |
| 331 'recipe_tester_name': 'chromium_rel_win7_x64'})) | 598 yield ( |
| 332 elif 'win' in platform: | 599 api.test('failed_reference_range') |
| 333 basic_test += api.properties(bisect_config=_get_config( | 600 + api.properties( |
| 334 {'recipe_tester_name': 'chromium_rel_win7'})) | 601 mastername='tryserver.chromium.perf', |
| 335 elif 'mac' in platform: | 602 buildername='linux_perf_bisect', |
| 336 basic_test += api.properties(bisect_config=_get_config( | 603 slavename='dummyslave', |
| 337 {'recipe_tester_name': 'chromium_rel_mac'})) | 604 buildnumber=571, |
| 338 elif 'android_arm64' in platform: | 605 bisect_config={ |
| 339 basic_test += api.properties(bisect_config=_get_config({ | 606 'test_type': 'perf', |
| 340 'command': ('src/tools/perf/run_benchmark -v --browser=android-chromium' | 607 'command': |
| 341 ' smoothness.tough_scrolling_cases'), | 608 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 342 'recipe_tester_name': 'android-nexus9'})) | 609 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 343 elif 'android' in platform: | 610 'good_revision': '314015', |
| 344 basic_test += api.properties(bisect_config=_get_config({ | 611 'bad_revision': '314016', |
| 345 'command': ('src/tools/perf/run_benchmark -v --browser=android-chromium' | 612 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 346 ' smoothness.tough_scrolling_cases'), | 613 'bug_id': '-1', |
| 347 'recipe_tester_name': 'android-nexus7'})) | 614 'gs_bucket': 'chrome-perf', |
| 348 else: | 615 'dummy_builds': 'True', |
| 349 basic_test += api.properties(bisect_config=_get_config(extra_config)) | 616 'dummy_tests': 'True', |
| 350 basic_test += api.properties( | 617 'dummy_job_names': 'True', |
| 351 buildbotURL= 'https://build.chromium.org/p/tryserver.chromium.perf') | 618 'bypass_stats_check': 'True', |
| 352 return basic_test | 619 'skip_gclient_ops': 'True', |
| 353 | 620 'recipe_tester_name': 'linux_perf_tester' |
| 354 | 621 }) |
| 355 def _get_revision_range_step_data(api, range_data): | 622 + api.auto_bisect([ |
| 356 """Adds canned output for fetch_intervening_revisions.py.""" | 623 { |
| 357 min_rev = range_data[0]['hash'] | 624 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 358 max_rev = range_data[-1]['hash'] | 625 'commit_pos': '314015', |
| 359 output = [[r['hash'], 'ignored'] for r in range_data[1:]] | 626 'parsed_values': [19, 20, 23], |
| 360 step_name = ('Expanding revision range.for revisions %s:%s' % | 627 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 361 (min_rev, max_rev)) | 628 }, |
| 362 return api.step_data(step_name, stdout=api.json.output(output)) | 629 { |
| 363 | 630 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 364 | 631 'commit_pos': '314016', |
| 365 def _get_config(params=None): | 632 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 1}], |
| 366 """Returns a sample bisect config dict with some fields overridden.""" | 633 }, |
| 367 example_config = { | 634 ])) |
| 368 'test_type': 'perf', | 635 yield ( |
| 369 'command': ( | 636 api.test('no_repro') |
| 370 'src/tools/perf/run_benchmark -v --browser=release smoothness.' | 637 + api.properties( |
| 371 'tough_scrolling_cases'), | 638 mastername='tryserver.chromium.perf', |
| 372 'good_revision': '314015', | 639 buildername='linux_perf_bisect', |
| 373 'bad_revision': '314017', | 640 slavename='dummyslave', |
| 374 'metric': 'mean_input_event_latency/mean_input_event_latency', | 641 buildnumber=571, |
| 375 'repeat_count': '2', | 642 bisect_config={ |
| 376 'bug_id': '-1', | 643 'test_type': 'perf', |
| 377 'max_time_minutes': '5', | 644 'command': |
| 378 'gs_bucket': 'chrome-perf', | 645 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 379 'builder_host': 'master4.golo.chromium.org', | 646 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 380 'builder_port': '8341', | 647 'good_revision': '314015', |
| 381 'dummy_builds': 'True', | 648 'bad_revision': '314016', |
| 382 'dummy_tests': 'True', | 649 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 383 'dummy_job_names': 'True', | 650 'bug_id': '-1', |
| 384 'bypass_stats_check': 'True', | 651 'gs_bucket': 'chrome-perf', |
| 385 'skip_gclient_ops': 'True', | 652 'dummy_builds': 'True', |
| 386 'recipe_tester_name': 'linux_perf_tester', | 653 'dummy_tests': 'True', |
| 387 } | 654 'dummy_job_names': 'True', |
| 388 if params: | 655 'bypass_stats_check': 'True', |
| 389 example_config.update(params) | 656 'skip_gclient_ops': 'True', |
| 390 return example_config | 657 'recipe_tester_name': 'linux_perf_tester' |
| 391 | 658 }) |
| 392 | 659 + api.auto_bisect([ |
| 393 def _get_step_data_for_revision(api, revision_data, include_build_steps=True): | 660 { |
| 394 """Generator that produces step patches for fake results.""" | 661 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 395 commit_pos_number = revision_data['commit_pos'] | 662 'commit_pos': '314015', |
| 396 commit_hash = revision_data['hash'] | 663 'parsed_values': [19, 20, 23], |
| 397 test_results = revision_data.get('test_results') | 664 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 398 | 665 }, |
| 399 if 'refrange' in revision_data: | 666 { |
| 400 parent_step = 'Resolving reference range.' | 667 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 401 commit_pos = 'refs/heads/master@{#%s}' % commit_pos_number | 668 'commit_pos': '314016', |
| 402 step_name = parent_step + 'crrev get commit hash for ' + commit_pos | 669 'parsed_values': [19, 20, 23], |
| 403 yield api.step_data( | 670 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 404 step_name, | 671 }, |
| 405 stdout=api.json.output({'git_sha': commit_hash})) | 672 ])) |
| 406 | 673 yield ( |
| 407 if include_build_steps: | 674 api.test('failed_build') |
| 408 if test_results: | 675 + api.properties( |
| 409 step_name = ('gsutil Get test results for build %s') % commit_hash | 676 mastername='tryserver.chromium.perf', |
| 410 yield api.step_data(step_name, stdout=api.json.output(test_results)) | 677 buildername='linux_perf_bisect', |
| 411 | 678 slavename='dummyslave', |
| 412 if revision_data.get('DEPS', False): | 679 buildnumber=571, |
| 413 step_name = 'fetch file %s:DEPS' % commit_hash | 680 bisect_config={ |
| 414 yield api.step_data(step_name, stdout=api.raw_io.output( | 681 'test_type': 'perf', |
| 415 revision_data['DEPS'])) | 682 'command': |
| 416 | 683 ('src/tools/perf/run_benchmark -v --browser=release ' |
| 417 if 'git_diff' in revision_data: | 684 '--output-format=valueset smoothness.tough_scrolling_cases'), |
| 418 for deps_rev, diff_file in revision_data['git_diff'].iteritems(): | 685 'good_revision': '314015', |
| 419 step_name = 'Generating patch for %s:DEPS to %s' | 686 'bad_revision': '314016', |
| 420 step_name %= (commit_hash, deps_rev) | 687 'metric': 'mean_input_event_latency/mean_input_event_latency', |
| 421 yield api.step_data(step_name, stdout=api.raw_io.output(diff_file)) | 688 'bug_id': '-1', |
| 422 | 689 'gs_bucket': 'chrome-perf', |
| 423 if 'DEPS_change' in revision_data: | 690 'dummy_builds': 'True', |
| 424 step_name = 'Checking DEPS for ' + commit_hash | 691 'dummy_tests': 'True', |
| 425 yield api.step_data(step_name, stdout=api.raw_io.output('DEPS')) | 692 'dummy_job_names': 'True', |
| 426 | 693 'bypass_stats_check': 'True', |
| 427 if 'DEPS_interval' in revision_data: | 694 'skip_gclient_ops': 'True', |
| 428 for depot_name, interval in revision_data['DEPS_interval'].iteritems(): | 695 'recipe_tester_name': 'linux_perf_tester' |
| 429 for item in reversed(interval[:-1]): | 696 }) |
| 430 step_name = 'Hashing modified DEPS file with revision ' + item | 697 + api.auto_bisect([ |
| 431 file_hash = 'f412e8458' | 698 { |
| 432 yield api.step_data(step_name, stdout=api.raw_io.output(file_hash)) | 699 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222', |
| 433 step_name = 'Expanding revision range for revision %s on depot %s' | 700 'commit_pos': '314015', |
| 434 step_name %= (interval[-1], depot_name) | 701 'parsed_values': [19, 20, 23], |
| 435 stdout = api.json.output([(r, 0) for r in interval[:-1]]) | 702 'gsutil_exists': 2 * [False], |
| 436 yield api.step_data(step_name, stdout=stdout) | 703 'test_results': 5 * [{'stdout': 'benchmark text', 'retcode': 0}], |
| 437 | 704 'build_status': [{'build': {'status': 'SCHEDULED'}}, |
| 438 if 'cl_info' in revision_data: | 705 {'build': {'status': 'COMPLETED', |
| 439 step_name = 'Reading culprit cl information.' | 706 'result': 'SUCCESS'}}], |
| 440 stdout = api.json.output(revision_data['cl_info']) | 707 }, |
| 441 yield api.step_data(step_name, stdout=stdout) | 708 { |
| 709 'hash': 'dcdcdc0ff1122212323134879ddceeb1240b0988', |
| 710 'commit_pos': '314016', |
| 711 'gsutil_exists': 10 * [False], |
| 712 'build_status': [{'build': {'status': 'SCHEDULED'}}, |
| 713 {'build': {'status': 'COMPLETED', |
| 714 'result': 'FAILED'}}], |
| 715 }, |
| 716 ])) |
| OLD | NEW |