WebRTC: Replace upload_perf_dashboard_results.py with a small custom script

(it preserves the same behavior of calling /add_point with Dashboard JSON v1)

TBR: sergiyb
Bug: 862134, 908001
Change-Id: I64e6791ed9bda04dcaab47bc6fc2cae3f2208066
Reviewed-on: https://chromium-review.googlesource.com/c/1400123
Reviewed-by: Oleh Prypin <oprypin@chromium.org>
Commit-Queue: Oleh Prypin <oprypin@chromium.org>
diff --git a/scripts/slave/README.recipes.md b/scripts/slave/README.recipes.md
index 8ee34f7..c8f9eb7 100644
--- a/scripts/slave/README.recipes.md
+++ b/scripts/slave/README.recipes.md
@@ -4017,66 +4017,68 @@
 
 [DEPS](/scripts/slave/recipe_modules/webrtc/__init__.py#1): [adb](#recipe_modules-adb), [archive](#recipe_modules-archive), [build](#recipe_modules-build), [chromium](#recipe_modules-chromium), [chromium\_android](#recipe_modules-chromium_android), [chromium\_checkout](#recipe_modules-chromium_checkout), [chromium\_swarming](#recipe_modules-chromium_swarming), [chromium\_tests](#recipe_modules-chromium_tests), [commit\_position](#recipe_modules-commit_position), [goma](#recipe_modules-goma), [isolate](#recipe_modules-isolate), [swarming](#recipe_modules-swarming), [test\_results](#recipe_modules-test_results), [test\_utils](#recipe_modules-test_utils), [trigger](#recipe_modules-trigger), [zip](#recipe_modules-zip), [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/scheduler][recipe_engine/recipe_modules/scheduler], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/tempfile][recipe_engine/recipe_modules/tempfile]
 
-#### **class [WebRTCApi](/scripts/slave/recipe_modules/webrtc/api.py#80)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
+#### **class [WebRTCApi](/scripts/slave/recipe_modules/webrtc/api.py#81)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 
-&mdash; **def [apply\_bot\_config](/scripts/slave/recipe_modules/webrtc/api.py#104)(self, builders, recipe_configs):**
+&mdash; **def [apply\_bot\_config](/scripts/slave/recipe_modules/webrtc/api.py#105)(self, builders, recipe_configs):**
 
-&emsp; **@property**<br>&mdash; **def [bucketname](/scripts/slave/recipe_modules/webrtc/api.py#139)(self):**
+&emsp; **@property**<br>&mdash; **def [bucketname](/scripts/slave/recipe_modules/webrtc/api.py#140)(self):**
 
-&mdash; **def [build\_android\_archive](/scripts/slave/recipe_modules/webrtc/api.py#421)(self):**
+&mdash; **def [build\_android\_archive](/scripts/slave/recipe_modules/webrtc/api.py#434)(self):**
 
-&emsp; **@property**<br>&mdash; **def [buildername](/scripts/slave/recipe_modules/webrtc/api.py#146)(self):**
+&emsp; **@property**<br>&mdash; **def [build\_url](/scripts/slave/recipe_modules/webrtc/api.py#151)(self):**
 
-&mdash; **def [check\_swarming\_version](/scripts/slave/recipe_modules/webrtc/api.py#295)(self):**
+&emsp; **@property**<br>&mdash; **def [buildername](/scripts/slave/recipe_modules/webrtc/api.py#147)(self):**
 
-&mdash; **def [checkout](/scripts/slave/recipe_modules/webrtc/api.py#235)(self, \*\*kwargs):**
+&mdash; **def [check\_swarming\_version](/scripts/slave/recipe_modules/webrtc/api.py#308)(self):**
 
-&mdash; **def [clean\_test\_output](/scripts/slave/recipe_modules/webrtc/api.py#504)(self):**
+&mdash; **def [checkout](/scripts/slave/recipe_modules/webrtc/api.py#248)(self, \*\*kwargs):**
+
+&mdash; **def [clean\_test\_output](/scripts/slave/recipe_modules/webrtc/api.py#517)(self):**
 
 Remove all test output in out/, since we have tests leaking files.
 
-&mdash; **def [cleanup](/scripts/slave/recipe_modules/webrtc/api.py#497)(self):**
+&mdash; **def [cleanup](/scripts/slave/recipe_modules/webrtc/api.py#510)(self):**
 
-&mdash; **def [compile](/scripts/slave/recipe_modules/webrtc/api.py#320)(self, phase=None):**
+&mdash; **def [compile](/scripts/slave/recipe_modules/webrtc/api.py#333)(self, phase=None):**
 
-&mdash; **def [configure\_isolate](/scripts/slave/recipe_modules/webrtc/api.py#186)(self, phase=None):**
+&mdash; **def [configure\_isolate](/scripts/slave/recipe_modules/webrtc/api.py#199)(self, phase=None):**
 
-&mdash; **def [configure\_swarming](/scripts/slave/recipe_modules/webrtc/api.py#198)(self):**
+&mdash; **def [configure\_swarming](/scripts/slave/recipe_modules/webrtc/api.py#211)(self):**
 
-&mdash; **def [download\_audio\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#267)(self):**
+&mdash; **def [download\_audio\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#280)(self):**
 
-&mdash; **def [download\_video\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#275)(self):**
+&mdash; **def [download\_video\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#288)(self):**
 
-&mdash; **def [extract\_build](/scripts/slave/recipe_modules/webrtc/api.py#478)(self):**
+&mdash; **def [extract\_build](/scripts/slave/recipe_modules/webrtc/api.py#491)(self):**
 
-&mdash; **def [get\_binary\_sizes](/scripts/slave/recipe_modules/webrtc/api.py#337)(self, files=None, base_dir=None):**
+&mdash; **def [get\_binary\_sizes](/scripts/slave/recipe_modules/webrtc/api.py#350)(self, files=None, base_dir=None):**
 
-&mdash; **def [get\_bot](/scripts/slave/recipe_modules/webrtc/api.py#150)(self, bucketname, buildername):**
+&mdash; **def [get\_bot](/scripts/slave/recipe_modules/webrtc/api.py#163)(self, bucketname, buildername):**
 
-&emsp; **@property**<br>&mdash; **def [master\_config](/scripts/slave/recipe_modules/webrtc/api.py#153)(self):**
+&emsp; **@property**<br>&mdash; **def [master\_config](/scripts/slave/recipe_modules/webrtc/api.py#166)(self):**
 
-&emsp; **@property**<br>&mdash; **def [mastername](/scripts/slave/recipe_modules/webrtc/api.py#157)(self):**
+&emsp; **@property**<br>&mdash; **def [mastername](/scripts/slave/recipe_modules/webrtc/api.py#170)(self):**
 
-&mdash; **def [maybe\_trigger](/scripts/slave/recipe_modules/webrtc/api.py#387)(self):**
+&mdash; **def [maybe\_trigger](/scripts/slave/recipe_modules/webrtc/api.py#400)(self):**
 
-&mdash; **def [package\_apprtcmobile](/scripts/slave/recipe_modules/webrtc/api.py#462)(self):**
+&mdash; **def [package\_apprtcmobile](/scripts/slave/recipe_modules/webrtc/api.py#475)(self):**
 
-&mdash; **def [package\_build](/scripts/slave/recipe_modules/webrtc/api.py#411)(self):**
+&mdash; **def [package\_build](/scripts/slave/recipe_modules/webrtc/api.py#424)(self):**
 
-&mdash; **def [related\_bots](/scripts/slave/recipe_modules/webrtc/api.py#161)(self):**
+&mdash; **def [related\_bots](/scripts/slave/recipe_modules/webrtc/api.py#174)(self):**
 
-&mdash; **def [run\_mb](/scripts/slave/recipe_modules/webrtc/api.py#304)(self, phase=None):**
+&mdash; **def [run\_mb](/scripts/slave/recipe_modules/webrtc/api.py#317)(self, phase=None):**
 
-&mdash; **def [runtests](/scripts/slave/recipe_modules/webrtc/api.py#353)(self, phase=None):**
+&mdash; **def [runtests](/scripts/slave/recipe_modules/webrtc/api.py#366)(self, phase=None):**
 
 Add a suite of test steps.
 
 Args:
   test_suite=The name of the test suite.
 
-&emsp; **@property**<br>&mdash; **def [should\_download\_audio\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#166)(self):**
+&emsp; **@property**<br>&mdash; **def [should\_download\_audio\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#179)(self):**
 
-&emsp; **@property**<br>&mdash; **def [should\_download\_video\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#176)(self):**
+&emsp; **@property**<br>&mdash; **def [should\_download\_video\_quality\_tools](/scripts/slave/recipe_modules/webrtc/api.py#189)(self):**
 ### *recipe_modules* / [zip](/scripts/slave/recipe_modules/zip)
 
 [DEPS](/scripts/slave/recipe_modules/zip/__init__.py#5): [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/python][recipe_engine/recipe_modules/python]
diff --git a/scripts/slave/recipe_modules/webrtc/api.py b/scripts/slave/recipe_modules/webrtc/api.py
index e8dbf81..018e837 100644
--- a/scripts/slave/recipe_modules/webrtc/api.py
+++ b/scripts/slave/recipe_modules/webrtc/api.py
@@ -4,6 +4,7 @@
 
 import os
 import sys
+import urllib
 
 from recipe_engine import recipe_api
 
@@ -147,6 +148,18 @@
   def buildername(self):
     return self.m.buildbucket.builder_name
 
+  @property
+  def build_url(self):
+    if self.m.runtime.is_luci:
+      base = 'https://ci.chromium.org/p/%s/builders/' % (
+          urllib.quote(self.m.buildbucket.build.builder.project))
+    else:
+      base = 'https://ci.chromium.org/buildbot/'
+    return base + '%s/%s/%s' % (
+        urllib.quote(self.bucketname),
+        urllib.quote(self.buildername),
+        urllib.quote(str(self.m.buildbucket.build.number)))
+
   def get_bot(self, bucketname, buildername):
     return Bot(self._builders, self._recipe_configs, bucketname, buildername)
 
diff --git a/scripts/slave/recipe_modules/webrtc/resources/upload_perf_dashboard_results.py b/scripts/slave/recipe_modules/webrtc/resources/upload_perf_dashboard_results.py
new file mode 100644
index 0000000..19d581f
--- /dev/null
+++ b/scripts/slave/recipe_modules/webrtc/resources/upload_perf_dashboard_results.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+# 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.
+
+import argparse
+import json
+import sys
+import urllib
+import urllib2
+
+
+def _GetDashboardJson(options):
+  """Produce a dict in the Dashboard JSON v1 format."""
+  # https://chromium.googlesource.com/catapult/+/master/dashboard/docs/data-format.md
+
+  with options.results_file as f:
+    chart_json = json.load(f)
+
+  return {
+      'master': options.perf_dashboard_machine_group,
+      'bot': options.perf_id,
+      'test_suite_name': options.name,
+      'point_id': options.commit_position,
+      'supplemental': {
+          'a_build_uri': '[%s](%s)' % ('Build status', options.build_url),
+      },
+      'versions': {
+          'webrtc_git':options.got_webrtc_revision
+      },
+      'chart_data': chart_json,
+  }
+
+
+def _SendResultsJson(url, results_json):
+  """Make a HTTP POST with the given JSON to the Performance Dashboard.
+
+  Args:
+    url: URL of Performance Dashboard instance, e.g.
+        "https://chromeperf.appspot.com".
+    results_json: JSON string that contains the data to be sent.
+  """
+  # When data is provided to urllib2.Request, a POST is sent instead of GET.
+  # The data must be in the application/x-www-form-urlencoded format.
+  data = urllib.urlencode({'data': results_json})
+  req = urllib2.Request(url + '/add_point', data)
+  return urllib2.urlopen(req)
+
+
+def _CreateParser():
+  parser = argparse.ArgumentParser()
+  parser.add_argument('--perf-dashboard-machine-group', required=True)
+  parser.add_argument('--perf-id', required=True)
+  parser.add_argument('--name', required=True)
+  parser.add_argument('--got-webrtc-revision', required=True)
+  parser.add_argument('--commit-position', type=int, required=True)
+  parser.add_argument('--build-url', required=True)
+  parser.add_argument('--results-url', required=True)
+  parser.add_argument('--results-file', type=argparse.FileType(), required=True)
+  parser.add_argument('--output-json-file', type=argparse.FileType('w'))
+  return parser
+
+
+def main(args):
+  parser = _CreateParser()
+  options = parser.parse_args(args)
+
+  dashboard_json = _GetDashboardJson(options)
+  if options.output_json_file:
+    with options.output_json_file as output_file:
+      json.dump(dashboard_json, output_file)
+  _SendResultsJson(options.results_url, json.dumps(dashboard_json))
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/scripts/slave/recipe_modules/webrtc/steps.py b/scripts/slave/recipe_modules/webrtc/steps.py
index b603e49..25ec01f 100644
--- a/scripts/slave/recipe_modules/webrtc/steps.py
+++ b/scripts/slave/recipe_modules/webrtc/steps.py
@@ -271,30 +271,25 @@
         perf_results = api.json.loads(task_output_dir[filepath])
         break
 
+  perf_bot_group = 'WebRTCPerf'
+  if api.runtime.is_experimental:
+    perf_bot_group = 'Experimental' + perf_bot_group
 
   args = [
-      '--build-dir', api.path['checkout'].join('out'),
-      '--buildername', api.buildbucket.builder_name,
-      '--buildnumber', api.buildbucket.build.number,
+      '--build-url', api.webrtc.build_url,
       '--name', name,
       '--perf-id', api.webrtc.c.PERF_ID,
       '--output-json-file', api.json.output(),
       '--results-file', api.json.input(perf_results),
       '--results-url', DASHBOARD_UPLOAD_URL,
+      '--commit-position', api.webrtc.revision_number,
       '--got-webrtc-revision', api.webrtc.revision,
+      '--perf-dashboard-machine-group', perf_bot_group,
   ]
 
-  if api.runtime.is_luci:
-    args.append('--is-luci-builder')
-    perf_bot_group = 'WebRTCPerf'
-    if api.runtime.is_experimental:
-      perf_bot_group = 'Experimental' + perf_bot_group
-    args.extend(['--perf-dashboard-machine-group', perf_bot_group])
-
   api.build.python(
       '%s Dashboard Upload' % name,
-      api.chromium.package_repo_resource(
-          'scripts', 'slave', 'upload_perf_dashboard_results.py'),
+      api.webrtc.resource('upload_perf_dashboard_results.py'),
       args,
       step_test_data=lambda: api.json.test_api.output({}),
       infra_step=True)
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_linux_trusty.json b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_linux_trusty.json
index 1801291..e5c5a08 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_linux_trusty.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_linux_trusty.json
@@ -1073,13 +1073,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Linux_Trusty/src/out",
-      "--buildername",
-      "Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Linux%20Trusty/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -1090,8 +1086,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Linux_Trusty",
     "infra_step": true,
@@ -1269,13 +1269,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Linux_Trusty/src/out",
-      "--buildername",
-      "Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Linux%20Trusty/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -1286,8 +1282,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Linux_Trusty",
     "infra_step": true,
@@ -1465,13 +1465,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Linux_Trusty/src/out",
-      "--buildername",
-      "Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Linux%20Trusty/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1482,8 +1478,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Linux_Trusty",
     "infra_step": true,
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_mac_10_11.json b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_mac_10_11.json
index 750ab38..29c996f 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_mac_10_11.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_mac_10_11.json
@@ -1138,13 +1138,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Mac_10_11/src/out",
-      "--buildername",
-      "Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Mac%2010.11/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -1155,8 +1151,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Mac_10_11",
     "infra_step": true,
@@ -1334,13 +1334,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Mac_10_11/src/out",
-      "--buildername",
-      "Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Mac%2010.11/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -1351,8 +1347,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Mac_10_11",
     "infra_step": true,
@@ -1530,13 +1530,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]/Mac_10_11/src/out",
-      "--buildername",
-      "Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Mac%2010.11/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1547,8 +1543,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]/Mac_10_11",
     "infra_step": true,
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_win7.json b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_win7.json
index d108eed..89473b1 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_win7.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_win7.json
@@ -1087,13 +1087,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]\\Win7\\src\\out",
-      "--buildername",
-      "Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Win7/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -1104,8 +1100,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]\\Win7",
     "infra_step": true,
@@ -1283,13 +1283,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]\\Win7\\src\\out",
-      "--buildername",
-      "Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Win7/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -1300,8 +1296,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]\\Win7",
     "infra_step": true,
@@ -1479,13 +1479,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[BUILDER_CACHE]\\Win7\\src\\out",
-      "--buildername",
-      "Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/buildbot/client.webrtc.perf/Win7/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1496,8 +1492,12 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
-      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9"
+      "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
+      "--perf-dashboard-machine-group",
+      "WebRTCPerf"
     ],
     "cwd": "[BUILDER_CACHE]\\Win7",
     "infra_step": true,
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__k_nexus5_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__k_nexus5_.json
index d277b82..f53901c 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__k_nexus5_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__k_nexus5_.json
@@ -495,13 +495,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (K Nexus5)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28K%20Nexus5%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -512,9 +508,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -634,13 +631,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (K Nexus5)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28K%20Nexus5%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -651,9 +644,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus4_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus4_.json
index 645fe80..d24f375 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus4_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus4_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus4)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus4%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus4)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus4%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus4)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus4%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus5_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus5_.json
index 791adb8..bc273f3 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus5_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus5_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus5)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus5%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus5)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus5%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus5)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus5%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus6_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus6_.json
index 2132dd0..5b42a22 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus6_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus6_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus6%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus6%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus6%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus7_2_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus7_2_.json
index 3234fd1..c40a438 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus7_2_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__l_nexus7_2_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus7.2)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus7.2%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus7.2)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus7.2%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (L Nexus7.2)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28L%20Nexus7.2%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__n_nexus6_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__n_nexus6_.json
index 486a26b..2585268 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__n_nexus6_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android32__n_nexus6_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (N Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28N%20Nexus6%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (N Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28N%20Nexus6%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android32 (N Nexus6)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android32%20%28N%20Nexus6%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__l_nexus9_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__l_nexus9_.json
index d0f6087..1b4440a 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__l_nexus9_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__l_nexus9_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (L Nexus9)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28L%20Nexus9%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (L Nexus9)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28L%20Nexus9%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (L Nexus9)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28L%20Nexus9%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__n_pixel_.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__n_pixel_.json
index 27d35c1..ebbae4e 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__n_pixel_.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_android64__n_pixel_.json
@@ -609,13 +609,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (N Pixel)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28N%20Pixel%29/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -626,9 +622,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -748,13 +745,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (N Pixel)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28N%20Pixel%29/0",
       "--name",
       "video_quality_loopback_test",
       "--perf-id",
@@ -765,9 +758,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -887,13 +881,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Android64 (N Pixel)",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Android64%20%28N%20Pixel%29/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -904,9 +894,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_linux_trusty.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_linux_trusty.json
index cb3d420..c83e96e 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_linux_trusty.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_linux_trusty.json
@@ -592,13 +592,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Linux%20Trusty/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -609,9 +605,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -790,13 +787,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Linux%20Trusty/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -807,9 +800,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -988,13 +982,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Linux Trusty",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Linux%20Trusty/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1005,9 +995,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_mac_10_11.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_mac_10_11.json
index 5ebb567..fe45ef8 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_mac_10_11.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_mac_10_11.json
@@ -592,13 +592,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Mac%2010.11/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -609,9 +605,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -790,13 +787,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Mac%2010.11/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -807,9 +800,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -988,13 +982,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]/scripts/slave/upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]/builder/src/out",
-      "--buildername",
-      "Perf Mac 10.11",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]/resources/upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Mac%2010.11/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1005,9 +995,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
diff --git a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_win7.json b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_win7.json
index a67ae9f..fdd4f6b 100644
--- a/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_win7.json
+++ b/scripts/slave/recipes/webrtc/standalone.expected/luci_webrtc_perf_perf_win7.json
@@ -606,13 +606,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]\\builder\\src\\out",
-      "--buildername",
-      "Perf Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Win7/0",
       "--name",
       "isac_fix_test",
       "--perf-id",
@@ -623,9 +619,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -804,13 +801,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]\\builder\\src\\out",
-      "--buildername",
-      "Perf Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Win7/0",
       "--name",
       "low_bandwidth_audio_perf_test",
       "--perf-id",
@@ -821,9 +814,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],
@@ -1002,13 +996,9 @@
       "--with-third-party-lib",
       "--",
       "python",
-      "RECIPE_PACKAGE_REPO[build]\\scripts\\slave\\upload_perf_dashboard_results.py",
-      "--build-dir",
-      "[CACHE]\\builder\\src\\out",
-      "--buildername",
-      "Perf Win7",
-      "--buildnumber",
-      "0",
+      "RECIPE_MODULE[build::webrtc]\\resources\\upload_perf_dashboard_results.py",
+      "--build-url",
+      "https://ci.chromium.org/p/webrtc/builders/luci.webrtc.perf/Perf%20Win7/0",
       "--name",
       "webrtc_perf_tests",
       "--perf-id",
@@ -1019,9 +1009,10 @@
       "{\"charts\": {\"html_size\": {\"http://www.google.com/\": {\"type\": \"scalar\", \"units\": \"bytes\", \"value\": 13579}}, \"load_times\": {\"http://www.google.com/\": {\"std\": 1.25, \"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"value\": [4.2]}}, \"warm_times\": {\"http://www.google.com/\": {\"type\": \"list_of_scalar_values\", \"units\": \"sec\", \"values\": [9, 9, 8, 9]}}}, \"format_version\": \"1.0\"}",
       "--results-url",
       "https://chromeperf.appspot.com",
+      "--commit-position",
+      "170242",
       "--got-webrtc-revision",
       "f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9",
-      "--is-luci-builder",
       "--perf-dashboard-machine-group",
       "ExperimentalWebRTCPerf"
     ],