1[ 2 { 3 "cmd": [ 4 "vpython", 5 "-u", 6 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 7 "--json-output", 8 "/path/to/tmp/json", 9 "ensure-directory", 10 "--mode", 11 "0777", 12 "[START_DIR]/tmp" 13 ], 14 "infra_step": true, 15 "name": "makedirs tmp_dir" 16 }, 17 { 18 "cmd": [ 19 "python", 20 "-u", 21 "import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n" 22 ], 23 "name": "get swarming bot id", 24 "~followup_annotations": [ 25 "@@@STEP_LOG_LINE@python.inline@import os@@@", 26 "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@", 27 "@@@STEP_LOG_END@python.inline@@@" 28 ] 29 }, 30 { 31 "cmd": [ 32 "/usr/bin/adb.1.0.35", 33 "shell", 34 "mkdir", 35 "-p", 36 "/sdcard/revenge_of_the_skiabot/resources" 37 ], 38 "cwd": "[START_DIR]/skia", 39 "env": { 40 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 41 "CHROME_HEADLESS": "1", 42 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 43 }, 44 "infra_step": true, 45 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 46 }, 47 { 48 "cmd": [ 49 "/usr/bin/adb.1.0.35", 50 "shell", 51 "cp", 52 "/vendor/lib64/egl/libGLES_mali.so", 53 "/data/local/tmp/libvulkan.so" 54 ], 55 "cwd": "[START_DIR]/skia", 56 "env": { 57 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 58 "CHROME_HEADLESS": "1", 59 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 60 }, 61 "infra_step": true, 62 "name": "cp libGLES_mali.so to /data/local/tmp/" 63 }, 64 { 65 "cmd": [ 66 "vpython", 67 "-u", 68 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 69 "--json-output", 70 "/path/to/tmp/json", 71 "copy", 72 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 73 "/path/to/tmp/" 74 ], 75 "infra_step": true, 76 "name": "Get skp VERSION", 77 "~followup_annotations": [ 78 "@@@STEP_LOG_LINE@VERSION@42@@@", 79 "@@@STEP_LOG_END@VERSION@@@" 80 ] 81 }, 82 { 83 "cmd": [ 84 "vpython", 85 "-u", 86 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 87 "--json-output", 88 "/path/to/tmp/json", 89 "copy", 90 "42", 91 "[START_DIR]/tmp/SKP_VERSION" 92 ], 93 "infra_step": true, 94 "name": "write SKP_VERSION", 95 "~followup_annotations": [ 96 "@@@STEP_LOG_LINE@SKP_VERSION@42@@@", 97 "@@@STEP_LOG_END@SKP_VERSION@@@" 98 ] 99 }, 100 { 101 "cmd": [ 102 "/usr/bin/adb.1.0.35", 103 "shell", 104 "cat", 105 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 106 ], 107 "cwd": "[START_DIR]/skia", 108 "env": { 109 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 110 "CHROME_HEADLESS": "1", 111 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 112 }, 113 "infra_step": true, 114 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION" 115 }, 116 { 117 "cmd": [ 118 "python", 119 "-u", 120 "\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(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\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", 121 "/usr/bin/adb.1.0.35", 122 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 123 ], 124 "env": { 125 "CHROME_HEADLESS": "1", 126 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 127 }, 128 "infra_step": true, 129 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION", 130 "~followup_annotations": [ 131 "@@@STEP_LOG_LINE@python.inline@@@@", 132 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 133 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 134 "@@@STEP_LOG_LINE@python.inline@@@@", 135 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 136 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 137 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 138 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 139 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 140 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 141 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 142 "@@@STEP_LOG_LINE@python.inline@@@@", 143 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 144 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 145 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 146 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 147 "@@@STEP_LOG_LINE@python.inline@try:@@@", 148 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 149 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 150 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 151 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 152 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 153 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 154 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 155 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 156 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 157 "@@@STEP_LOG_END@python.inline@@@" 158 ] 159 }, 160 { 161 "cmd": [ 162 "python", 163 "-u", 164 "\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(cmd, stderr=subprocess.STDOUT)\nexcept subprocess.CalledProcessError as e:\n output = e.output\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", 165 "/usr/bin/adb.1.0.35", 166 "/sdcard/revenge_of_the_skiabot/skps" 167 ], 168 "env": { 169 "CHROME_HEADLESS": "1", 170 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 171 }, 172 "infra_step": true, 173 "name": "rm /sdcard/revenge_of_the_skiabot/skps", 174 "~followup_annotations": [ 175 "@@@STEP_LOG_LINE@python.inline@@@@", 176 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 177 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 178 "@@@STEP_LOG_LINE@python.inline@@@@", 179 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 180 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 181 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 182 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 183 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 184 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 185 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 186 "@@@STEP_LOG_LINE@python.inline@@@@", 187 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 188 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 189 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 190 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 191 "@@@STEP_LOG_LINE@python.inline@try:@@@", 192 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 193 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 194 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 195 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 196 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 197 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 198 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 199 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 200 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 201 "@@@STEP_LOG_END@python.inline@@@" 202 ] 203 }, 204 { 205 "cmd": [ 206 "/usr/bin/adb.1.0.35", 207 "shell", 208 "mkdir", 209 "-p", 210 "/sdcard/revenge_of_the_skiabot/skps" 211 ], 212 "cwd": "[START_DIR]/skia", 213 "env": { 214 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 215 "CHROME_HEADLESS": "1", 216 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 217 }, 218 "infra_step": true, 219 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 220 }, 221 { 222 "cmd": [ 223 "vpython", 224 "-u", 225 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 226 "--json-output", 227 "/path/to/tmp/json", 228 "glob", 229 "[START_DIR]/skp", 230 "*" 231 ], 232 "infra_step": true, 233 "name": "ls [START_DIR]/skp/*", 234 "~followup_annotations": [ 235 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/bar.jpg@@@", 236 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/foo.png@@@", 237 "@@@STEP_LOG_END@glob@@@" 238 ] 239 }, 240 { 241 "cmd": [ 242 "/usr/bin/adb.1.0.35", 243 "push", 244 "[START_DIR]/skp/bar.jpg", 245 "[START_DIR]/skp/foo.png", 246 "/sdcard/revenge_of_the_skiabot/skps" 247 ], 248 "cwd": "[START_DIR]/skia", 249 "env": { 250 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 251 "CHROME_HEADLESS": "1", 252 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 253 }, 254 "infra_step": true, 255 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" 256 }, 257 { 258 "cmd": [ 259 "/usr/bin/adb.1.0.35", 260 "push", 261 "[START_DIR]/tmp/SKP_VERSION", 262 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 263 ], 264 "cwd": "[START_DIR]/skia", 265 "env": { 266 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 267 "CHROME_HEADLESS": "1", 268 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 269 }, 270 "infra_step": true, 271 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 272 }, 273 { 274 "cmd": [ 275 "vpython", 276 "-u", 277 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 278 "--json-output", 279 "/path/to/tmp/json", 280 "ensure-directory", 281 "--mode", 282 "0777", 283 "[START_DIR]/[SWARM_OUT_DIR]" 284 ], 285 "infra_step": true, 286 "name": "makedirs perf_dir" 287 }, 288 { 289 "cmd": [ 290 "adb.1.0.35", 291 "push", 292 "[START_DIR]/build/skpbench", 293 "/data/local/tmp/" 294 ], 295 "cwd": "[START_DIR]/skia", 296 "env": { 297 "CHROME_HEADLESS": "1", 298 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 299 }, 300 "infra_step": true, 301 "name": "push skpbench" 302 }, 303 { 304 "cmd": [ 305 "python", 306 "-u", 307 "[START_DIR]/skia/tools/skpbench/skpbench.py", 308 "/data/local/tmp/skpbench", 309 "--resultsfile", 310 "[START_DIR]/[SWARM_OUT_DIR]/table", 311 "--config", 312 "glesdmsaa,glesmsaa4", 313 "--internalSamples", 314 "4", 315 "-v5", 316 "--adb", 317 "--adb_binary", 318 "adb.1.0.35", 319 "--allPathsVolatile", 320 "--suffix", 321 "_volatile", 322 "/sdcard/revenge_of_the_skiabot/skps/desk_*svg.skp", 323 "/sdcard/revenge_of_the_skiabot/skps/desk_motionmark*.skp", 324 "/sdcard/revenge_of_the_skiabot/skps/desk_chalkboard.skp" 325 ], 326 "env": { 327 "CHROME_HEADLESS": "1", 328 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 329 }, 330 "name": "skpbench" 331 }, 332 { 333 "cmd": [ 334 "python", 335 "-u", 336 "import os\nprint(os.environ.get('SWARMING_TASK_ID', ''))\n" 337 ], 338 "name": "get swarming task id", 339 "~followup_annotations": [ 340 "@@@STEP_LOG_LINE@python.inline@import os@@@", 341 "@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_TASK_ID', ''))@@@", 342 "@@@STEP_LOG_END@python.inline@@@" 343 ] 344 }, 345 { 346 "cmd": [ 347 "python", 348 "-u", 349 "[START_DIR]/skia/tools/skpbench/skiaperf.py", 350 "[START_DIR]/[SWARM_OUT_DIR]/table", 351 "--properties", 352 "gitHash", 353 "abc123", 354 "swarming_bot_id", 355 "skia-bot-123", 356 "swarming_task_id", 357 "123456", 358 "--outfile", 359 "[START_DIR]/[SWARM_OUT_DIR]/skpbench_abc123_1337000001.json", 360 "--key", 361 "arch", 362 "arm64", 363 "compiler", 364 "Clang", 365 "cpu_or_gpu", 366 "GPU", 367 "cpu_or_gpu_value", 368 "MaliG77", 369 "extra_config", 370 "Android_AllPathsVolatile_Skpbench", 371 "model", 372 "GalaxyS20", 373 "os", 374 "Android", 375 "test_filter", 376 "All" 377 ], 378 "env": { 379 "CHROME_HEADLESS": "1", 380 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 381 }, 382 "name": "Parse skpbench output into Perf json" 383 }, 384 { 385 "cmd": [ 386 "python", 387 "-u", 388 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/usr/bin/adb.1.0.35', '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 try:\n sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print(line)\n", 389 "[START_DIR]/build" 390 ], 391 "env": { 392 "CHROME_HEADLESS": "1", 393 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 394 }, 395 "infra_step": true, 396 "name": "dump log", 397 "timeout": 300, 398 "~followup_annotations": [ 399 "@@@STEP_LOG_LINE@python.inline@@@@", 400 "@@@STEP_LOG_LINE@python.inline@import os@@@", 401 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 402 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 403 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 404 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@", 405 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 406 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 407 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 408 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 409 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 410 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 411 "@@@STEP_LOG_LINE@python.inline@ try:@@@", 412 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 413 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 414 "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@", 415 "@@@STEP_LOG_LINE@python.inline@ pass@@@", 416 "@@@STEP_LOG_LINE@python.inline@ print(line)@@@", 417 "@@@STEP_LOG_END@python.inline@@@" 418 ] 419 }, 420 { 421 "cmd": [ 422 "/usr/bin/adb.1.0.35", 423 "kill-server" 424 ], 425 "cwd": "[START_DIR]/skia", 426 "env": { 427 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 428 "CHROME_HEADLESS": "1", 429 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 430 }, 431 "infra_step": true, 432 "name": "kill adb server" 433 }, 434 { 435 "name": "$result" 436 } 437]