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

Unified Diff: scripts/slave/recipes/bisect_staging.py

Issue 2247373002: Refactor stages 1, 2 and test_api overhaul. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Relative intra-module imports. 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 side-by-side diff with in-line comments
Download patch
Index: scripts/slave/recipes/bisect_staging.py
diff --git a/scripts/slave/recipes/bisect_staging.py b/scripts/slave/recipes/bisect_staging.py
deleted file mode 100644
index 65869a0808983a7f68d89b0e5ad05b824bec77cd..0000000000000000000000000000000000000000
--- a/scripts/slave/recipes/bisect_staging.py
+++ /dev/null
@@ -1,296 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import base64
-import collections
-import json
-
-DEPS = [
- 'auto_bisect_staging',
- 'recipe_engine/properties',
- 'test_utils',
- 'chromium_tests',
- 'recipe_engine/raw_io',
- 'recipe_engine/step',
- 'halt',
- 'recipe_engine/json',
-]
-
-def RunSteps(api):
- mastername = api.m.properties.get('mastername')
- buildername = api.m.properties.get('buildername')
- # TODO(akuegel): Explicitly load the configs for the builders and don't rely
- # on builders.py in chromium_tests recipe module.
- bot_config = api.chromium_tests.create_bot_config_object(
- mastername, buildername)
- api.chromium_tests.configure_build(bot_config)
- api.m.chromium_tests.prepare_checkout(bot_config)
- api.auto_bisect_staging.perform_bisect(do_not_nest_wait_for_revision=True)
-
-def GenTests(api):
- basic_test = api.test('basic')
- broken_bad_rev_test = api.test('broken_bad_revision_test')
- broken_good_rev_test = api.test('broken_good_revision_test')
- return_code_test = api.test('basic_return_code_test')
- basic_test += api.properties.generic(
- mastername='tryserver.chromium.perf',
- buildername='linux_perf_bisect')
- broken_bad_rev_test += api.properties.generic(
- mastername='tryserver.chromium.perf',
- buildername='linux_perf_bisect')
- broken_good_rev_test += api.properties.generic(
- mastername='tryserver.chromium.perf',
- buildername='linux_perf_bisect')
- return_code_test += api.properties.generic(
- mastername='tryserver.chromium.perf',
- buildername='linux_perf_bisect')
-
- bisect_config = {
- 'test_type': 'perf',
- 'command': ('tools/perf/run_benchmark -v '
- '--browser=release page_cycler.intl_ar_fa_he'),
- 'good_revision': '306475',
- 'bad_revision': '306478',
- 'metric': 'warm_times/page_load_time',
- 'repeat_count': '2',
- 'max_time_minutes': '5',
- 'bug_id': '425582',
- 'gs_bucket': 'chrome-perf',
- 'builder_host': 'master4.golo.chromium.org',
- 'builder_port': '8341',
- 'dummy_initial_confidence': '95',
- 'poll_sleep': 0,
- 'dummy_builds': True,
- 'dummy_tests': True,
- 'dummy_job_names': True,
- 'bypass_stats_check': True,
- }
- invalid_cp_bisect_config = dict(bisect_config)
- invalid_cp_bisect_config['good_revision'] = 'XXX'
-
- basic_test += api.properties(bisect_config=bisect_config)
- broken_bad_rev_test += api.properties(bisect_config=bisect_config)
- broken_good_rev_test += api.properties(bisect_config=bisect_config)
-
- # This data represents fake results for a basic scenario, the items in it are
- # passed to the `_gen_step_data_for_revision` that patches the necessary steps
- # with step_data instances.
- def test_data():
- return [
- {
- 'refrange': True,
- 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222',
- 'commit_pos': '306478',
- 'test_results': {
- 'results': {
- 'mean': 20,
- 'std_err': 1,
- 'values': [19, 20, 21],
- },
- 'retcodes':[0],
- },
- 'cl_info': {
- 'author': 'DummyAuthor',
- 'email': 'dummy@nowhere.com',
- 'subject': 'Some random CL',
- 'date': '01/01/2015',
- 'body': ('A long description for a CL.\n'
- 'Containing multiple lines'),
- },
- },
- {
- 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111',
- 'commit_pos': '306477',
- 'test_results': {
- 'results': {
- 'mean': 15,
- 'std_err': 1,
- 'values': [14, 15, 16],
- },
- 'retcodes':[0],
- }
- },
- {
- 'hash': 'fc6dfc7ff5b1073408499478969261b826441144',
- 'commit_pos': '306476',
- 'test_results': {
- 'results': {
- 'mean': 70,
- 'std_err': 2,
- 'values': [68, 70, 72],
- },
- 'retcodes':[0],
- }
- },
- {
- 'refrange': True,
- 'hash': 'e28dc0d49c331def2a3bbf3ddd0096eb51551155',
- 'commit_pos': '306475',
- 'test_results': {
- 'results': {
- 'mean': 80,
- 'std_err': 10,
- 'values': [70, 70, 80, 90, 90],
- },
- 'retcodes':[0],
- }
- },
- ]
-
- basic_test_data = test_data()
- for revision_data in basic_test_data:
- for step_data in _get_step_data_for_revision(api, revision_data):
- basic_test += step_data
- basic_test += _get_revision_range_step_data(api, basic_test_data)
- basic_test += _get_post_bisect_step_data(api)
- yield basic_test
-
- broken_test_data = test_data()
- broken_test_data[0].pop('cl_info')
-
- doctored_data = test_data()
- doctored_data[0]['test_results']['results']['errors'] = ['Dummy error.']
- for revision_data in doctored_data:
- revision_data.pop('cl_info', None)
- skip_results = revision_data in doctored_data[1:-1]
- for step_data in _get_step_data_for_revision(api, revision_data,
- skip_results=skip_results):
- broken_bad_rev_test += step_data
- broken_bad_rev_test += _get_revision_range_step_data(api, doctored_data)
- broken_bad_rev_test += _get_post_bisect_step_data(api)
- yield broken_bad_rev_test
-
- doctored_data = test_data()
- doctored_data[-1]['test_results']['results']['errors'] = ['Dummy error.']
- for revision_data in doctored_data:
- revision_data.pop('cl_info', None)
- skip_results = revision_data in doctored_data[1:-1]
- for step_data in _get_step_data_for_revision(api, revision_data,
- skip_results=skip_results):
- broken_good_rev_test += step_data
- broken_good_rev_test += _get_revision_range_step_data(api, doctored_data)
- broken_good_rev_test += _get_post_bisect_step_data(api)
- yield broken_good_rev_test
-
- def return_code_test_data():
- return [
- {
- 'refrange': True,
- 'hash': 'a6298e4afedbf2cd461755ea6f45b0ad64222222',
- 'commit_pos': '306478',
- 'test_results': {
- 'results': {
- 'mean': 1,
- 'std_err': 0,
- 'values': [],
- },
- 'retcodes':[1],
- },
- 'cl_info': {
- 'author': 'DummyAuthor',
- 'email': 'dummy@nowhere.com',
- 'subject': 'Some random CL',
- 'date': '01/01/2015',
- 'body': ('A long description for a CL.\n'
- 'Containing multiple lines'),
- },
- },
- {
- 'hash': '00316c9ddfb9d7b4e1ed2fff9fe6d964d2111111',
- 'commit_pos': '306477',
- 'test_results': {
- 'results': {
- 'mean': 1,
- 'std_err': 0,
- 'values': [],
- },
- 'retcodes':[1],
- }
- },
- {
- 'hash': 'fc6dfc7ff5b1073408499478969261b826441144',
- 'commit_pos': '306476',
- 'test_results': {
- 'results': {
- 'mean': 1,
- 'std_err': 0,
- 'values': [],
- },
- 'retcodes':[1],
- }
- },
- {
- 'refrange': True,
- 'hash': 'e28dc0d49c331def2a3bbf3ddd0096eb51551155',
- 'commit_pos': '306475',
- 'test_results': {
- 'results': {
- 'mean': 0,
- 'std_err': 0,
- 'values': [],
- },
- 'retcodes':[0],
- }
- },
- ]
-
- bisect_config_ret_code = bisect_config.copy()
- bisect_config_ret_code['test_type'] = 'return_code'
- return_code_test += api.properties(bisect_config=bisect_config_ret_code)
- return_code_test_data = return_code_test_data()
- for revision_data in return_code_test_data:
- for step_data in _get_step_data_for_revision(api, revision_data):
- return_code_test += step_data
- return_code_test += _get_revision_range_step_data(api, return_code_test_data)
- return_code_test += _get_post_bisect_step_data(api)
- yield return_code_test
-
-
-def _get_revision_range_step_data(api, range_data):
- """Gives canned output for fetch_intervening_revisions.py."""
- range_data.sort(key=lambda r: r['commit_pos'])
- min_rev = range_data[0]['hash']
- max_rev = range_data[-1]['hash']
- output = [[r['hash'], 'ignored'] for r in range_data[1:]]
- step_name = ('Expanding revision range.for revisions %s:%s' %
- (min_rev, max_rev))
- return api.step_data(step_name, stdout=api.json.output(output))
-
-
-def _get_step_data_for_revision(api, revision_data, skip_results=False):
- """Generator that produces step patches for fake results."""
- commit_pos_number = revision_data['commit_pos']
- commit_hash = revision_data['hash']
- test_results = revision_data['test_results']
-
- if 'refrange' in revision_data:
- parent_step = 'Resolving reference range.'
- commit_pos = 'refs/heads/master@{#%s}' % commit_pos_number
- step_name = parent_step + 'crrev get commit hash for ' + commit_pos
- yield api.step_data(
- step_name,
- stdout=api.json.output({'git_sha': commit_hash}))
-
- if not skip_results:
- step_name = ('gsutil Get test results for build %s') % (commit_hash)
- if 'refrange' in revision_data:
- parent_step = 'Gathering reference values.'
- else:
- parent_step = 'Working on revision %s.' % ('chromium@' + commit_hash[:10])
- yield _get_post_bisect_step_data(api, parent_step)
- step_name = parent_step + step_name
- yield api.step_data(step_name, stdout=api.raw_io.output(json.dumps(
- test_results)))
-
- if 'cl_info' in revision_data:
- step_name = 'Reading culprit cl information.'
- stdout = api.json.output(revision_data['cl_info'])
- yield api.step_data(step_name, stdout=stdout)
-
-
-def _get_post_bisect_step_data(api, parent_step=''):
- """Gets step data for perf_dashboard/resource/post_json.py."""
- response = {'status_code': 200}
- return api.step_data(parent_step + 'Post bisect results',
- stdout=api.json.output(response))
« no previous file with comments | « scripts/slave/recipes/bisect.expected/OWNERS ('k') | scripts/slave/recipes/bisect_staging.expected/basic.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698