Index: scripts/slave/recipe_modules/chromium_tests/steps.py |
diff --git a/scripts/slave/recipe_modules/chromium_tests/steps.py b/scripts/slave/recipe_modules/chromium_tests/steps.py |
index 8139e8375cadfbc6ba15acb9ce248250d6aedbbf..0f79e0d774659ec91183b2aa3b54f8c015ae3688 100644 |
--- a/scripts/slave/recipe_modules/chromium_tests/steps.py |
+++ b/scripts/slave/recipe_modules/chromium_tests/steps.py |
@@ -3,6 +3,7 @@ |
# found in the LICENSE file. |
import datetime |
+import json |
import re |
import string |
@@ -1088,6 +1089,7 @@ class SwarmingIsolatedScriptTest(SwarmingTest): |
if not failures and step_result.retcode != 0: |
failures = ['%s (entire test suite)' % self.name] |
valid = False |
+ |
except (ValueError, KeyError) as e: |
step_result.presentation.logs['invalid_results_exc'] = [str(e)] |
valid = False |
@@ -1096,8 +1098,46 @@ class SwarmingIsolatedScriptTest(SwarmingTest): |
step_result.presentation.step_text += api.test_utils.format_step_text([ |
['failures:', failures] |
]) |
+ # Check for chartjson results and upload to results dashboard if present. |
+ self._output_chartjson_results_if_present(api, step_result) |
return valid, failures |
+ def _output_chartjson_results_if_present(self, api, step_result): |
+ results = \ |
+ getattr(step_result, 'isolated_script_chartjson_results', None) or {} |
+ try: |
+ if not 'charts' in results: |
+ print 'Info: No chart json present' |
+ return |
+ |
+ if not results.get('enabled', True): |
+ print 'Info: Benchmark disabled, not sending results to dashboard' |
+ return |
+ |
+ """Produces a step that uploads results to dashboard""" |
+ args = [ |
+ '--results', json.dumps(results), |
+ '--perf-id', api.properties['perf-id'], |
+ '--results-url', api.properties['results-url'], |
+ '--build-dir', api.chromium.c.build_dir, |
+ '--got-revision-cp', api.properties['got_revision_cp'], |
+ '--version', api.properties['version'], |
+ '--git-revision', api.properties['git_revision'], |
+ '--buildername', api.properties['buildername'], |
+ '--buildnumber', api.properties['buildnumber'], |
+ '--got-webrtc-revision', api.properties['got_webrtc_revision'], |
+ '--got-v8-revision', api.properties['got_v8_revision'], |
+ ] |
+ |
+ api.python( |
+ 'Upload Perf Dashboard Results', |
+ api.chromium.package_repo_resource( |
+ 'scripts', 'slave', 'upload_perf_dashboard_results.py'), |
+ args) |
+ |
+ except (ValueError, KeyError) as e: |
+ print 'Error: Unable to upload chartjson results to perf dashboard' |
+ |
def generate_isolated_script(api, chromium_tests_api, mastername, buildername, |
test_spec, bot_update_step, enable_swarming=False, |