aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra
diff options
context:
space:
mode:
authorGravatar Kevin Lubick <kjlubick@google.com>2017-08-31 10:39:05 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-31 14:40:51 +0000
commit2dafbd796d3dadfbec313577af525ce699ae1479 (patch)
tree64c89f948a9a7163a839b030389888370b977ef0 /infra
parenta25fbef56a4e70192b0b322b6d87b78839fab0e5 (diff)
Add Correctness tests for Chromecast
Bug: skia: NOTRY=true Change-Id: Ib604bad8eda6ba4382b850f7c5f318fb0f114401 Reviewed-on: https://skia-review.googlesource.com/20051 Commit-Queue: Kevin Lubick <kjlubick@google.com> Reviewed-by: Eric Boren <borenet@google.com>
Diffstat (limited to 'infra')
-rw-r--r--infra/bots/jobs.json10
-rw-r--r--infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release.json123
-rw-r--r--infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py51
-rw-r--r--infra/bots/recipes/compile.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json3
-rw-r--r--infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug.json112
-rw-r--r--infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json112
-rw-r--r--infra/bots/recipes/test.expected/Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json759
-rw-r--r--infra/bots/recipes/test.py38
-rw-r--r--infra/bots/tasks.json260
9 files changed, 1434 insertions, 34 deletions
diff --git a/infra/bots/jobs.json b/infra/bots/jobs.json
index 934bd78bd7..62a80e749a 100644
--- a/infra/bots/jobs.json
+++ b/infra/bots/jobs.json
@@ -184,8 +184,8 @@
"Perf-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Debug-ASAN",
"Perf-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release",
"Perf-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release-ASAN",
- "Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_SK_CPU_LIMIT_SSE41",
"Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41",
+ "Perf-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_SK_CPU_LIMIT_SSE41",
"Perf-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug",
"Perf-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-ANGLE",
"Perf-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan",
@@ -266,8 +266,8 @@
"Test-Android-Clang-MotoG4-GPU-Adreno405-arm-Debug-Android",
"Test-Android-Clang-MotoG4-GPU-Adreno405-arm-Release-Android",
"Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android",
- "Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_Vulkan",
"Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_CCPR",
+ "Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-Android_Vulkan",
"Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-Android",
"Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-Android_Vulkan",
"Test-Android-Clang-Nexus10-CPU-Exynos5250-arm-Debug-Android",
@@ -305,6 +305,10 @@
"Test-ChromeOS-Clang-Chromebook_CB5_311-GPU-TegraK1-arm-Release",
"Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug",
"Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Release",
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug",
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release",
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug",
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN",
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN",
@@ -358,9 +362,9 @@
"Test-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release-ASAN",
"Test-Ubuntu17-Clang-Golo-GPU-QuadroP400-x86_64-Release-TSAN",
"Test-Ubuntu17-GCC-Golo-GPU-GT610-x86_64-Release-PreAbandonGpuContext",
- "Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_SK_CPU_LIMIT_SSE41",
"Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_AbandonGpuContext_SK_CPU_LIMIT_SSE41",
"Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_PreAbandonGpuContext_SK_CPU_LIMIT_SSE41",
+ "Test-Ubuntu17-GCC-Golo-GPU-QuadroP400-x86_64-Release-Valgrind_SK_CPU_LIMIT_SSE41",
"Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug",
"Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-ANGLE",
"Test-Win10-MSVC-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-Vulkan",
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release.json
index fb0dc13b73..24eef46e3c 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release.json
@@ -36,7 +36,8 @@
"ninja",
"-C",
"[START_DIR]/out/Release",
- "nanobench"
+ "nanobench",
+ "dm"
],
"cwd": "[START_DIR]/skia",
"env": {
@@ -187,9 +188,46 @@
},
{
"cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/bin"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/bin"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "/cache/skia/nanobench"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete old nanobench"
+ },
+ {
+ "cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skia/resources",
"/cache/skia/resources"
],
@@ -215,7 +253,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -327,7 +365,7 @@
"cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skp",
"/cache/skia/skps"
],
@@ -353,7 +391,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -482,7 +520,7 @@
"cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skimage",
"/cache/skia/images"
],
@@ -508,7 +546,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -637,7 +675,7 @@
"cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/svg",
"/cache/skia/svgs"
],
@@ -663,7 +701,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -693,7 +731,7 @@
"adb",
"push",
"[START_DIR]/out/Release/dm",
- "/cache/skia/"
+ "/cache/skia/bin"
],
"cwd": "[START_DIR]/skia",
"env": {
@@ -713,7 +751,7 @@
"-t",
"-t",
"root@192.168.1.2",
- "/cache/skia/dm",
+ "/cache/skia/bin/dm",
"--some-flag"
],
"env": {
@@ -760,6 +798,55 @@
},
{
"cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "-r",
+ "/cache/skia/bin"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete executables"
+ },
+ {
+ "cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect"
+ },
+ {
+ "cmd": [
+ "adb",
+ "connect",
+ "192.168.1.2:5555"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "adb connect 192.168.1.2:5555 (2)"
+ },
+ {
+ "cmd": [
"python",
"-u",
"\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n",
@@ -794,6 +881,20 @@
},
{
"cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect (2)"
+ },
+ {
+ "cmd": [
"adb",
"kill-server"
],
diff --git a/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py b/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py
index ec48a7dfa9..7f2c167324 100644
--- a/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py
+++ b/infra/bots/recipe_modules/flavor/gn_chromecast_flavor.py
@@ -15,6 +15,8 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
super(GNChromecastFlavorUtils, self).__init__(m)
self._ever_ran_adb = False
self._user_ip = ''
+ self.m.vars.android_bin_dir = self.m.path.join(self.m.vars.android_bin_dir,
+ 'bin')
@property
def user_ip_host(self):
@@ -90,8 +92,16 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
self._py('fetch-gn', self.m.vars.skia_dir.join('bin', 'fetch-gn'))
self._run('gn gen', gn, 'gen', self.out_dir, '--args=' + gn_args)
- # We only build perf for the chromecasts.
- self._run('ninja', ninja, '-C', self.out_dir, 'nanobench')
+ self._run('ninja', ninja, '-C', self.out_dir, 'nanobench', 'dm')
+
+ def install(self):
+ super(GNChromecastFlavorUtils, self).install()
+ self._adb('mkdir ' + self.m.vars.android_bin_dir,
+ 'shell', 'mkdir', '-p', self.m.vars.android_bin_dir)
+ # TODO(kjlubick): Remove this after we are backfilled up and don't need
+ # to manually delete this
+ self._ssh('Delete old nanobench', 'rm', '/cache/skia/nanobench',
+ abort_on_failure=False)
def _adb(self, title, *cmd, **kwargs):
if not self._ever_ran_adb:
@@ -131,13 +141,45 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
for f in fs:
print os.path.join(p,f)
hp = os.path.realpath(os.path.join(host, p, f))
- if os.stat(hp).st_size > (3 * 1024 * 1024):
+ if os.stat(hp).st_size > (1.5 * 1024 * 1024):
print "Skipping because it is too big"
else:
subprocess.check_call(['adb', 'push',
hp, os.path.join(device, p, f)])
""", args=[host, device], infra_step=True)
+ def cleanup_steps(self):
+ if self._ever_ran_adb:
+ # To clean up disk space for next time
+ self._ssh('Delete executables', 'rm', '-r', self.m.vars.android_bin_dir,
+ abort_on_failure=False)
+ # Reconnect if was disconnected
+ self._adb('disconnect')
+ self._connect_to_remote()
+ self.m.run(self.m.python.inline, 'dump log', program="""
+ import os
+ import subprocess
+ import sys
+ out = sys.argv[1]
+ log = subprocess.check_output(['adb', 'logcat', '-d'])
+ for line in log.split('\\n'):
+ tokens = line.split()
+ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':
+ addr, path = tokens[-2:]
+ local = os.path.join(out, os.path.basename(path))
+ if os.path.exists(local):
+ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])
+ line = line.replace(addr, addr + ' ' + sym.strip())
+ print line
+ """,
+ args=[self.m.vars.skia_out.join(self.m.vars.configuration)],
+ infra_step=True,
+ abort_on_failure=False)
+
+ self._adb('disconnect')
+ self._adb('kill adb server', 'kill-server')
+
+
def _ssh(self, title, *cmd, **kwargs):
ssh_cmd = ['ssh', '-oConnectTimeout=15', '-oBatchMode=yes',
'-t', '-t', 'root@%s' % self.user_ip] + list(cmd)
@@ -147,9 +189,10 @@ class GNChromecastFlavorUtils(gn_android_flavor.GNAndroidFlavorUtils):
def step(self, name, cmd, **kwargs):
app = self.m.vars.skia_out.join(self.m.vars.configuration, cmd[0])
+
self._adb('push %s' % cmd[0],
'push', app, self.m.vars.android_bin_dir)
- cmd[0] = '%s%s' % (self.m.vars.android_bin_dir, cmd[0])
+ cmd[0] = '%s/%s' % (self.m.vars.android_bin_dir, cmd[0])
self._ssh(str(name), *cmd)
diff --git a/infra/bots/recipes/compile.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json b/infra/bots/recipes/compile.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json
index be2fbb2f3b..64376847b1 100644
--- a/infra/bots/recipes/compile.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json
+++ b/infra/bots/recipes/compile.expected/Build-Ubuntu-GCC-arm-Release-Chromecast.json
@@ -119,7 +119,8 @@
"ninja",
"-C",
"[CUSTOM_/_B_WORK]/skia/out/Build-Ubuntu-GCC-arm-Release-Chromecast/Release",
- "nanobench"
+ "nanobench",
+ "dm"
],
"cwd": "[CUSTOM_/_B_WORK]/skia",
"env": {
diff --git a/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug.json b/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug.json
index 7556c66ee3..5f9562fdda 100644
--- a/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug.json
+++ b/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug.json
@@ -58,9 +58,46 @@
},
{
"cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/bin"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/bin"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "/cache/skia/nanobench"
+ ],
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete old nanobench"
+ },
+ {
+ "cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skia/resources",
"/cache/skia/resources"
],
@@ -86,7 +123,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -198,7 +235,7 @@
"cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skp",
"/cache/skia/skps"
],
@@ -224,7 +261,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -282,7 +319,7 @@
"adb",
"push",
"[START_DIR]/out/Debug/nanobench",
- "/cache/skia/"
+ "/cache/skia/bin"
],
"cwd": "[START_DIR]/skia",
"env": {
@@ -302,7 +339,7 @@
"-t",
"-t",
"root@192.168.1.2",
- "/cache/skia/nanobench",
+ "/cache/skia/bin/nanobench",
"--nogpu",
"--config",
"8888",
@@ -330,6 +367,55 @@
},
{
"cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "-r",
+ "/cache/skia/bin"
+ ],
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete executables"
+ },
+ {
+ "cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect"
+ },
+ {
+ "cmd": [
+ "adb",
+ "connect",
+ "192.168.1.2:5555"
+ ],
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "adb connect 192.168.1.2:5555 (2)"
+ },
+ {
+ "cmd": [
"python",
"-u",
"\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n",
@@ -364,6 +450,20 @@
},
{
"cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Debug",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect (2)"
+ },
+ {
+ "cmd": [
"adb",
"kill-server"
],
diff --git a/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json b/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json
index fe43eb3bb3..173c236ee1 100644
--- a/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json
+++ b/infra/bots/recipes/perf.expected/Perf-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json
@@ -58,9 +58,46 @@
},
{
"cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/bin"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/bin"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "/cache/skia/nanobench"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete old nanobench"
+ },
+ {
+ "cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skia/resources",
"/cache/skia/resources"
],
@@ -86,7 +123,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -198,7 +235,7 @@
"cmd": [
"python",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (3 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
"[START_DIR]/skp",
"/cache/skia/skps"
],
@@ -224,7 +261,7 @@
"@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
"@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
"@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
- "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (3 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
"@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
"@@@STEP_LOG_LINE@python.inline@ else:@@@",
"@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
@@ -318,7 +355,7 @@
"adb",
"push",
"[START_DIR]/out/Release/nanobench",
- "/cache/skia/"
+ "/cache/skia/bin"
],
"cwd": "[START_DIR]/skia",
"env": {
@@ -338,7 +375,7 @@
"-t",
"-t",
"root@192.168.1.2",
- "/cache/skia/nanobench",
+ "/cache/skia/bin/nanobench",
"--nocpu",
"--config",
"gles",
@@ -420,6 +457,55 @@
},
{
"cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "-r",
+ "/cache/skia/bin"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete executables"
+ },
+ {
+ "cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect"
+ },
+ {
+ "cmd": [
+ "adb",
+ "connect",
+ "192.168.1.2:5555"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "adb connect 192.168.1.2:5555 (2)"
+ },
+ {
+ "cmd": [
"python",
"-u",
"\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n",
@@ -454,6 +540,20 @@
},
{
"cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect (2)"
+ },
+ {
+ "cmd": [
"adb",
"kill-server"
],
diff --git a/infra/bots/recipes/test.expected/Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json b/infra/bots/recipes/test.expected/Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json
new file mode 100644
index 0000000000..558fcedc2d
--- /dev/null
+++ b/infra/bots/recipes/test.expected/Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release.json
@@ -0,0 +1,759 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nCHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')\nwith open(CHROMECAST_IP_FILE, 'r') as f:\n print f.read()\n"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "read chromecast ip",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@CHROMECAST_IP_FILE = os.path.expanduser('~/chromecast.txt')@@@",
+ "@@@STEP_LOG_LINE@python.inline@with open(CHROMECAST_IP_FILE, 'r') as f:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print f.read()@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "connect",
+ "192.168.1.2:5555"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "adb connect 192.168.1.2:5555"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/resources"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/resources"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/bin"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/bin"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "/cache/skia/nanobench"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete old nanobench"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "[START_DIR]/skia/resources",
+ "/cache/skia/resources"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /cache/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
+ "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ continue@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
+ "@@@STEP_LOG_LINE@python.inline@ else:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hp, os.path.join(device, p, f)])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "Get downloaded SKP VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "42",
+ "[START_DIR]/tmp/SKP_VERSION"
+ ],
+ "infra_step": true,
+ "name": "write SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "cat",
+ "/cache/skia/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "read /cache/skia/SKP_VERSION",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "rm",
+ "-f",
+ "/cache/skia/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "rm /cache/skia/SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "rm",
+ "-r",
+ "/cache/skia/skps"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "rm /cache/skia/skps"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/skps"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/skps"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n hp = os.path.realpath(os.path.join(host, p, f))\n if os.stat(hp).st_size > (1.5 * 1024 * 1024):\n print \"Skipping because it is too big\"\n else:\n subprocess.check_call(['adb', 'push',\n hp, os.path.join(device, p, f)])\n",
+ "[START_DIR]/skp",
+ "/cache/skia/skps"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /cache/skia/skps",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
+ "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ continue@@@",
+ "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hp = os.path.realpath(os.path.join(host, p, f))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.stat(hp).st_size > (1.5 * 1024 * 1024):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print \"Skipping because it is too big\"@@@",
+ "@@@STEP_LOG_LINE@python.inline@ else:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['adb', 'push',@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hp, os.path.join(device, p, f)])@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "push",
+ "[START_DIR]/tmp/SKP_VERSION",
+ "/cache/skia/SKP_VERSION"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/tmp/SKP_VERSION /cache/skia/SKP_VERSION"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmtree",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm"
+ ],
+ "infra_step": true,
+ "name": "rmtree dm"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm"
+ ],
+ "infra_step": true,
+ "name": "makedirs dm"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "rm",
+ "-r",
+ "/cache/skia/dm_out"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "rm /cache/skia/dm_out"
+ },
+ {
+ "cmd": [
+ "adb",
+ "shell",
+ "mkdir",
+ "-p",
+ "/cache/skia/dm_out"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "mkdir /cache/skia/dm_out"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[START_DIR]/tmp"
+ ],
+ "infra_step": true,
+ "name": "makedirs tmp_dir"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read()\n with open(sys.argv[1], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n print e\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print 'Retry in %d seconds.' % waittime\n time.sleep(waittime)\n",
+ "[START_DIR]/tmp/uninteresting_hashes.txt"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "get uninteresting hashes",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import contextlib@@@",
+ "@@@STEP_LOG_LINE@python.inline@import math@@@",
+ "@@@STEP_LOG_LINE@python.inline@import socket@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@import time@@@",
+ "@@@STEP_LOG_LINE@python.inline@import urllib2@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'@@@",
+ "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@",
+ "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@",
+ "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@",
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
+ "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ try:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@",
+ "@@@STEP_LOG_LINE@python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ hashes = w.read()@@@",
+ "@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[1], 'w') as f:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ break@@@",
+ "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print e@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@",
+ "@@@STEP_LOG_LINE@python.inline@ raise@@@",
+ "@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print 'Retry in %d seconds.' % waittime@@@",
+ "@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "push",
+ "[START_DIR]/tmp/uninteresting_hashes.txt",
+ "/cache/skia/uninteresting_hashes.txt"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /cache/skia/uninteresting_hashes.txt"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
+ ],
+ "name": "get swarming bot id",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
+ ],
+ "name": "get swarming task id",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb",
+ "push",
+ "[START_DIR]/out/Release/dm",
+ "/cache/skia/bin"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "push dm"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "/cache/skia/bin/dm",
+ "--undefok",
+ "--resourcePath",
+ "/cache/skia/resources",
+ "--skps",
+ "/cache/skia/skps",
+ "--images",
+ "/cache/skia/resources/color_wheel.jpg",
+ "--dont_write",
+ "pdf",
+ "--randomProcessorTest",
+ "--threads",
+ "0",
+ "--nocpu",
+ "--config",
+ "gles",
+ "8888",
+ "--src",
+ "tests",
+ "gm",
+ "image",
+ "colorImage",
+ "svg",
+ "--blacklist",
+ "_",
+ "svg",
+ "_",
+ "svgparse_",
+ "_",
+ "test",
+ "_",
+ "GrShape",
+ "_",
+ "image",
+ "_",
+ "interlaced1.png",
+ "_",
+ "image",
+ "_",
+ "interlaced2.png",
+ "_",
+ "image",
+ "_",
+ "interlaced3.png",
+ "_",
+ "image",
+ "_",
+ ".arw",
+ "_",
+ "image",
+ "_",
+ ".cr2",
+ "_",
+ "image",
+ "_",
+ ".dng",
+ "_",
+ "image",
+ "_",
+ ".nef",
+ "_",
+ "image",
+ "_",
+ ".nrw",
+ "_",
+ "image",
+ "_",
+ ".orf",
+ "_",
+ "image",
+ "_",
+ ".raf",
+ "_",
+ "image",
+ "_",
+ ".rw2",
+ "_",
+ "image",
+ "_",
+ ".pef",
+ "_",
+ "image",
+ "_",
+ ".srw",
+ "_",
+ "image",
+ "_",
+ ".ARW",
+ "_",
+ "image",
+ "_",
+ ".CR2",
+ "_",
+ "image",
+ "_",
+ ".DNG",
+ "_",
+ "image",
+ "_",
+ ".NEF",
+ "_",
+ "image",
+ "_",
+ ".NRW",
+ "_",
+ "image",
+ "_",
+ ".ORF",
+ "_",
+ "image",
+ "_",
+ ".RAF",
+ "_",
+ "image",
+ "_",
+ ".RW2",
+ "_",
+ "image",
+ "_",
+ ".PEF",
+ "_",
+ "image",
+ "_",
+ ".SRW",
+ "--match",
+ "~matrixconvolution",
+ "~blur_image_filter",
+ "~blur_0.01",
+ "~GM_animated-image-blurs"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "dm"
+ },
+ {
+ "cmd": [
+ "adb",
+ "pull",
+ "/cache/skia/dm_out",
+ "[CUSTOM_[SWARM_OUT_DIR]]/dm"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "pull /cache/skia/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm"
+ },
+ {
+ "cmd": [
+ "ssh",
+ "-oConnectTimeout=15",
+ "-oBatchMode=yes",
+ "-t",
+ "-t",
+ "root@192.168.1.2",
+ "rm",
+ "-r",
+ "/cache/skia/bin"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "name": "Delete executables"
+ },
+ {
+ "cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect"
+ },
+ {
+ "cmd": [
+ "adb",
+ "connect",
+ "192.168.1.2:5555"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "adb connect 192.168.1.2:5555 (2)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n tokens = line.split()\n if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n addr, path = tokens[-2:]\n local = os.path.join(out, os.path.basename(path))\n if os.path.exists(local):\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n",
+ "[START_DIR]/out/Release"
+ ],
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "dump log",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@python.inline@@@@",
+ "@@@STEP_LOG_LINE@python.inline@import os@@@",
+ "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
+ "@@@STEP_LOG_LINE@python.inline@import sys@@@",
+ "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
+ "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
+ "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
+ "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@",
+ "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@",
+ "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@",
+ "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
+ "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@",
+ "@@@STEP_LOG_LINE@python.inline@ print line@@@",
+ "@@@STEP_LOG_END@python.inline@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "adb"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "disconnect (2)"
+ },
+ {
+ "cmd": [
+ "adb",
+ "kill-server"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "BUILDTYPE": "Release",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
+ "SKIA_OUT": "[START_DIR]/out"
+ },
+ "infra_step": true,
+ "name": "kill adb server"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipes/test.py b/infra/bots/recipes/test.py
index ad0334c288..012b4c2184 100644
--- a/infra/bots/recipes/test.py
+++ b/infra/bots/recipes/test.py
@@ -59,6 +59,9 @@ def dm_flags(api, bot):
if '-x86-' in bot and not 'NexusPlayer' in bot:
args.extend(['--threads', '4'])
+ if 'Chromecast' in bot:
+ args.extend(['--threads', '0'])
+
# Avoid issues with dynamically exceeding resource cache limits.
if 'Test' in bot and 'DISCARDABLE' in bot:
args.extend(['--threads', '0'])
@@ -213,6 +216,9 @@ def dm_flags(api, bot):
# Just run GLES for now - maybe add gles_msaa4 in the future
configs = ['gles']
+ if 'Chromecast' in bot:
+ configs = ['gles', '8888']
+
# Test coverage counting path renderer.
if 'CCPR' in bot:
configs = [c for c in configs if c == 'gl' or c == 'gles']
@@ -312,7 +318,7 @@ def dm_flags(api, bot):
blacklist('_ image gen_platf rle8-height-negative.bmp')
blacklist('_ image gen_platf rle4-height-negative.bmp')
- if 'Android' in bot or 'iOS' in bot:
+ if 'Android' in bot or 'iOS' in bot or 'Chromecast' in bot:
# This test crashes the N9 (perhaps because of large malloc/frees). It also
# is fairly slow and not platform-specific. So we just disable it on all of
# Android and iOS. skia:5438
@@ -370,7 +376,7 @@ def dm_flags(api, bot):
for test in ['bleed_alpha_image', 'bleed_alpha_image_shader']:
blacklist(['serialize-8888', 'gm', '_', test])
# It looks like we skip these only for out-of-memory concerns.
- if 'Win' in bot or 'Android' in bot:
+ if 'Win' in bot or 'Android' in bot or 'Chromecast' in bot:
for test in ['verylargebitmap', 'verylarge_picture_image']:
blacklist(['serialize-8888', 'gm', '_', test])
if 'Mac' in bot and 'CPU' in bot and 'Release' in bot:
@@ -473,6 +479,12 @@ def dm_flags(api, bot):
if 'AndroidOne' in bot: # skia:4711
match.append('~WritePixels')
+ if 'Chromecast' in bot: # skia:6581
+ match.append('~matrixconvolution')
+ match.append('~blur_image_filter')
+ match.append('~blur_0.01')
+ match.append('~GM_animated-image-blurs')
+
if 'NexusPlayer' in bot:
match.append('~ResourceCache')
@@ -763,6 +775,17 @@ def test_steps(api):
if api.vars.upload_dm_results:
args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
+ if 'Chromecast' in api.vars.builder_cfg.get('os', ''):
+ # Due to limited disk space, we only deal with skps and one image.
+ args = [
+ 'dm',
+ '--undefok', # This helps branches that may not know new flags.
+ '--resourcePath', api.flavor.device_dirs.resource_dir,
+ '--skps', api.flavor.device_dirs.skp_dir,
+ '--images', api.flavor.device_path_join(
+ api.flavor.device_dirs.resource_dir, 'color_wheel.jpg'),
+ ]
+
args.extend(dm_flags(api, api.vars.builder_name))
env = {}
@@ -815,7 +838,10 @@ def RunSteps(api):
env['IOS_MOUNT_POINT'] = api.vars.slave_dir.join('mnt_iosdevice')
with api.context(env=env):
try:
- api.flavor.install_everything()
+ if 'Chromecast' in api.vars.builder_name:
+ api.flavor.install(resources=True, skps=True)
+ else:
+ api.flavor.install_everything()
test_steps(api)
finally:
api.flavor.cleanup_steps()
@@ -840,6 +866,7 @@ TEST_BUILDERS = [
'Test-Android-Clang-PixelC-CPU-TegraX1-arm64-Debug-Android',
'Test-ChromeOS-Clang-Chromebook_C100p-GPU-MaliT764-arm-Debug',
'Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Debug',
+ 'Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release',
'Test-Mac-Clang-MacMini7.1-CPU-AVX-x86_64-Release',
'Test-Mac-Clang-MacMini7.1-GPU-IntelIris5100-x86_64-Debug-CommandBuffer',
'Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN',
@@ -901,6 +928,11 @@ def GenTests(api):
if 'Win' in builder:
test += api.platform('win', 64)
+ if 'Chromecast' in builder:
+ test += api.step_data(
+ 'read chromecast ip',
+ stdout=api.raw_io.output('192.168.1.2:5555'))
+
if 'ChromeOS' in builder:
test += api.step_data(
'read chromeos ip',
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index bbab7ff8c5..3385b5dfaa 100644
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -1845,6 +1845,30 @@
"Upload-Test-ChromeOS-Clang-Chromebook_CB5_312T-GPU-PowerVRGX6250-arm-Release"
]
},
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug": {
+ "priority": 0.8,
+ "tasks": [
+ "Upload-Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug"
+ ]
+ },
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release": {
+ "priority": 0.8,
+ "tasks": [
+ "Upload-Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release"
+ ]
+ },
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug": {
+ "priority": 0.8,
+ "tasks": [
+ "Upload-Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug"
+ ]
+ },
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release": {
+ "priority": 0.8,
+ "tasks": [
+ "Upload-Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release"
+ ]
+ },
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug": {
"priority": 0.8,
"tasks": [
@@ -13988,6 +14012,134 @@
"max_attempts": 1,
"priority": 0.8
},
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug": {
+ "dependencies": [
+ "Build-Debian9-GCC-arm-Debug-Chromecast",
+ "Housekeeper-PerCommit-BundleRecipes",
+ "Housekeeper-PerCommit-IsolateSKP"
+ ],
+ "dimensions": [
+ "device_os:1.24_82923",
+ "device_type:chorizo",
+ "os:Android",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "test",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "test_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release": {
+ "dependencies": [
+ "Build-Debian9-GCC-arm-Release-Chromecast",
+ "Housekeeper-PerCommit-BundleRecipes",
+ "Housekeeper-PerCommit-IsolateSKP"
+ ],
+ "dimensions": [
+ "device_os:1.24_82923",
+ "device_type:chorizo",
+ "os:Android",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "test",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "test_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug": {
+ "dependencies": [
+ "Build-Debian9-GCC-arm-Debug-Chromecast",
+ "Housekeeper-PerCommit-BundleRecipes",
+ "Housekeeper-PerCommit-IsolateSKP"
+ ],
+ "dimensions": [
+ "device_os:1.24_82923",
+ "device_type:chorizo",
+ "os:Android",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "test",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "test_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release": {
+ "dependencies": [
+ "Build-Debian9-GCC-arm-Release-Chromecast",
+ "Housekeeper-PerCommit-BundleRecipes",
+ "Housekeeper-PerCommit-IsolateSKP"
+ ],
+ "dimensions": [
+ "device_os:1.24_82923",
+ "device_type:chorizo",
+ "os:Android",
+ "pool:Skia"
+ ],
+ "execution_timeout_ns": 14400000000000,
+ "expiration_ns": 72000000000000,
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "test",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)"
+ ],
+ "io_timeout_ns": 2400000000000,
+ "isolate": "test_skia_bundled_unix.isolate",
+ "max_attempts": 1,
+ "priority": 0.8
+ },
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug": {
"cipd_packages": [
{
@@ -23416,6 +23568,114 @@
"isolate": "upload_dm_results.isolate",
"priority": 0.8
},
+ "Upload-Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug": {
+ "dependencies": [
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug"
+ ],
+ "dimensions": [
+ "cpu:x86-64-avx2",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "upload_dm_results",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Debug",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)",
+ "gs_bucket=skia-infra-gm"
+ ],
+ "isolate": "upload_dm_results.isolate",
+ "priority": 0.8
+ },
+ "Upload-Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release": {
+ "dependencies": [
+ "Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release"
+ ],
+ "dimensions": [
+ "cpu:x86-64-avx2",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "upload_dm_results",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-CPU-Cortex_A7-arm-Release",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)",
+ "gs_bucket=skia-infra-gm"
+ ],
+ "isolate": "upload_dm_results.isolate",
+ "priority": 0.8
+ },
+ "Upload-Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug": {
+ "dependencies": [
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug"
+ ],
+ "dimensions": [
+ "cpu:x86-64-avx2",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "upload_dm_results",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Debug",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)",
+ "gs_bucket=skia-infra-gm"
+ ],
+ "isolate": "upload_dm_results.isolate",
+ "priority": 0.8
+ },
+ "Upload-Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release": {
+ "dependencies": [
+ "Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release"
+ ],
+ "dimensions": [
+ "cpu:x86-64-avx2",
+ "gpu:none",
+ "os:Debian-9.1",
+ "pool:Skia"
+ ],
+ "extra_args": [
+ "--workdir",
+ "../../..",
+ "upload_dm_results",
+ "repository=<(REPO)",
+ "buildername=Test-Chromecast-GCC-Chorizo-GPU-Cortex_A7-arm-Release",
+ "swarm_out_dir=${ISOLATED_OUTDIR}",
+ "revision=<(REVISION)",
+ "patch_repo=<(PATCH_REPO)",
+ "patch_storage=<(PATCH_STORAGE)",
+ "patch_issue=<(ISSUE)",
+ "patch_set=<(PATCHSET)",
+ "gs_bucket=skia-infra-gm"
+ ],
+ "isolate": "upload_dm_results.isolate",
+ "priority": 0.8
+ },
"Upload-Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug": {
"dependencies": [
"Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug"