Chromium Code Reviews| Index: infra/bots/recipes/upload_nano_results.py |
| diff --git a/infra/bots/recipes/upload_nano_results.py b/infra/bots/recipes/upload_nano_results.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4877ca74b301a12d3e8417a27c22d5118101f486 |
| --- /dev/null |
| +++ b/infra/bots/recipes/upload_nano_results.py |
| @@ -0,0 +1,74 @@ |
| +# Copyright 2016 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. |
| + |
| + |
| +# Recipe for uploading nanobench results. |
| + |
| + |
| +DEPS = [ |
| + 'build/file', |
| + 'recipe_engine/path', |
| + 'recipe_engine/properties', |
| + 'recipe_engine/step', |
| + 'recipe_engine/time', |
| +] |
| + |
| + |
| +def RunSteps(api): |
| + # Upload the nanobench resuls. |
| + builder_name = api.properties['buildername'] |
| + issue = str(api.properties.get('issue')) |
| + patchset = str(api.properties.get('patchset')) |
| + |
| + now = api.time.utcnow() |
| + |
| + src_path = api.path['cwd'].join( |
| + 'perfdata', builder_name, 'data') |
| + results = api.file.glob( |
| + 'find results', |
| + 'nanobench*.json', |
| + cwd=src_path, |
| + test_data=['nanobench_abc123.json'], |
| + infra_step=True) |
| + if len(results) != 1: # pragma: nocover |
| + raise Exception('Unable to find nanobench JSON file!') |
| + |
| + src = src_path.join(results[0]) |
| + basename = api.path.basename(src) |
| + gs_path = '/'.join(( |
| + 'nano-json-v1', str(now.year).zfill(4), |
| + str(now.month).zfill(2), str(now.day).zfill(2), str(now.hour).zfill(2), |
| + builder_name)) |
| + |
| + if builder_name.endswith('-Trybot'): |
| + if not (issue and patchset): # pragma: nocover |
| + raise Exception('issue and patchset properties are required for trybots.') |
| + gs_path = '/'.join(('trybot', gs_path, issue, patchset)) |
| + |
| + dst = '/'.join(('gs://skia-perf', gs_path, basename)) |
| + |
| + gsutil = 'gsutil' |
|
rmistry
2016/09/23 12:01:29
Nit: This seems like an unnecessary abstraction wh
borenet
2016/09/23 12:14:32
Removed. I was sure I'd have to provide an absolut
|
| + api.step('upload', |
| + cmd=[gsutil, 'cp', '-a', 'public-read', '-z', 'json', src, dst], |
| + infra_step=True) |
| + |
| + |
| +def GenTests(api): |
| + builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug' |
| + yield ( |
| + api.test('normal_bot') + |
| + api.properties(buildername=builder, |
| + revision='abc123', |
| + path_config='kitchen') |
| + ) |
| + |
| + builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot' |
| + yield ( |
| + api.test('trybot') + |
| + api.properties(buildername=builder, |
| + revision='abc123', |
| + path_config='kitchen', |
| + issue='12345', |
| + patchset='1002') |
| + ) |