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

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

Issue 2364693003: Add swarming task for nanobench upload (Closed)
Patch Set: Add CPU dimension 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/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot.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 f086e77da9b4139d76f2c8acb33d677927634845..d6272a1546983bc0284b62f538daf55e8b913f8e 100644
--- a/infra/bots/recipes/swarm_trigger.py
+++ b/infra/bots/recipes/swarm_trigger.py
@@ -65,6 +65,14 @@ TEST_BUILDERS = {
}
+UPLOAD_DIMENSIONS = {
+ 'pool': 'Skia',
+ 'os': 'Linux',
+ 'cpu': 'x86-64-avx2',
+ 'gpu': 'none',
+}
+
+
def derive_compile_bot_name(api):
builder_name = api.properties['buildername']
builder_cfg = api.builder_name_schema.DictForBuilderName(builder_name)
@@ -184,7 +192,8 @@ for r, _, files in os.walk(os.getcwd()):
def trigger_task(api, task_name, builder, master, slave, buildnumber,
builder_cfg, got_revision, infrabots_dir, idempotent=False,
store_output=True, extra_isolate_hashes=None, expiration=None,
- hard_timeout=None, io_timeout=None, cipd_packages=None):
+ hard_timeout=None, io_timeout=None, cipd_packages=None,
+ recipe_name=None, isolate_file=None, dimensions=None):
"""Trigger the given bot to run as a Swarming task."""
# TODO(borenet): We're using Swarming directly to run the recipe through
# recipes.py. Once it's possible to track the state of a Buildbucket build,
@@ -212,19 +221,19 @@ def trigger_task(api, task_name, builder, master, slave, buildnumber,
extra_args = [
'--workdir', '../../..',
- 'swarm_%s' % task_name,
+ recipe_name or 'swarm_%s' % task_name,
]
for k, v in properties.iteritems():
extra_args.append('%s=%s' % (k, v))
isolate_base_dir = api.path['slave_build']
- dimensions = swarm_dimensions(builder_cfg)
+ dimensions = dimensions or swarm_dimensions(builder_cfg)
isolate_blacklist = ['.git', 'out', '*.pyc', '.recipe_deps']
isolate_vars = {
'WORKDIR': api.path['slave_build'],
}
- isolate_file = '%s_skia.isolate' % task_name
+ isolate_file = isolate_file or '%s_skia.isolate' % task_name
if 'Coverage' == builder_cfg.get('configuration'):
isolate_file = 'coverage_skia.isolate'
if 'RecreateSKPs' in builder:
@@ -467,40 +476,36 @@ def perf_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
cipd_packages=cipd_packages)
-def perf_steps_collect(api, task, got_revision, is_trybot):
+def perf_steps_collect(api, task, builder_cfg, got_revision, infrabots_dir):
"""Wait for perf steps to finish and upload results."""
# Wait for nanobench to finish, download the results.
api.run.rmtree(task.task_output_dir)
- api.swarming.collect_swarming_task(task)
+ if not api.vars.upload_perf_results: # pragma: nocover
+ api.swarming.collect_swarming_task(task)
+ return
+
+ perf_hash = api.swarming.collect_swarming_task_isolate_hash(task)
# Upload the results.
- if api.vars.upload_perf_results:
- perf_data_dir = api.path['slave_build'].join(
- 'perfdata', api.properties['buildername'], 'data')
- git_timestamp = api.git.get_timestamp(test_data='1408633190',
- infra_step=True)
- api.run.rmtree(perf_data_dir)
- api.file.makedirs('perf_dir', perf_data_dir, infra_step=True)
- src_results_file = task.task_output_dir.join(
- '0', 'perfdata', api.properties['buildername'], 'data',
- 'nanobench_%s.json' % got_revision)
- dst_results_file = perf_data_dir.join(
- 'nanobench_%s_%s.json' % (got_revision, git_timestamp))
- api.file.copy('perf_results', src_results_file, dst_results_file,
- infra_step=True)
-
- gsutil_path = api.path['slave_build'].join(
- 'skia', 'infra', 'bots', '.recipe_deps', 'depot_tools', 'gsutil.py')
- upload_args = [api.properties['buildername'], api.properties['buildnumber'],
- perf_data_dir, got_revision, gsutil_path]
- if is_trybot:
- upload_args.append(get_issue_num(api))
- api.python(
- 'Upload perf results',
- script=api.core.resource('upload_bench_results.py'),
- args=upload_args,
- cwd=api.path['checkout'],
- infra_step=True)
+ task = trigger_task(
+ api,
+ 'upload_nano_results',
+ api.properties['buildername'],
+ 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=[perf_hash],
+ recipe_name='upload_nano_results',
+ isolate_file='upload_nano_results.isolate',
+ dimensions=UPLOAD_DIMENSIONS)
+
+ return api.swarming.collect_swarming_task(task)
def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
@@ -742,8 +747,8 @@ def RunSteps(api):
got_revision, is_trybot, builder_cfg)
if perf_task:
- perf_steps_collect(api, perf_task,
- got_revision, is_trybot)
+ perf_steps_collect(api, perf_task, builder_cfg,
+ got_revision, infrabots_dir)
def test_for_bot(api, builder, mastername, slavename, testname=None):
@@ -777,6 +782,9 @@ def test_for_bot(api, builder, mastername, slavename, testname=None):
test += api.step_data(
'upload new .isolated file for perf_skia',
stdout=api.raw_io.output('def456 XYZ.isolated'))
+ test += api.step_data(
+ 'upload new .isolated file for upload_nano_results_skia',
+ stdout=api.raw_io.output('def456 XYZ.isolated'))
if 'Housekeeper' in builder and 'RecreateSKPs' not in builder:
test += api.step_data(
'upload new .isolated file for housekeeper_skia',
« no previous file with comments | « no previous file | infra/bots/recipes/swarm_trigger.expected/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698