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

Unified Diff: infra/bots/recipes/swarm_trigger.py

Issue 2360203004: Add swarming task for upload_dm_results (Closed)
Patch Set: Fix gzip Created 4 years, 3 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
« no previous file with comments | « no previous file | infra/bots/recipes/swarm_trigger.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Debug-GN_Android.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: infra/bots/recipes/swarm_trigger.py
diff --git a/infra/bots/recipes/swarm_trigger.py b/infra/bots/recipes/swarm_trigger.py
index fdf81004e8bc8f145462c00713d82c98379cf4e2..8a9360cd317f933aeff02c0236c73b7cbfb12c2a 100644
--- a/infra/bots/recipes/swarm_trigger.py
+++ b/infra/bots/recipes/swarm_trigger.py
@@ -434,26 +434,6 @@ def get_timeouts(builder_cfg):
return expiration, hard_timeout, io_timeout
-def gsutil_env(api, boto_file):
- """Environment variables for gsutil."""
- home_dir = os.path.expanduser('~')
- if api.path._test_data.enabled:
- home_dir = '[HOME]'
-
- boto_path = None
- if boto_file:
- boto_path = api.path.join(home_dir, boto_file)
- return {'AWS_CREDENTIAL_FILE': boto_path,
- 'BOTO_CONFIG': boto_path}
-
-
-def get_issue_num(api):
- if api.properties.get('patch_storage') == 'gerrit':
- return str(api.properties['event.change.number'])
- else:
- return str(api.properties['issue'])
-
-
def perf_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
extra_hashes, cipd_packages):
"""Trigger perf tests via Swarming."""
@@ -526,110 +506,39 @@ def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
expiration=expiration,
hard_timeout=hard_timeout,
io_timeout=io_timeout,
- cipd_packages=cipd_packages)
+ cipd_packages=cipd_packages,
+ store_output=False)
-def test_steps_collect(api, task, got_revision, is_trybot, builder_cfg):
+def test_steps_collect(api, task, builder_cfg, got_revision, infrabots_dir):
"""Collect the test results from Swarming."""
# Wait for tests to finish, download the results.
- api.run.rmtree(task.task_output_dir)
- api.swarming.collect_swarming_task(task)
+ if not api.vars.upload_dm_results: # pragma: nocover
+ api.swarming.collect_swarming_task(task)
+ return
+
+ dm_hash = api.swarming.collect_swarming_task_isolate_hash(task)
# Upload the results.
- if api.vars.upload_dm_results:
- dm_dir = api.path['slave_build'].join('dm')
- dm_src = task.task_output_dir.join('0', 'dm')
- api.run.rmtree(dm_dir)
- api.file.copytree('dm_dir', dm_src, dm_dir, infra_step=True)
-
- # Upload them to Google Storage.
- api.python(
- 'Upload DM Results',
- script=api.core.resource('upload_dm_results.py'),
- args=[
- dm_dir,
- got_revision,
- api.properties['buildername'],
- api.properties['buildnumber'],
- get_issue_num(api) if is_trybot else '',
- api.path['slave_build'].join('skia', 'common', 'py', 'utils'),
- ],
- cwd=api.path['checkout'],
- env=gsutil_env(api, 'chromium-skia-gm.boto'),
- infra_step=True)
-
- if builder_cfg['configuration'] == 'Coverage':
- upload_coverage_results(api, task, got_revision, is_trybot)
-
-
-def upload_coverage_results(api, task, got_revision, is_trybot):
- results_dir = task.task_output_dir.join('0')
- git_timestamp = api.git.get_timestamp(test_data='1408633190',
- infra_step=True)
-
- # Upload raw coverage data.
- cov_file_basename = '%s.cov' % got_revision
- cov_file = results_dir.join(cov_file_basename)
- now = api.time.utcnow()
- gs_json_path = '/'.join((
- str(now.year).zfill(4), str(now.month).zfill(2),
- str(now.day).zfill(2), str(now.hour).zfill(2),
+ task = trigger_task(
+ api,
+ 'upload_dm_results',
api.properties['buildername'],
- str(api.properties['buildnumber'])))
- if is_trybot:
- gs_json_path = '/'.join(('trybot', gs_json_path, get_issue_num(api)))
- api.gsutil.upload(
- name='upload raw coverage data',
- source=cov_file,
- bucket='skia-infra',
- dest='/'.join(('coverage-raw-v1', gs_json_path,
- cov_file_basename)),
- env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None},
- )
+ api.properties['mastername'],
+ api.properties['slavename'],
+ api.properties['buildnumber'],
+ builder_cfg,
+ got_revision,
+ infrabots_dir,
+ idempotent=True,
+ store_output=False,
+ cipd_packages=None,
+ extra_isolate_hashes=[dm_hash],
+ recipe_name='upload_dm_results',
+ isolate_file='upload_dm_results.isolate',
+ dimensions=UPLOAD_DIMENSIONS)
- # Transform the nanobench_${git_hash}.json file received from swarming bot
- # into the nanobench_${git_hash}_${timestamp}.json file
- # upload_bench_results.py expects.
- src_nano_file = results_dir.join('nanobench_%s.json' % got_revision)
- dst_nano_file = results_dir.join(
- 'nanobench_%s_%s.json' % (got_revision, git_timestamp))
- api.file.copy('nanobench JSON', src_nano_file, dst_nano_file,
- infra_step=True)
- api.file.remove('old nanobench JSON', src_nano_file)
-
- # Upload nanobench JSON data.
- gsutil_path = api.depot_tools.gsutil_py_path
- upload_args = [api.properties['buildername'], api.properties['buildnumber'],
- results_dir, got_revision, gsutil_path]
- if is_trybot:
- upload_args.append(get_issue_num(api))
- api.python(
- 'upload nanobench coverage results',
- script=api.core.resource('upload_bench_results.py'),
- args=upload_args,
- cwd=api.path['checkout'],
- env=gsutil_env(api, 'chromium-skia-gm.boto'),
- infra_step=True)
-
- # Transform the coverage_by_line_${git_hash}.json file received from
- # swarming bot into a coverage_by_line_${git_hash}_${timestamp}.json file.
- src_lbl_file = results_dir.join('coverage_by_line_%s.json' % got_revision)
- dst_lbl_file_basename = 'coverage_by_line_%s_%s.json' % (
- got_revision, git_timestamp)
- dst_lbl_file = results_dir.join(dst_lbl_file_basename)
- api.file.copy('Line-by-line coverage JSON', src_lbl_file, dst_lbl_file,
- infra_step=True)
- api.file.remove('old line-by-line coverage JSON', src_lbl_file)
-
- # Upload line-by-line coverage data.
- api.gsutil.upload(
- name='upload line-by-line coverage data',
- source=dst_lbl_file,
- bucket='skia-infra',
- dest='/'.join(('coverage-json-v1', gs_json_path,
- dst_lbl_file_basename)),
- env={'AWS_CREDENTIAL_FILE': None, 'BOTO_CONFIG': None},
- )
+ return api.swarming.collect_swarming_task(task)
def cipd_pkg(api, infrabots_dir, asset_name):
@@ -738,13 +647,12 @@ def RunSteps(api):
if do_perf_steps:
perf_task = perf_steps_trigger(api, builder_cfg, got_revision,
infrabots_dir, extra_hashes, cipd_packages)
- is_trybot = builder_cfg['is_trybot']
# Wait for results, then upload them if necessary.
if test_task:
- test_steps_collect(api, test_task,
- got_revision, is_trybot, builder_cfg)
+ test_steps_collect(api, test_task, builder_cfg,
+ got_revision, infrabots_dir)
if perf_task:
perf_steps_collect(api, perf_task, builder_cfg,
@@ -778,6 +686,10 @@ def test_for_bot(api, builder, mastername, slavename, testname=None):
test += api.step_data(
'upload new .isolated file for test_skia',
stdout=api.raw_io.output('def456 XYZ.isolated'))
+ if not 'Valgrind' in builder and not 'MSAN' in builder:
+ test += api.step_data(
+ 'upload new .isolated file for upload_dm_results_skia',
+ stdout=api.raw_io.output('def456 XYZ.isolated'))
if 'Perf' in builder and '-CT_' not in builder:
test += api.step_data(
'upload new .isolated file for perf_skia',
@@ -830,5 +742,8 @@ def GenTests(api):
**gerrit_kwargs) +
api.step_data(
'upload new .isolated file for test_skia',
+ stdout=api.raw_io.output('def456 XYZ.isolated')) +
+ api.step_data(
+ 'upload new .isolated file for upload_dm_results_skia',
stdout=api.raw_io.output('def456 XYZ.isolated'))
)
« no previous file with comments | « no previous file | infra/bots/recipes/swarm_trigger.expected/Test-Android-Clang-AndroidOne-CPU-MT6582-arm-Debug-GN_Android.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698