6 "import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n"
8 "name": "get swarming bot id",
9 "~followup_annotations": [
10 "@@@STEP_LOG_LINE@python.inline@import os@@@",
11 "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@",
12 "@@@STEP_LOG_END@python.inline@@@"
17 "/opt/infra-android/tools/adb",
22 "cwd": "[START_DIR]/skia",
24 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
25 "CHROME_HEADLESS": "1",
26 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
29 "name": "push file.txt file.txt"
33 "/opt/infra-android/tools/adb",
38 "cwd": "[START_DIR]/skia",
40 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
41 "CHROME_HEADLESS": "1",
42 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
45 "name": "read file.txt"
51 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
52 "/opt/infra-android/tools/adb",
56 "CHROME_HEADLESS": "1",
57 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
60 "name": "rm file.txt",
61 "~followup_annotations": [
62 "@@@STEP_LOG_LINE@python.inline@@@@",
63 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
64 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
65 "@@@STEP_LOG_LINE@python.inline@@@@",
66 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
67 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
68 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
69 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
70 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
71 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
72 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
73 "@@@STEP_LOG_LINE@python.inline@@@@",
74 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
75 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
76 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
77 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
78 "@@@STEP_LOG_LINE@python.inline@try:@@@",
79 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
80 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
81 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
82 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
83 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
84 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
85 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
86 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
87 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
88 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
89 "@@@STEP_LOG_END@python.inline@@@"
96 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
103 "name": "rmtree results_dir"
109 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
118 "name": "makedirs results_dir"
124 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
125 "/opt/infra-android/tools/adb",
129 "CHROME_HEADLESS": "1",
130 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
133 "name": "rm device_results_dir",
134 "~followup_annotations": [
135 "@@@STEP_LOG_LINE@python.inline@@@@",
136 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
137 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
138 "@@@STEP_LOG_LINE@python.inline@@@@",
139 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
140 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
141 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
142 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
143 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
144 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
145 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
146 "@@@STEP_LOG_LINE@python.inline@@@@",
147 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
148 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
149 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
150 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
151 "@@@STEP_LOG_LINE@python.inline@try:@@@",
152 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
153 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
154 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
155 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
156 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
157 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
158 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
159 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
160 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
161 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
162 "@@@STEP_LOG_END@python.inline@@@"
167 "/opt/infra-android/tools/adb",
173 "cwd": "[START_DIR]/skia",
175 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
176 "CHROME_HEADLESS": "1",
177 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
180 "name": "mkdir device_results_dir"
184 "/opt/infra-android/tools/adb",
188 "/sdcard/revenge_of_the_skiabot/resources"
190 "cwd": "[START_DIR]/skia",
192 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
193 "CHROME_HEADLESS": "1",
194 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
197 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
203 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\ngov = sys.argv[3]\n\nlog = subprocess.check_output([ADB, 'root']).decode('utf-8')\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\nsubprocess.check_output([\n ADB, 'shell',\n 'echo \"%s\" > /sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (\n gov, cpu)]).decode('utf-8')\nactual_gov = subprocess.check_output([\n ADB, 'shell', 'cat /sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' %\n cpu]).decode('utf-8').strip()\nif actual_gov != gov:\n raise Exception('(actual, expected) (%s, %s)'\n % (actual_gov, gov))\n",
204 "/opt/infra-android/tools/adb",
209 "CHROME_HEADLESS": "1",
210 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
213 "name": "Set CPU 0's governor to powersave",
215 "~followup_annotations": [
216 "@@@STEP_LOG_LINE@python.inline@@@@",
217 "@@@STEP_LOG_LINE@python.inline@import os@@@",
218 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
219 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
220 "@@@STEP_LOG_LINE@python.inline@import time@@@",
221 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
222 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
223 "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@",
224 "@@@STEP_LOG_LINE@python.inline@@@@",
225 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root']).decode('utf-8')@@@",
226 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
227 "@@@STEP_LOG_LINE@python.inline@print(log)@@@",
228 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
229 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@",
230 "@@@STEP_LOG_LINE@python.inline@@@@",
231 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([@@@",
232 "@@@STEP_LOG_LINE@python.inline@ ADB, 'shell',@@@",
233 "@@@STEP_LOG_LINE@python.inline@ 'echo \"%s\" > /sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (@@@",
234 "@@@STEP_LOG_LINE@python.inline@ gov, cpu)]).decode('utf-8')@@@",
235 "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([@@@",
236 "@@@STEP_LOG_LINE@python.inline@ ADB, 'shell', 'cat /sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' %@@@",
237 "@@@STEP_LOG_LINE@python.inline@ cpu]).decode('utf-8').strip()@@@",
238 "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@",
239 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@",
240 "@@@STEP_LOG_LINE@python.inline@ % (actual_gov, gov))@@@",
241 "@@@STEP_LOG_END@python.inline@@@"
248 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\nvalue = int(sys.argv[3])\n\nlog = subprocess.check_output([ADB, 'root']).decode('utf-8')\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\n# If we try to echo 1 to an already online cpu, adb returns exit code 1.\n# So, check the value before trying to write it.\nprior_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif prior_status == str(value):\n print('CPU %d online already %d' % (cpu, value))\n sys.exit()\n\nsubprocess.check_call([ADB, 'shell', 'echo %s > '\n '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])\nactual_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n",
249 "/opt/infra-android/tools/adb",
254 "CHROME_HEADLESS": "1",
255 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
258 "name": "Disabling CPU 4",
260 "~followup_annotations": [
261 "@@@STEP_LOG_LINE@python.inline@@@@",
262 "@@@STEP_LOG_LINE@python.inline@import os@@@",
263 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
264 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
265 "@@@STEP_LOG_LINE@python.inline@import time@@@",
266 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
267 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
268 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@",
269 "@@@STEP_LOG_LINE@python.inline@@@@",
270 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root']).decode('utf-8')@@@",
271 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
272 "@@@STEP_LOG_LINE@python.inline@print(log)@@@",
273 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
274 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@",
275 "@@@STEP_LOG_LINE@python.inline@@@@",
276 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@",
277 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@",
278 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
279 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
280 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@",
281 "@@@STEP_LOG_LINE@python.inline@ print('CPU %d online already %d' % (cpu, value))@@@",
282 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@",
283 "@@@STEP_LOG_LINE@python.inline@@@@",
284 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call([ADB, 'shell', 'echo %s > '@@@",
285 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@",
286 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
287 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
288 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@",
289 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@",
290 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@",
291 "@@@STEP_LOG_END@python.inline@@@"
298 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\nvalue = int(sys.argv[3])\n\nlog = subprocess.check_output([ADB, 'root']).decode('utf-8')\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\n# If we try to echo 1 to an already online cpu, adb returns exit code 1.\n# So, check the value before trying to write it.\nprior_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif prior_status == str(value):\n print('CPU %d online already %d' % (cpu, value))\n sys.exit()\n\nsubprocess.check_call([ADB, 'shell', 'echo %s > '\n '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])\nactual_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n",
299 "/opt/infra-android/tools/adb",
304 "CHROME_HEADLESS": "1",
305 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
308 "name": "Disabling CPU 5",
310 "~followup_annotations": [
311 "@@@STEP_LOG_LINE@python.inline@@@@",
312 "@@@STEP_LOG_LINE@python.inline@import os@@@",
313 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
314 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
315 "@@@STEP_LOG_LINE@python.inline@import time@@@",
316 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
317 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
318 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@",
319 "@@@STEP_LOG_LINE@python.inline@@@@",
320 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root']).decode('utf-8')@@@",
321 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
322 "@@@STEP_LOG_LINE@python.inline@print(log)@@@",
323 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
324 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@",
325 "@@@STEP_LOG_LINE@python.inline@@@@",
326 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@",
327 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@",
328 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
329 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
330 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@",
331 "@@@STEP_LOG_LINE@python.inline@ print('CPU %d online already %d' % (cpu, value))@@@",
332 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@",
333 "@@@STEP_LOG_LINE@python.inline@@@@",
334 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call([ADB, 'shell', 'echo %s > '@@@",
335 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@",
336 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
337 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
338 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@",
339 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@",
340 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@",
341 "@@@STEP_LOG_END@python.inline@@@"
348 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\nvalue = int(sys.argv[3])\n\nlog = subprocess.check_output([ADB, 'root']).decode('utf-8')\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\n# If we try to echo 1 to an already online cpu, adb returns exit code 1.\n# So, check the value before trying to write it.\nprior_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif prior_status == str(value):\n print('CPU %d online already %d' % (cpu, value))\n sys.exit()\n\nsubprocess.check_call([ADB, 'shell', 'echo %s > '\n '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])\nactual_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n",
349 "/opt/infra-android/tools/adb",
354 "CHROME_HEADLESS": "1",
355 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
358 "name": "Disabling CPU 6",
360 "~followup_annotations": [
361 "@@@STEP_LOG_LINE@python.inline@@@@",
362 "@@@STEP_LOG_LINE@python.inline@import os@@@",
363 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
364 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
365 "@@@STEP_LOG_LINE@python.inline@import time@@@",
366 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
367 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
368 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@",
369 "@@@STEP_LOG_LINE@python.inline@@@@",
370 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root']).decode('utf-8')@@@",
371 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
372 "@@@STEP_LOG_LINE@python.inline@print(log)@@@",
373 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
374 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@",
375 "@@@STEP_LOG_LINE@python.inline@@@@",
376 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@",
377 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@",
378 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
379 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
380 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@",
381 "@@@STEP_LOG_LINE@python.inline@ print('CPU %d online already %d' % (cpu, value))@@@",
382 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@",
383 "@@@STEP_LOG_LINE@python.inline@@@@",
384 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call([ADB, 'shell', 'echo %s > '@@@",
385 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@",
386 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
387 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
388 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@",
389 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@",
390 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@",
391 "@@@STEP_LOG_END@python.inline@@@"
398 "\nimport os\nimport subprocess\nimport sys\nimport time\nADB = sys.argv[1]\ncpu = int(sys.argv[2])\nvalue = int(sys.argv[3])\n\nlog = subprocess.check_output([ADB, 'root']).decode('utf-8')\n# check for message like 'adbd cannot run as root in production builds'\nprint(log)\nif 'cannot' in log:\n raise Exception('adb root failed')\n\n# If we try to echo 1 to an already online cpu, adb returns exit code 1.\n# So, check the value before trying to write it.\nprior_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif prior_status == str(value):\n print('CPU %d online already %d' % (cpu, value))\n sys.exit()\n\nsubprocess.check_call([ADB, 'shell', 'echo %s > '\n '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])\nactual_status = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n",
399 "/opt/infra-android/tools/adb",
404 "CHROME_HEADLESS": "1",
405 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
408 "name": "Disabling CPU 7",
410 "~followup_annotations": [
411 "@@@STEP_LOG_LINE@python.inline@@@@",
412 "@@@STEP_LOG_LINE@python.inline@import os@@@",
413 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
414 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
415 "@@@STEP_LOG_LINE@python.inline@import time@@@",
416 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@",
417 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@",
418 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@",
419 "@@@STEP_LOG_LINE@python.inline@@@@",
420 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root']).decode('utf-8')@@@",
421 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@",
422 "@@@STEP_LOG_LINE@python.inline@print(log)@@@",
423 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@",
424 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@",
425 "@@@STEP_LOG_LINE@python.inline@@@@",
426 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@",
427 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@",
428 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
429 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
430 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@",
431 "@@@STEP_LOG_LINE@python.inline@ print('CPU %d online already %d' % (cpu, value))@@@",
432 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@",
433 "@@@STEP_LOG_LINE@python.inline@@@@",
434 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call([ADB, 'shell', 'echo %s > '@@@",
435 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@",
436 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@",
437 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).decode('utf-8').strip()@@@",
438 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@",
439 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@",
440 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@",
441 "@@@STEP_LOG_END@python.inline@@@"
446 "/opt/infra-android/tools/adb",
448 "[START_DIR]/build/nanobench",
451 "cwd": "[START_DIR]/skia",
453 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
454 "CHROME_HEADLESS": "1",
455 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
458 "name": "push nanobench"
464 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
468 "[START_DIR]/skia/resources",
472 "name": "ls [START_DIR]/skia/resources/*",
473 "~followup_annotations": [
474 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/bar.jpg@@@",
475 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/foo.png@@@",
476 "@@@STEP_LOG_END@glob@@@"
481 "/opt/infra-android/tools/adb",
483 "[START_DIR]/skia/resources/bar.jpg",
484 "[START_DIR]/skia/resources/foo.png",
485 "/sdcard/revenge_of_the_skiabot/resources"
487 "cwd": "[START_DIR]/skia",
489 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
490 "CHROME_HEADLESS": "1",
491 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
494 "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
500 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
504 "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
508 "name": "Get skp VERSION",
509 "~followup_annotations": [
510 "@@@STEP_LOG_LINE@VERSION@42@@@",
511 "@@@STEP_LOG_END@VERSION@@@"
518 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
523 "[START_DIR]/tmp/SKP_VERSION"
526 "name": "write SKP_VERSION",
527 "~followup_annotations": [
528 "@@@STEP_LOG_LINE@SKP_VERSION@42@@@",
529 "@@@STEP_LOG_END@SKP_VERSION@@@"
534 "/opt/infra-android/tools/adb",
537 "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
539 "cwd": "[START_DIR]/skia",
541 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
542 "CHROME_HEADLESS": "1",
543 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
546 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION"
552 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
553 "/opt/infra-android/tools/adb",
554 "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
557 "CHROME_HEADLESS": "1",
558 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
561 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION",
562 "~followup_annotations": [
563 "@@@STEP_LOG_LINE@python.inline@@@@",
564 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
565 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
566 "@@@STEP_LOG_LINE@python.inline@@@@",
567 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
568 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
569 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
570 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
571 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
572 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
573 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
574 "@@@STEP_LOG_LINE@python.inline@@@@",
575 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
576 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
577 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
578 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
579 "@@@STEP_LOG_LINE@python.inline@try:@@@",
580 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
581 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
582 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
583 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
584 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
585 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
586 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
587 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
588 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
589 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
590 "@@@STEP_LOG_END@python.inline@@@"
597 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
598 "/opt/infra-android/tools/adb",
599 "/sdcard/revenge_of_the_skiabot/skps"
602 "CHROME_HEADLESS": "1",
603 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
606 "name": "rm /sdcard/revenge_of_the_skiabot/skps",
607 "~followup_annotations": [
608 "@@@STEP_LOG_LINE@python.inline@@@@",
609 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
610 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
611 "@@@STEP_LOG_LINE@python.inline@@@@",
612 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
613 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
614 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
615 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
616 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
617 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
618 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
619 "@@@STEP_LOG_LINE@python.inline@@@@",
620 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
621 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
622 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
623 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
624 "@@@STEP_LOG_LINE@python.inline@try:@@@",
625 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
626 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
627 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
628 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
629 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
630 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
631 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
632 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
633 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
634 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
635 "@@@STEP_LOG_END@python.inline@@@"
640 "/opt/infra-android/tools/adb",
644 "/sdcard/revenge_of_the_skiabot/skps"
646 "cwd": "[START_DIR]/skia",
648 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
649 "CHROME_HEADLESS": "1",
650 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
653 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
659 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
667 "name": "ls [START_DIR]/skp/*",
668 "~followup_annotations": [
669 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/bar.jpg@@@",
670 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/foo.png@@@",
671 "@@@STEP_LOG_END@glob@@@"
676 "/opt/infra-android/tools/adb",
678 "[START_DIR]/skp/bar.jpg",
679 "[START_DIR]/skp/foo.png",
680 "/sdcard/revenge_of_the_skiabot/skps"
682 "cwd": "[START_DIR]/skia",
684 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
685 "CHROME_HEADLESS": "1",
686 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
689 "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
693 "/opt/infra-android/tools/adb",
695 "[START_DIR]/tmp/SKP_VERSION",
696 "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
698 "cwd": "[START_DIR]/skia",
700 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
701 "CHROME_HEADLESS": "1",
702 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
705 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
711 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
715 "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
719 "name": "Get skimage VERSION",
720 "~followup_annotations": [
721 "@@@STEP_LOG_LINE@VERSION@42@@@",
722 "@@@STEP_LOG_END@VERSION@@@"
729 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
734 "[START_DIR]/tmp/SK_IMAGE_VERSION"
737 "name": "write SK_IMAGE_VERSION",
738 "~followup_annotations": [
739 "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@",
740 "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@"
745 "/opt/infra-android/tools/adb",
748 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
750 "cwd": "[START_DIR]/skia",
752 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
753 "CHROME_HEADLESS": "1",
754 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
757 "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
763 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
764 "/opt/infra-android/tools/adb",
765 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
768 "CHROME_HEADLESS": "1",
769 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
772 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION",
773 "~followup_annotations": [
774 "@@@STEP_LOG_LINE@python.inline@@@@",
775 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
776 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
777 "@@@STEP_LOG_LINE@python.inline@@@@",
778 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
779 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
780 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
781 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
782 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
783 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
784 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
785 "@@@STEP_LOG_LINE@python.inline@@@@",
786 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
787 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
788 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
789 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
790 "@@@STEP_LOG_LINE@python.inline@try:@@@",
791 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
792 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
793 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
794 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
795 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
796 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
797 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
798 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
799 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
800 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
801 "@@@STEP_LOG_END@python.inline@@@"
808 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
809 "/opt/infra-android/tools/adb",
810 "/sdcard/revenge_of_the_skiabot/images"
813 "CHROME_HEADLESS": "1",
814 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
817 "name": "rm /sdcard/revenge_of_the_skiabot/images",
818 "~followup_annotations": [
819 "@@@STEP_LOG_LINE@python.inline@@@@",
820 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
821 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
822 "@@@STEP_LOG_LINE@python.inline@@@@",
823 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
824 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
825 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
826 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
827 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
828 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
829 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
830 "@@@STEP_LOG_LINE@python.inline@@@@",
831 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
832 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
833 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
834 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
835 "@@@STEP_LOG_LINE@python.inline@try:@@@",
836 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
837 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
838 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
839 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
840 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
841 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
842 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
843 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
844 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
845 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
846 "@@@STEP_LOG_END@python.inline@@@"
851 "/opt/infra-android/tools/adb",
855 "/sdcard/revenge_of_the_skiabot/images"
857 "cwd": "[START_DIR]/skia",
859 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
860 "CHROME_HEADLESS": "1",
861 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
864 "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
870 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
874 "[START_DIR]/skimage",
878 "name": "ls [START_DIR]/skimage/*",
879 "~followup_annotations": [
880 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/bar.jpg@@@",
881 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/foo.png@@@",
882 "@@@STEP_LOG_END@glob@@@"
887 "/opt/infra-android/tools/adb",
889 "[START_DIR]/skimage/bar.jpg",
890 "[START_DIR]/skimage/foo.png",
891 "/sdcard/revenge_of_the_skiabot/images"
893 "cwd": "[START_DIR]/skia",
895 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
896 "CHROME_HEADLESS": "1",
897 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
900 "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
904 "/opt/infra-android/tools/adb",
906 "[START_DIR]/tmp/SK_IMAGE_VERSION",
907 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
909 "cwd": "[START_DIR]/skia",
911 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
912 "CHROME_HEADLESS": "1",
913 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
916 "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
922 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
926 "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
930 "name": "Get svg VERSION",
931 "~followup_annotations": [
932 "@@@STEP_LOG_LINE@VERSION@42@@@",
933 "@@@STEP_LOG_END@VERSION@@@"
940 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
945 "[START_DIR]/tmp/SVG_VERSION"
948 "name": "write SVG_VERSION",
949 "~followup_annotations": [
950 "@@@STEP_LOG_LINE@SVG_VERSION@42@@@",
951 "@@@STEP_LOG_END@SVG_VERSION@@@"
956 "/opt/infra-android/tools/adb",
959 "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
961 "cwd": "[START_DIR]/skia",
963 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
964 "CHROME_HEADLESS": "1",
965 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
968 "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION"
974 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
975 "/opt/infra-android/tools/adb",
976 "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
979 "CHROME_HEADLESS": "1",
980 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
983 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION",
984 "~followup_annotations": [
985 "@@@STEP_LOG_LINE@python.inline@@@@",
986 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
987 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
988 "@@@STEP_LOG_LINE@python.inline@@@@",
989 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
990 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
991 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
992 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
993 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
994 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
995 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
996 "@@@STEP_LOG_LINE@python.inline@@@@",
997 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
998 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
999 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
1000 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
1001 "@@@STEP_LOG_LINE@python.inline@try:@@@",
1002 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
1003 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
1004 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
1005 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
1006 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
1007 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
1008 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
1009 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
1010 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
1011 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
1012 "@@@STEP_LOG_END@python.inline@@@"
1019 "\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
1020 "/opt/infra-android/tools/adb",
1021 "/sdcard/revenge_of_the_skiabot/svgs"
1024 "CHROME_HEADLESS": "1",
1025 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1028 "name": "rm /sdcard/revenge_of_the_skiabot/svgs",
1029 "~followup_annotations": [
1030 "@@@STEP_LOG_LINE@python.inline@@@@",
1031 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
1032 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
1033 "@@@STEP_LOG_LINE@python.inline@@@@",
1034 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
1035 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
1036 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
1037 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
1038 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
1039 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
1040 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
1041 "@@@STEP_LOG_LINE@python.inline@@@@",
1042 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
1043 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
1044 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
1045 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
1046 "@@@STEP_LOG_LINE@python.inline@try:@@@",
1047 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
1048 "@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
1049 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
1050 "@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
1051 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
1052 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
1053 "@@@STEP_LOG_LINE@python.inline@print(output)@@@",
1054 "@@@STEP_LOG_LINE@python.inline@print('======')@@@",
1055 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
1056 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
1057 "@@@STEP_LOG_END@python.inline@@@"
1062 "/opt/infra-android/tools/adb",
1066 "/sdcard/revenge_of_the_skiabot/svgs"
1068 "cwd": "[START_DIR]/skia",
1070 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1071 "CHROME_HEADLESS": "1",
1072 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1075 "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
1081 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
1083 "/path/to/tmp/json",
1089 "name": "ls [START_DIR]/svg/*",
1090 "~followup_annotations": [
1091 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/bar.jpg@@@",
1092 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/foo.png@@@",
1093 "@@@STEP_LOG_END@glob@@@"
1098 "/opt/infra-android/tools/adb",
1100 "[START_DIR]/svg/bar.jpg",
1101 "[START_DIR]/svg/foo.png",
1102 "/sdcard/revenge_of_the_skiabot/svgs"
1104 "cwd": "[START_DIR]/skia",
1106 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1107 "CHROME_HEADLESS": "1",
1108 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1111 "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
1115 "/opt/infra-android/tools/adb",
1117 "[START_DIR]/tmp/SVG_VERSION",
1118 "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
1120 "cwd": "[START_DIR]/skia",
1122 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1123 "CHROME_HEADLESS": "1",
1124 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1127 "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
1133 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
1135 "/path/to/tmp/json",
1137 "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/nanobench --some-flag; echo $? >/data/local/tmp/rc",
1138 "[START_DIR]/tmp/nanobench.sh"
1141 "name": "write nanobench.sh",
1142 "~followup_annotations": [
1143 "@@@STEP_LOG_LINE@nanobench.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/nanobench --some-flag; echo $? >/data/local/tmp/rc@@@",
1144 "@@@STEP_LOG_END@nanobench.sh@@@"
1149 "/opt/infra-android/tools/adb",
1151 "[START_DIR]/tmp/nanobench.sh",
1154 "cwd": "[START_DIR]/skia",
1156 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1157 "CHROME_HEADLESS": "1",
1158 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1161 "name": "push nanobench.sh"
1165 "/opt/infra-android/tools/adb",
1169 "cwd": "[START_DIR]/skia",
1171 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1172 "CHROME_HEADLESS": "1",
1173 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1182 "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh = sys.argv[2]\nsubprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])\ntry:\n sys.exit(int(subprocess.check_output([\n '/opt/infra-android/tools/adb', 'shell', 'cat', bin_dir + 'rc']).decode('utf-8')))\nexcept ValueError:\n print(\"Couldn't read the return code. Probably killed for OOM.\")\n sys.exit(1)\n",
1186 "name": "nanobench",
1187 "~followup_annotations": [
1188 "@@@STEP_LOG_LINE@python.inline@@@@",
1189 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
1190 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
1191 "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@",
1192 "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@",
1193 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@",
1194 "@@@STEP_LOG_LINE@python.inline@try:@@@",
1195 "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output([@@@",
1196 "@@@STEP_LOG_LINE@python.inline@ '/opt/infra-android/tools/adb', 'shell', 'cat', bin_dir + 'rc']).decode('utf-8')))@@@",
1197 "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@",
1198 "@@@STEP_LOG_LINE@python.inline@ print(\"Couldn't read the return code. Probably killed for OOM.\")@@@",
1199 "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
1200 "@@@STEP_LOG_END@python.inline@@@"
1209 "/opt/infra-android/tools/adb",
1211 "/sdcard/revenge_of_the_skiabot/perf",
1212 "[CLEANUP]/adb_pull_tmp_1"
1214 "cwd": "[START_DIR]/skia",
1216 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1217 "CHROME_HEADLESS": "1",
1218 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1221 "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/perf",
1222 "~followup_annotations": [
1223 "@@@STEP_NEST_LEVEL@1@@@"
1230 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
1232 "/path/to/tmp/json",
1234 "[CLEANUP]/adb_pull_tmp_1",
1238 "name": "adb pull.list pulled files",
1239 "~followup_annotations": [
1240 "@@@STEP_NEST_LEVEL@1@@@",
1241 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/1.png@@@",
1242 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/2.png@@@",
1243 "@@@STEP_LOG_END@glob@@@"
1250 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
1252 "/path/to/tmp/json",
1254 "[CLEANUP]/adb_pull_tmp_1/1.png",
1255 "[START_DIR]/[SWARM_OUT_DIR]"
1258 "name": "adb pull.copy 1.png",
1259 "~followup_annotations": [
1260 "@@@STEP_NEST_LEVEL@1@@@"
1267 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
1269 "/path/to/tmp/json",
1271 "[CLEANUP]/adb_pull_tmp_1/2.png",
1272 "[START_DIR]/[SWARM_OUT_DIR]"
1275 "name": "adb pull.copy 2.png",
1276 "~followup_annotations": [
1277 "@@@STEP_NEST_LEVEL@1@@@"
1284 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output([\n '/opt/infra-android/tools/adb', 'logcat', '-d']).decode('utf-8', errors='ignore')\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 try:\n sym = subprocess.check_output([\n 'addr2line', '-Cfpe', local, addr]).decode('utf-8')\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print(line)\n",
1288 "CHROME_HEADLESS": "1",
1289 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1294 "~followup_annotations": [
1295 "@@@STEP_LOG_LINE@python.inline@@@@",
1296 "@@@STEP_LOG_LINE@python.inline@import os@@@",
1297 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
1298 "@@@STEP_LOG_LINE@python.inline@import sys@@@",
1299 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
1300 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([@@@",
1301 "@@@STEP_LOG_LINE@python.inline@ '/opt/infra-android/tools/adb', 'logcat', '-d']).decode('utf-8', errors='ignore')@@@",
1302 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
1303 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@",
1304 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
1305 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@",
1306 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@",
1307 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@",
1308 "@@@STEP_LOG_LINE@python.inline@ try:@@@",
1309 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output([@@@",
1310 "@@@STEP_LOG_LINE@python.inline@ 'addr2line', '-Cfpe', local, addr]).decode('utf-8')@@@",
1311 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@",
1312 "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@",
1313 "@@@STEP_LOG_LINE@python.inline@ pass@@@",
1314 "@@@STEP_LOG_LINE@python.inline@ print(line)@@@",
1315 "@@@STEP_LOG_END@python.inline@@@"
1320 "/opt/infra-android/tools/adb",
1323 "cwd": "[START_DIR]/skia",
1325 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
1326 "CHROME_HEADLESS": "1",
1327 "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
1330 "name": "kill adb server"