Chrome Performance Dashboard Data Format #

Recommended Format: Dashboard JSON v1 #

The endpoint that accepts new points (https://chromeperf.appspot.com/add_point) accepts HTTP POST requests. With the POST request, there should be one parameter given, called "data", the value of which is JSON which contains all of the data being uploaded.

Example:

{
  "master": "master.chromium.perf",
  "bot": "linux-release",
  "point_id": 123456,
  "versions": {
    "version type": "version string"
  },
  "supplemental": {
    "field name": "supplemental data string",
    "default_rev": "r_chrome_version"
  },
  "chart_data": {/*... as output by Telemetry; see below ...*/}
}

Fields:

 * `master` (string): Buildbot master name or top-level category for data.
 * `bot` (string): Buildbot builder name, or another string that
 represents platform type.
 * `test_suite_name` (string): A string to use in the perf dashboard test
 * path after master/bot. Can contain slashes.
 * `format_version` (string): Allows dashboard to know how to process
 the structure.
 * `revisions` (dict): Maps repo name to revision.
 * `supplemental` (dict): Unstructured key-value pairs which may be
 displayed on the dashboard. Used to describe bot hardware, OS,
 Chrome feature status, etc.
 * `chart_data` (dict): The chart JSON as output by Telemetry.

### Chart data:

This contains all of the test results and any metadata that is stored with
the test.

```json
{
  "format_version": "1.0",
  "benchmark_name": "page_cycler.typical_25",
  "charts": {
    "warm_times": {
      "http://www.google.com/": {
        "type": "list_of_scalar_values",
        "values": [9, 9, 8, 9],
      },
      "http://www.yahoo.com/": {
        "type": "list_of_scalar_values",
        "values": [4, 5, 4, 4],
      },
      "summary": {
        "type": "list_of_scalar_values",
        "values": [13, 14, 12, 13],
        "file": "gs://..."
      },
    }
  }
}

Fields:

Legacy Format #

This format is deprecated and should not be used for new clients.

In the format described below, the value of "data" in the HTTP POST should be a JSON encoding of a list of points to add. Each point is a map of property names to values for that point.

Example 1:

[
  {
    "master": "SenderType",
    "bot": "platform-type",
    "test": "my_test_suite/chart_name/trace_name",
    "revision": 1234,
    "value": 18.5
  }
]

Required fields:

Example 2 (including optional fields):

[
  {
    "master": "ChromiumPerf",
    "bot": "linux-release",
    "test": "sunspider/string-unpack-code/ref",
    "revision": 33241,
    "value": "18.5",
    "error": "0.5",
    "units": "ms",
    "masterid": "master.chromium.perf",
    "buildername": "Linux Builder",
    "buildnumber": 75,
    "supplemental_columns": {
      "r_webkit_rev": "167808",
      "a_default_rev": "r_webkit_rev"
    }
  },
  {
    "master": "ChromiumPerf",
    "bot": "linux-release",
    "test": "sunspider/string-unpack-code",
    "revision": 33241,
    "value": "18.4",
    "error": "0.489",
    "units": "ms",
    "masterid": "master.chromium.perf",
    "buildername": "Linux Builder",
    "buildnumber": 75,
    "supplemental_columns": {
      "r_webkit_rev": "167808",
      "a_default_rev": "r_webkit_rev"
    }
  }
]

Optional fields:

Providing test and unit information #

Sending test descriptions are supported in with Dashboard JSON v1. Test descriptions for Telemetry tests are provided in code for the benchmarks, and are included by Telemetry in the chart JSON output.

Implementations of code that sends data to the dashboard:

Getting set up with new test results #

Once you're ready to start sending data to the real perf dashboard, there are a few more things you might want to do. Firstly, in order for the dashboard to accept the data, the IP of the sender must be whitelisted.

If your data is not internal-only data, you can request that it be marked as such, again by filing an issue.

Finally, if you want to monitor your the test results, you can decide which tests you want to be monitored, who should be receiving alerts, and whether you want to set any special thresholds for alerting.

Contact #

In general, for questions or requests you can email chrome-perf-dashboard-team@google.com.