Add swarming task for nanobench upload
BUG=skia:5719 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2364693003 Review-Url: https://codereview.chromium.org/2364693003
This commit is contained in:
parent
27c015dfcf
commit
f23dc49893
@ -764,49 +764,15 @@
|
|||||||
"@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/148aa78d7aa0000@@@"
|
"@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/148aa78d7aa0000@@@"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cmd": [
|
|
||||||
"git",
|
|
||||||
"show",
|
|
||||||
"HEAD",
|
|
||||||
"--format=%at",
|
|
||||||
"-s"
|
|
||||||
],
|
|
||||||
"cwd": "[SLAVE_BUILD]/skia",
|
|
||||||
"name": "git show",
|
|
||||||
"stdout": "/path/to/tmp/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cmd": [
|
|
||||||
"python",
|
|
||||||
"-u",
|
|
||||||
"\nimport os, sys\nfrom common import chromium_utils # Error? See https://crbug.com/584783.\n\n\nif os.path.exists(sys.argv[1]):\n chromium_utils.RemoveDirectory(sys.argv[1])\n",
|
|
||||||
"[SLAVE_BUILD]/perfdata/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/data"
|
|
||||||
],
|
|
||||||
"env": {
|
|
||||||
"PYTHONPATH": "[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/build/scripts"
|
|
||||||
},
|
|
||||||
"name": "rmtree data",
|
|
||||||
"~followup_annotations": [
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@import os, sys@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@from common import chromium_utils # Error? See https://crbug.com/584783.@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@if os.path.exists(sys.argv[1]):@@@",
|
|
||||||
"@@@STEP_LOG_LINE@python.inline@ chromium_utils.RemoveDirectory(sys.argv[1])@@@",
|
|
||||||
"@@@STEP_LOG_END@python.inline@@@"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cmd": [
|
"cmd": [
|
||||||
"python",
|
"python",
|
||||||
"-u",
|
"-u",
|
||||||
"\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
|
"\nimport sys, os\npath = sys.argv[1]\nmode = int(sys.argv[2])\nif not os.path.isdir(path):\n if os.path.exists(path):\n print \"%s exists but is not a dir\" % path\n sys.exit(1)\n os.makedirs(path, mode)\n",
|
||||||
"[SLAVE_BUILD]/perfdata/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/data",
|
"[SLAVE_BUILD]/swarming_temp_dir",
|
||||||
"511"
|
"511"
|
||||||
],
|
],
|
||||||
"name": "makedirs perf_dir",
|
"name": "makedirs swarming tmp dir (3)",
|
||||||
"~followup_annotations": [
|
"~followup_annotations": [
|
||||||
"@@@STEP_LOG_LINE@python.inline@@@@",
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||||
"@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
|
"@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
|
||||||
@ -825,25 +791,222 @@
|
|||||||
"python",
|
"python",
|
||||||
"-u",
|
"-u",
|
||||||
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
"\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
|
||||||
"[SLAVE_BUILD]/swarming_temp_dir/outputs/perf_skia/0/perfdata/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/data/nanobench_abc123.json",
|
"{\n \"args\": [\n \"--isolate\", \n \"[SLAVE_BUILD]/skia/infra/bots/upload_nano_results.isolate\", \n \"--isolated\", \n \"[SLAVE_BUILD]/swarming_temp_dir/skia-task-upload_nano_results_skia.isolated\", \n \"--config-variable\", \n \"OS\", \n \"Linux\", \n \"--blacklist\", \n \".git\", \n \"--blacklist\", \n \"out\", \n \"--blacklist\", \n \"*.pyc\", \n \"--blacklist\", \n \".recipe_deps\", \n \"--extra-variable\", \n \"WORKDIR\", \n \"[SLAVE_BUILD]\"\n ], \n \"dir\": \"[SLAVE_BUILD]\", \n \"version\": 1\n}",
|
||||||
"[SLAVE_BUILD]/perfdata/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/data/nanobench_abc123_1408633190.json"
|
"[SLAVE_BUILD]/swarming_temp_dir/upload_nano_results_skia.isolated.gen.json"
|
||||||
],
|
],
|
||||||
"name": "perf_results"
|
"name": "Write upload_nano_results_skia.isolated.gen.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cmd": [
|
"cmd": [
|
||||||
"python",
|
"python",
|
||||||
"-u",
|
"-u",
|
||||||
"RECIPE_MODULE[skia::core]/resources/upload_bench_results.py",
|
"RECIPE_MODULE[build::isolate]/resources/isolate.py",
|
||||||
"Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot",
|
"[SLAVE_BUILD]/swarming.client",
|
||||||
"5",
|
"batcharchive",
|
||||||
"[SLAVE_BUILD]/perfdata/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/data",
|
"--dump-json",
|
||||||
"abc123",
|
"/path/to/tmp/json",
|
||||||
"[SLAVE_BUILD]/skia/infra/bots/.recipe_deps/depot_tools/gsutil.py",
|
"--isolate-server",
|
||||||
"500"
|
"https://isolateserver.appspot.com",
|
||||||
|
"--verbose",
|
||||||
|
"[SLAVE_BUILD]/swarming_temp_dir/upload_nano_results_skia.isolated.gen.json"
|
||||||
],
|
],
|
||||||
"cwd": "[SLAVE_BUILD]/skia",
|
"name": "isolate tests (3)",
|
||||||
"name": "Upload perf results"
|
"~followup_annotations": [
|
||||||
|
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"upload_nano_results_skia\": \"[dummy hash for upload_nano_results_skia]\"@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||||
|
"@@@STEP_LOG_END@json.output@@@",
|
||||||
|
"@@@SET_BUILD_PROPERTY@swarm_hashes@{\"upload_nano_results_skia\": \"[dummy hash for upload_nano_results_skia]\"}@@@"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"\nimport json\nimport sys\nwith open(sys.argv[1]) as f:\n isolated = json.load(f)\nif not isolated.get('includes'):\n isolated['includes'] = []\nfor h in sys.argv[2:]:\n isolated['includes'].append(h)\nwith open(sys.argv[1], 'w') as f:\n json.dump(isolated, f, sort_keys=True)\n",
|
||||||
|
"[SLAVE_BUILD]/swarming_temp_dir/skia-task-upload_nano_results_skia.isolated",
|
||||||
|
"abc123"
|
||||||
|
],
|
||||||
|
"name": "add_isolated_input (2)",
|
||||||
|
"~followup_annotations": [
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@import json@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@with open(sys.argv[1]) as f:@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@ isolated = json.load(f)@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@if not isolated.get('includes'):@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@ isolated['includes'] = []@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@for h in sys.argv[2:]:@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@ isolated['includes'].append(h)@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@with open(sys.argv[1], 'w') as f:@@@",
|
||||||
|
"@@@STEP_LOG_LINE@python.inline@ json.dump(isolated, f, sort_keys=True)@@@",
|
||||||
|
"@@@STEP_LOG_END@python.inline@@@"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"[SLAVE_BUILD]/swarming.client/isolateserver.py",
|
||||||
|
"archive",
|
||||||
|
"--isolate-server",
|
||||||
|
"https://isolateserver.appspot.com",
|
||||||
|
"[SLAVE_BUILD]/swarming_temp_dir/skia-task-upload_nano_results_skia.isolated"
|
||||||
|
],
|
||||||
|
"name": "upload new .isolated file for upload_nano_results_skia",
|
||||||
|
"stdout": "/path/to/tmp/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"[SLAVE_BUILD]/swarming.client/swarming.py",
|
||||||
|
"trigger",
|
||||||
|
"--swarming",
|
||||||
|
"https://chromium-swarm.appspot.com",
|
||||||
|
"--isolate-server",
|
||||||
|
"https://isolateserver.appspot.com",
|
||||||
|
"--priority",
|
||||||
|
"90",
|
||||||
|
"--shards",
|
||||||
|
"1",
|
||||||
|
"--task-name",
|
||||||
|
"upload_nano_results_skia/Linux/def456/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/5",
|
||||||
|
"--dump-json",
|
||||||
|
"/path/to/tmp/json",
|
||||||
|
"--expiration",
|
||||||
|
"72000",
|
||||||
|
"--io-timeout",
|
||||||
|
"2400",
|
||||||
|
"--hard-timeout",
|
||||||
|
"14400",
|
||||||
|
"--dimension",
|
||||||
|
"cpu",
|
||||||
|
"x86-64-avx2",
|
||||||
|
"--dimension",
|
||||||
|
"gpu",
|
||||||
|
"none",
|
||||||
|
"--dimension",
|
||||||
|
"os",
|
||||||
|
"Linux",
|
||||||
|
"--dimension",
|
||||||
|
"pool",
|
||||||
|
"Skia",
|
||||||
|
"--tag",
|
||||||
|
"allow_milo:1",
|
||||||
|
"--tag",
|
||||||
|
"buildername:Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot",
|
||||||
|
"--tag",
|
||||||
|
"buildnumber:5",
|
||||||
|
"--tag",
|
||||||
|
"data:def456",
|
||||||
|
"--tag",
|
||||||
|
"master:client.skia",
|
||||||
|
"--tag",
|
||||||
|
"name:upload_nano_results_skia",
|
||||||
|
"--tag",
|
||||||
|
"os:Linux",
|
||||||
|
"--tag",
|
||||||
|
"revision:abc123",
|
||||||
|
"--tag",
|
||||||
|
"rietveld:https://codereview.chromium.org/500/#ps1",
|
||||||
|
"--tag",
|
||||||
|
"slavename:skiabot-linux-swarm-000",
|
||||||
|
"--tag",
|
||||||
|
"stepname:upload_nano_results_skia on Linux",
|
||||||
|
"--idempotent",
|
||||||
|
"def456",
|
||||||
|
"--",
|
||||||
|
"--workdir",
|
||||||
|
"../../..",
|
||||||
|
"upload_nano_results",
|
||||||
|
"rietveld=https://codereview.chromium.org",
|
||||||
|
"buildername=Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot",
|
||||||
|
"mastername=client.skia",
|
||||||
|
"buildnumber=5",
|
||||||
|
"slavename=skiabot-linux-swarm-000",
|
||||||
|
"reason=Triggered by Skia swarm_trigger Recipe",
|
||||||
|
"swarm_out_dir=${ISOLATED_OUTDIR}",
|
||||||
|
"patchset=1",
|
||||||
|
"issue=500",
|
||||||
|
"revision=abc123"
|
||||||
|
],
|
||||||
|
"name": "[trigger] upload_nano_results_skia on Linux",
|
||||||
|
"~followup_annotations": [
|
||||||
|
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"upload_nano_results_skia/Linux/def456/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/5\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"upload_nano_results_skia/Linux/def456/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/5\": {@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"shard_index\": 0, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"task_id\": \"10000\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||||
|
"@@@STEP_LOG_END@json.output@@@",
|
||||||
|
"@@@STEP_LINK@shard #0@https://chromium-swarm.appspot.com/user/task/10000@@@",
|
||||||
|
"@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/10000@@@"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"[SLAVE_BUILD]/swarming.client/swarming.py",
|
||||||
|
"collect",
|
||||||
|
"--swarming",
|
||||||
|
"https://chromium-swarm.appspot.com",
|
||||||
|
"--decorate",
|
||||||
|
"--print-status-updates",
|
||||||
|
"--json",
|
||||||
|
"{\"base_task_name\": \"upload_nano_results_skia/Linux/def456/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/5\", \"tasks\": {\"upload_nano_results_skia/Linux/def456/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Trybot/5\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
|
||||||
|
"--task-summary-json",
|
||||||
|
"/path/to/tmp/json"
|
||||||
|
],
|
||||||
|
"name": "upload_nano_results_skia on Linux",
|
||||||
|
"~followup_annotations": [
|
||||||
|
"@@@STEP_TEXT@swarming pending 71s@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@{@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"shards\": [@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ {@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"abandoned_ts\": null, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm30\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"durations\": [@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ 5.7, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ 31.5@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ ], @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"exit_codes\": [@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ 0, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ 0@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ ], @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"failure\": false, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"id\": \"148aa78d7aa0000\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"internal_failure\": false, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"isolated_out\": {@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"view_url\": \"blah\"@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ }, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"Heart beat succeeded on win32.\\n\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"Foo\"@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ ], @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"state\": 112, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"try_number\": 1, @@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ \"user\": \"unknown\"@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ }@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@ ]@@@",
|
||||||
|
"@@@STEP_LOG_LINE@json.output@}@@@",
|
||||||
|
"@@@STEP_LOG_END@json.output@@@",
|
||||||
|
"@@@STEP_LINK@shard #0 isolated out@blah@@@",
|
||||||
|
"@@@STEP_LINK@view steps on Milo@https://luci-milo.appspot.com/swarming/task/148aa78d7aa0000@@@"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "$result",
|
"name": "$result",
|
||||||
|
@ -65,6 +65,14 @@ TEST_BUILDERS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
UPLOAD_DIMENSIONS = {
|
||||||
|
'pool': 'Skia',
|
||||||
|
'os': 'Linux',
|
||||||
|
'cpu': 'x86-64-avx2',
|
||||||
|
'gpu': 'none',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def derive_compile_bot_name(api):
|
def derive_compile_bot_name(api):
|
||||||
builder_name = api.properties['buildername']
|
builder_name = api.properties['buildername']
|
||||||
builder_cfg = api.builder_name_schema.DictForBuilderName(builder_name)
|
builder_cfg = api.builder_name_schema.DictForBuilderName(builder_name)
|
||||||
@ -184,7 +192,8 @@ for r, _, files in os.walk(os.getcwd()):
|
|||||||
def trigger_task(api, task_name, builder, master, slave, buildnumber,
|
def trigger_task(api, task_name, builder, master, slave, buildnumber,
|
||||||
builder_cfg, got_revision, infrabots_dir, idempotent=False,
|
builder_cfg, got_revision, infrabots_dir, idempotent=False,
|
||||||
store_output=True, extra_isolate_hashes=None, expiration=None,
|
store_output=True, extra_isolate_hashes=None, expiration=None,
|
||||||
hard_timeout=None, io_timeout=None, cipd_packages=None):
|
hard_timeout=None, io_timeout=None, cipd_packages=None,
|
||||||
|
recipe_name=None, isolate_file=None, dimensions=None):
|
||||||
"""Trigger the given bot to run as a Swarming task."""
|
"""Trigger the given bot to run as a Swarming task."""
|
||||||
# TODO(borenet): We're using Swarming directly to run the recipe through
|
# TODO(borenet): We're using Swarming directly to run the recipe through
|
||||||
# recipes.py. Once it's possible to track the state of a Buildbucket build,
|
# recipes.py. Once it's possible to track the state of a Buildbucket build,
|
||||||
@ -212,19 +221,19 @@ def trigger_task(api, task_name, builder, master, slave, buildnumber,
|
|||||||
|
|
||||||
extra_args = [
|
extra_args = [
|
||||||
'--workdir', '../../..',
|
'--workdir', '../../..',
|
||||||
'swarm_%s' % task_name,
|
recipe_name or 'swarm_%s' % task_name,
|
||||||
]
|
]
|
||||||
for k, v in properties.iteritems():
|
for k, v in properties.iteritems():
|
||||||
extra_args.append('%s=%s' % (k, v))
|
extra_args.append('%s=%s' % (k, v))
|
||||||
|
|
||||||
isolate_base_dir = api.path['slave_build']
|
isolate_base_dir = api.path['slave_build']
|
||||||
dimensions = swarm_dimensions(builder_cfg)
|
dimensions = dimensions or swarm_dimensions(builder_cfg)
|
||||||
isolate_blacklist = ['.git', 'out', '*.pyc', '.recipe_deps']
|
isolate_blacklist = ['.git', 'out', '*.pyc', '.recipe_deps']
|
||||||
isolate_vars = {
|
isolate_vars = {
|
||||||
'WORKDIR': api.path['slave_build'],
|
'WORKDIR': api.path['slave_build'],
|
||||||
}
|
}
|
||||||
|
|
||||||
isolate_file = '%s_skia.isolate' % task_name
|
isolate_file = isolate_file or '%s_skia.isolate' % task_name
|
||||||
if 'Coverage' == builder_cfg.get('configuration'):
|
if 'Coverage' == builder_cfg.get('configuration'):
|
||||||
isolate_file = 'coverage_skia.isolate'
|
isolate_file = 'coverage_skia.isolate'
|
||||||
if 'RecreateSKPs' in builder:
|
if 'RecreateSKPs' in builder:
|
||||||
@ -467,40 +476,36 @@ def perf_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
|
|||||||
cipd_packages=cipd_packages)
|
cipd_packages=cipd_packages)
|
||||||
|
|
||||||
|
|
||||||
def perf_steps_collect(api, task, got_revision, is_trybot):
|
def perf_steps_collect(api, task, builder_cfg, got_revision, infrabots_dir):
|
||||||
"""Wait for perf steps to finish and upload results."""
|
"""Wait for perf steps to finish and upload results."""
|
||||||
# Wait for nanobench to finish, download the results.
|
# Wait for nanobench to finish, download the results.
|
||||||
api.run.rmtree(task.task_output_dir)
|
api.run.rmtree(task.task_output_dir)
|
||||||
api.swarming.collect_swarming_task(task)
|
if not api.vars.upload_perf_results: # pragma: nocover
|
||||||
|
api.swarming.collect_swarming_task(task)
|
||||||
|
return
|
||||||
|
|
||||||
|
perf_hash = api.swarming.collect_swarming_task_isolate_hash(task)
|
||||||
|
|
||||||
# Upload the results.
|
# Upload the results.
|
||||||
if api.vars.upload_perf_results:
|
task = trigger_task(
|
||||||
perf_data_dir = api.path['slave_build'].join(
|
api,
|
||||||
'perfdata', api.properties['buildername'], 'data')
|
'upload_nano_results',
|
||||||
git_timestamp = api.git.get_timestamp(test_data='1408633190',
|
api.properties['buildername'],
|
||||||
infra_step=True)
|
api.properties['mastername'],
|
||||||
api.run.rmtree(perf_data_dir)
|
api.properties['slavename'],
|
||||||
api.file.makedirs('perf_dir', perf_data_dir, infra_step=True)
|
api.properties['buildnumber'],
|
||||||
src_results_file = task.task_output_dir.join(
|
builder_cfg,
|
||||||
'0', 'perfdata', api.properties['buildername'], 'data',
|
got_revision,
|
||||||
'nanobench_%s.json' % got_revision)
|
infrabots_dir,
|
||||||
dst_results_file = perf_data_dir.join(
|
idempotent=True,
|
||||||
'nanobench_%s_%s.json' % (got_revision, git_timestamp))
|
store_output=False,
|
||||||
api.file.copy('perf_results', src_results_file, dst_results_file,
|
cipd_packages=None,
|
||||||
infra_step=True)
|
extra_isolate_hashes=[perf_hash],
|
||||||
|
recipe_name='upload_nano_results',
|
||||||
|
isolate_file='upload_nano_results.isolate',
|
||||||
|
dimensions=UPLOAD_DIMENSIONS)
|
||||||
|
|
||||||
gsutil_path = api.path['slave_build'].join(
|
return api.swarming.collect_swarming_task(task)
|
||||||
'skia', 'infra', 'bots', '.recipe_deps', 'depot_tools', 'gsutil.py')
|
|
||||||
upload_args = [api.properties['buildername'], api.properties['buildnumber'],
|
|
||||||
perf_data_dir, got_revision, gsutil_path]
|
|
||||||
if is_trybot:
|
|
||||||
upload_args.append(get_issue_num(api))
|
|
||||||
api.python(
|
|
||||||
'Upload perf results',
|
|
||||||
script=api.core.resource('upload_bench_results.py'),
|
|
||||||
args=upload_args,
|
|
||||||
cwd=api.path['checkout'],
|
|
||||||
infra_step=True)
|
|
||||||
|
|
||||||
|
|
||||||
def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
|
def test_steps_trigger(api, builder_cfg, got_revision, infrabots_dir,
|
||||||
@ -742,8 +747,8 @@ def RunSteps(api):
|
|||||||
got_revision, is_trybot, builder_cfg)
|
got_revision, is_trybot, builder_cfg)
|
||||||
|
|
||||||
if perf_task:
|
if perf_task:
|
||||||
perf_steps_collect(api, perf_task,
|
perf_steps_collect(api, perf_task, builder_cfg,
|
||||||
got_revision, is_trybot)
|
got_revision, infrabots_dir)
|
||||||
|
|
||||||
|
|
||||||
def test_for_bot(api, builder, mastername, slavename, testname=None):
|
def test_for_bot(api, builder, mastername, slavename, testname=None):
|
||||||
@ -777,6 +782,9 @@ def test_for_bot(api, builder, mastername, slavename, testname=None):
|
|||||||
test += api.step_data(
|
test += api.step_data(
|
||||||
'upload new .isolated file for perf_skia',
|
'upload new .isolated file for perf_skia',
|
||||||
stdout=api.raw_io.output('def456 XYZ.isolated'))
|
stdout=api.raw_io.output('def456 XYZ.isolated'))
|
||||||
|
test += api.step_data(
|
||||||
|
'upload new .isolated file for upload_nano_results_skia',
|
||||||
|
stdout=api.raw_io.output('def456 XYZ.isolated'))
|
||||||
if 'Housekeeper' in builder and 'RecreateSKPs' not in builder:
|
if 'Housekeeper' in builder and 'RecreateSKPs' not in builder:
|
||||||
test += api.step_data(
|
test += api.step_data(
|
||||||
'upload new .isolated file for housekeeper_skia',
|
'upload new .isolated file for housekeeper_skia',
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"\nimport glob\nimport sys\nwith open(sys.argv[1], 'w') as f:\n f.write('\\n'.join(glob.glob(sys.argv[2])))\n",
|
||||||
|
"/path/to/tmp/",
|
||||||
|
"nanobench*.json"
|
||||||
|
],
|
||||||
|
"cwd": "[CWD]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/data",
|
||||||
|
"name": "find results"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"gsutil",
|
||||||
|
"cp",
|
||||||
|
"-a",
|
||||||
|
"public-read",
|
||||||
|
"-z",
|
||||||
|
"json",
|
||||||
|
"[CWD]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/data/nanobench_abc123.json",
|
||||||
|
"gs://skia-perf/nano-json-v1/2012/05/14/12/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug/nanobench_abc123.json"
|
||||||
|
],
|
||||||
|
"name": "upload"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$result",
|
||||||
|
"recipe_result": null,
|
||||||
|
"status_code": 0
|
||||||
|
}
|
||||||
|
]
|
31
infra/bots/recipes/upload_nano_results.expected/trybot.json
Normal file
31
infra/bots/recipes/upload_nano_results.expected/trybot.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"python",
|
||||||
|
"-u",
|
||||||
|
"\nimport glob\nimport sys\nwith open(sys.argv[1], 'w') as f:\n f.write('\\n'.join(glob.glob(sys.argv[2])))\n",
|
||||||
|
"/path/to/tmp/",
|
||||||
|
"nanobench*.json"
|
||||||
|
],
|
||||||
|
"cwd": "[CWD]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot/data",
|
||||||
|
"name": "find results"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": [
|
||||||
|
"gsutil",
|
||||||
|
"cp",
|
||||||
|
"-a",
|
||||||
|
"public-read",
|
||||||
|
"-z",
|
||||||
|
"json",
|
||||||
|
"[CWD]/perfdata/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot/data/nanobench_abc123.json",
|
||||||
|
"gs://skia-perf/trybot/nano-json-v1/2012/05/14/12/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot/12345/1002/nanobench_abc123.json"
|
||||||
|
],
|
||||||
|
"name": "upload"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$result",
|
||||||
|
"recipe_result": null,
|
||||||
|
"status_code": 0
|
||||||
|
}
|
||||||
|
]
|
73
infra/bots/recipes/upload_nano_results.py
Normal file
73
infra/bots/recipes/upload_nano_results.py
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
# Recipe for uploading nanobench results.
|
||||||
|
|
||||||
|
|
||||||
|
DEPS = [
|
||||||
|
'build/file',
|
||||||
|
'recipe_engine/path',
|
||||||
|
'recipe_engine/properties',
|
||||||
|
'recipe_engine/step',
|
||||||
|
'recipe_engine/time',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def RunSteps(api):
|
||||||
|
# Upload the nanobench resuls.
|
||||||
|
builder_name = api.properties['buildername']
|
||||||
|
issue = str(api.properties.get('issue'))
|
||||||
|
patchset = str(api.properties.get('patchset'))
|
||||||
|
|
||||||
|
now = api.time.utcnow()
|
||||||
|
|
||||||
|
src_path = api.path['cwd'].join(
|
||||||
|
'perfdata', builder_name, 'data')
|
||||||
|
results = api.file.glob(
|
||||||
|
'find results',
|
||||||
|
'nanobench*.json',
|
||||||
|
cwd=src_path,
|
||||||
|
test_data=['nanobench_abc123.json'],
|
||||||
|
infra_step=True)
|
||||||
|
if len(results) != 1: # pragma: nocover
|
||||||
|
raise Exception('Unable to find nanobench JSON file!')
|
||||||
|
|
||||||
|
src = src_path.join(results[0])
|
||||||
|
basename = api.path.basename(src)
|
||||||
|
gs_path = '/'.join((
|
||||||
|
'nano-json-v1', str(now.year).zfill(4),
|
||||||
|
str(now.month).zfill(2), str(now.day).zfill(2), str(now.hour).zfill(2),
|
||||||
|
builder_name))
|
||||||
|
|
||||||
|
if builder_name.endswith('-Trybot'):
|
||||||
|
if not (issue and patchset): # pragma: nocover
|
||||||
|
raise Exception('issue and patchset properties are required for trybots.')
|
||||||
|
gs_path = '/'.join(('trybot', gs_path, issue, patchset))
|
||||||
|
|
||||||
|
dst = '/'.join(('gs://skia-perf', gs_path, basename))
|
||||||
|
|
||||||
|
api.step('upload',
|
||||||
|
cmd=['gsutil', 'cp', '-a', 'public-read', '-z', 'json', src, dst],
|
||||||
|
infra_step=True)
|
||||||
|
|
||||||
|
|
||||||
|
def GenTests(api):
|
||||||
|
builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug'
|
||||||
|
yield (
|
||||||
|
api.test('normal_bot') +
|
||||||
|
api.properties(buildername=builder,
|
||||||
|
revision='abc123',
|
||||||
|
path_config='kitchen')
|
||||||
|
)
|
||||||
|
|
||||||
|
builder = 'Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-Trybot'
|
||||||
|
yield (
|
||||||
|
api.test('trybot') +
|
||||||
|
api.properties(buildername=builder,
|
||||||
|
revision='abc123',
|
||||||
|
path_config='kitchen',
|
||||||
|
issue='12345',
|
||||||
|
patchset='1002')
|
||||||
|
)
|
10
infra/bots/upload_nano_results.isolate
Normal file
10
infra/bots/upload_nano_results.isolate
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
'includes': [
|
||||||
|
'swarm_recipe.isolate',
|
||||||
|
],
|
||||||
|
'variables': {
|
||||||
|
'files': [
|
||||||
|
'../../../.gclient',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user