mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
86 lines
2.9 KiB
Python
Executable File
86 lines
2.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2015 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.
|
|
|
|
"""A tool that runs a perf test and uploads the resulting data to the
|
|
performance dashboard.
|
|
"""
|
|
|
|
import argparse
|
|
from mopy import perf_data_uploader
|
|
from mopy.version import Version
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def _GetCurrentCommitCount():
|
|
return subprocess.check_output(
|
|
["git", "rev-list", "HEAD", "--count"]).strip()
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="A tool that runs a perf test and uploads the resulting data "
|
|
"to the performance dashboard.")
|
|
|
|
parser.add_argument(
|
|
"--master-name",
|
|
help="Buildbot master name, used to construct link to buildbot log by "
|
|
"the dashboard, and also as the top-level category for the data.")
|
|
parser.add_argument(
|
|
"--perf-id",
|
|
help="Used as the second-level category for the data, usually the "
|
|
"platform type.")
|
|
parser.add_argument(
|
|
"--test-name",
|
|
help="Name of the test that the perf data was generated from.")
|
|
parser.add_argument(
|
|
"--builder-name",
|
|
help="Buildbot builder name, used to construct link to buildbot log by "
|
|
"the dashboard.")
|
|
parser.add_argument(
|
|
"--build-number", type=int,
|
|
help="Build number, used to construct link to buildbot log by the "
|
|
"dashboard.")
|
|
parser.add_argument(
|
|
"--perf-data-path",
|
|
help="The path to the perf data that the perf test generates.")
|
|
server_group = parser.add_mutually_exclusive_group()
|
|
server_group.add_argument(
|
|
"--testing-dashboard", action="store_true", default=True,
|
|
help="Upload the data to the testing dashboard (default).")
|
|
server_group.add_argument(
|
|
"--production-dashboard", dest="testing_dashboard", action="store_false",
|
|
default=False, help="Upload the data to the production dashboard.")
|
|
parser.add_argument("command", nargs=argparse.REMAINDER)
|
|
args = parser.parse_args()
|
|
|
|
subprocess.check_call(args.command)
|
|
|
|
if args.master_name is None or \
|
|
args.perf_id is None or \
|
|
args.test_name is None or \
|
|
args.builder_name is None or \
|
|
args.build_number is None or \
|
|
args.perf_data_path is None:
|
|
print "Won't upload perf data to the dashboard because not all of the " \
|
|
"following values are specified: master-name, perf-id, test-name, " \
|
|
"builder-name, build-number, perf-data-path."
|
|
return 0
|
|
|
|
revision = Version().version
|
|
perf_data = open(args.perf_data_path, "r")
|
|
point_id = _GetCurrentCommitCount()
|
|
|
|
result = perf_data_uploader.UploadPerfData(
|
|
args.master_name, args.perf_id, args.test_name, args.builder_name,
|
|
args.build_number, revision, perf_data, point_id, False,
|
|
args.testing_dashboard)
|
|
|
|
return 0 if result else 1
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|