Push more upload arguments logic from perf_test_runner -> devtools.
This patch moves the check for required arguments and inferring of
revision and point_id into devtoolslib/perf_dashboard, so that it can be
shared between `perf_test_runner` and `mojo_benchmark`.
R=etiennej@chromium.org
Review URL: https://codereview.chromium.org/1418193005 .
Cr-Mirrored-From: https://github.com/domokit/mojo
Cr-Mirrored-Commit: 32d6447076bec1e828295eabd1fe49ca60aa6931
diff --git a/devtoolslib/perf_dashboard.py b/devtoolslib/perf_dashboard.py
index defb54d..e406b09 100644
--- a/devtoolslib/perf_dashboard.py
+++ b/devtoolslib/perf_dashboard.py
@@ -13,6 +13,7 @@
import httplib
import json
import pprint
+import subprocess
import urllib
import urllib2
@@ -90,9 +91,19 @@
'upload the data.')
+def _get_commit_count():
+ """Returns the number of git commits in the repository of the cwd."""
+ return subprocess.check_output(
+ ["git", "rev-list", "HEAD", "--count"]).strip()
+
+
+def _get_current_commit():
+ """Returns the hash of the current commit in the repository of the cwd."""
+ return subprocess.check_output(["git", "rev-parse", "HEAD"]).strip()
+
+
def upload_chart_data(master_name, bot_name, test_name, builder_name,
- build_number, revision, chart_data, point_id,
- server_url=None, dry_run=False):
+ build_number, chart_data, server_url=None, dry_run=False):
"""Uploads the provided chart data to an instance of performance dashboard.
See the argparse help above for description of the arguments.
@@ -128,6 +139,16 @@
except httplib.HTTPException as e:
raise _UploadException("HTTPException for JSON %s\n" % json_data)
+ if (not master_name or not bot_name or not test_name or not builder_name or
+ not build_number):
+ print ('Cannot upload perf data to the dashboard because not all of the '
+ 'following values are specified: master-name, bot-name, test_name, '
+ 'builder-name, build-number.')
+ return False
+
+ point_id = _get_commit_count()
+ cur_commit = _get_current_commit()
+
# Wrap the |chart_data| with meta data as required by the spec.
formatted_data = {
"master": master_name,
@@ -136,11 +157,11 @@
"buildername": builder_name,
"buildnumber": build_number,
"versions": {
- "mojo": revision
+ "mojo": cur_commit,
},
"point_id": point_id,
"supplemental": {},
- "chart_data": chart_data
+ "chart_data": chart_data,
}
upload_url = server_url if server_url else _LOCAL_SERVER