1[ 2 { 3 "cmd": [ 4 "python", 5 "-u", 6 "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" 7 ], 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@@@" 13 ] 14 }, 15 { 16 "cmd": [ 17 "/opt/infra-android/tools/adb", 18 "push", 19 "file.txt", 20 "file.txt" 21 ], 22 "cwd": "[START_DIR]/skia", 23 "env": { 24 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 25 "CHROME_HEADLESS": "1", 26 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 27 }, 28 "infra_step": true, 29 "name": "push file.txt file.txt" 30 }, 31 { 32 "cmd": [ 33 "/opt/infra-android/tools/adb", 34 "shell", 35 "cat", 36 "file.txt" 37 ], 38 "cwd": "[START_DIR]/skia", 39 "env": { 40 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 41 "CHROME_HEADLESS": "1", 42 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 43 }, 44 "infra_step": true, 45 "name": "read file.txt" 46 }, 47 { 48 "cmd": [ 49 "python", 50 "-u", 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(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", 52 "/opt/infra-android/tools/adb", 53 "file.txt" 54 ], 55 "env": { 56 "CHROME_HEADLESS": "1", 57 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 58 }, 59 "infra_step": true, 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(cmd, stderr=subprocess.STDOUT)@@@", 80 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 81 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 82 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 83 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 84 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 85 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 86 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 87 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 88 "@@@STEP_LOG_END@python.inline@@@" 89 ] 90 }, 91 { 92 "cmd": [ 93 "vpython", 94 "-u", 95 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 96 "--json-output", 97 "/path/to/tmp/json", 98 "rmtree", 99 "results_dir" 100 ], 101 "infra_step": true, 102 "name": "rmtree results_dir" 103 }, 104 { 105 "cmd": [ 106 "vpython", 107 "-u", 108 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 109 "--json-output", 110 "/path/to/tmp/json", 111 "ensure-directory", 112 "--mode", 113 "0777", 114 "results_dir" 115 ], 116 "infra_step": true, 117 "name": "makedirs results_dir" 118 }, 119 { 120 "cmd": [ 121 "python", 122 "-u", 123 "\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", 124 "/opt/infra-android/tools/adb", 125 "device_results_dir" 126 ], 127 "env": { 128 "CHROME_HEADLESS": "1", 129 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 130 }, 131 "infra_step": true, 132 "name": "rm device_results_dir", 133 "~followup_annotations": [ 134 "@@@STEP_LOG_LINE@python.inline@@@@", 135 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 136 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 137 "@@@STEP_LOG_LINE@python.inline@@@@", 138 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 139 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 140 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 141 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 142 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 143 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 144 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 145 "@@@STEP_LOG_LINE@python.inline@@@@", 146 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 147 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 148 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 149 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 150 "@@@STEP_LOG_LINE@python.inline@try:@@@", 151 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 152 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 153 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 154 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 155 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 156 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 157 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 158 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 159 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 160 "@@@STEP_LOG_END@python.inline@@@" 161 ] 162 }, 163 { 164 "cmd": [ 165 "/opt/infra-android/tools/adb", 166 "shell", 167 "mkdir", 168 "-p", 169 "device_results_dir" 170 ], 171 "cwd": "[START_DIR]/skia", 172 "env": { 173 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 174 "CHROME_HEADLESS": "1", 175 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 176 }, 177 "infra_step": true, 178 "name": "mkdir device_results_dir" 179 }, 180 { 181 "cmd": [ 182 "/opt/infra-android/tools/adb", 183 "shell", 184 "mkdir", 185 "-p", 186 "/sdcard/revenge_of_the_skiabot/resources" 187 ], 188 "cwd": "[START_DIR]/skia", 189 "env": { 190 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 191 "CHROME_HEADLESS": "1", 192 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 193 }, 194 "infra_step": true, 195 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 196 }, 197 { 198 "cmd": [ 199 "python", 200 "-u", 201 "\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'])\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]).strip()\nif prior_status == str(value):\n print 'CPU %d online already %d' % (cpu, value)\n sys.exit()\n\nsubprocess.check_output([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]).strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n", 202 "/opt/infra-android/tools/adb", 203 "0", 204 "1" 205 ], 206 "env": { 207 "CHROME_HEADLESS": "1", 208 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 209 }, 210 "infra_step": true, 211 "name": "Enabling CPU 0", 212 "timeout": 30, 213 "~followup_annotations": [ 214 "@@@STEP_LOG_LINE@python.inline@@@@", 215 "@@@STEP_LOG_LINE@python.inline@import os@@@", 216 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 217 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 218 "@@@STEP_LOG_LINE@python.inline@import time@@@", 219 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 220 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 221 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@", 222 "@@@STEP_LOG_LINE@python.inline@@@@", 223 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 224 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 225 "@@@STEP_LOG_LINE@python.inline@print log@@@", 226 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 227 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 228 "@@@STEP_LOG_LINE@python.inline@@@@", 229 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 230 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@", 231 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 232 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 233 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@", 234 "@@@STEP_LOG_LINE@python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 235 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@", 236 "@@@STEP_LOG_LINE@python.inline@@@@", 237 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 238 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 239 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 240 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 241 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@", 242 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 243 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@", 244 "@@@STEP_LOG_END@python.inline@@@" 245 ] 246 }, 247 { 248 "cmd": [ 249 "python", 250 "-u", 251 "\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'])\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]).strip()\nif prior_status == str(value):\n print 'CPU %d online already %d' % (cpu, value)\n sys.exit()\n\nsubprocess.check_output([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]).strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n", 252 "/opt/infra-android/tools/adb", 253 "1", 254 "1" 255 ], 256 "env": { 257 "CHROME_HEADLESS": "1", 258 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 259 }, 260 "infra_step": true, 261 "name": "Enabling CPU 1", 262 "timeout": 30, 263 "~followup_annotations": [ 264 "@@@STEP_LOG_LINE@python.inline@@@@", 265 "@@@STEP_LOG_LINE@python.inline@import os@@@", 266 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 267 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 268 "@@@STEP_LOG_LINE@python.inline@import time@@@", 269 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 270 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 271 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@", 272 "@@@STEP_LOG_LINE@python.inline@@@@", 273 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 274 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 275 "@@@STEP_LOG_LINE@python.inline@print log@@@", 276 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 277 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 278 "@@@STEP_LOG_LINE@python.inline@@@@", 279 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 280 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@", 281 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 282 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 283 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@", 284 "@@@STEP_LOG_LINE@python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 285 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@", 286 "@@@STEP_LOG_LINE@python.inline@@@@", 287 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 288 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 289 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 290 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 291 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@", 292 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 293 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@", 294 "@@@STEP_LOG_END@python.inline@@@" 295 ] 296 }, 297 { 298 "cmd": [ 299 "python", 300 "-u", 301 "\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'])\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]).strip()\nif prior_status == str(value):\n print 'CPU %d online already %d' % (cpu, value)\n sys.exit()\n\nsubprocess.check_output([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]).strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n", 302 "/opt/infra-android/tools/adb", 303 "2", 304 "1" 305 ], 306 "env": { 307 "CHROME_HEADLESS": "1", 308 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 309 }, 310 "infra_step": true, 311 "name": "Enabling CPU 2", 312 "timeout": 30, 313 "~followup_annotations": [ 314 "@@@STEP_LOG_LINE@python.inline@@@@", 315 "@@@STEP_LOG_LINE@python.inline@import os@@@", 316 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 317 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 318 "@@@STEP_LOG_LINE@python.inline@import time@@@", 319 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 320 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 321 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@", 322 "@@@STEP_LOG_LINE@python.inline@@@@", 323 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 324 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 325 "@@@STEP_LOG_LINE@python.inline@print log@@@", 326 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 327 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 328 "@@@STEP_LOG_LINE@python.inline@@@@", 329 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 330 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@", 331 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 332 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 333 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@", 334 "@@@STEP_LOG_LINE@python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 335 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@", 336 "@@@STEP_LOG_LINE@python.inline@@@@", 337 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 338 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 339 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 340 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 341 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@", 342 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 343 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@", 344 "@@@STEP_LOG_END@python.inline@@@" 345 ] 346 }, 347 { 348 "cmd": [ 349 "python", 350 "-u", 351 "\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'])\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]).strip()\nif prior_status == str(value):\n print 'CPU %d online already %d' % (cpu, value)\n sys.exit()\n\nsubprocess.check_output([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]).strip()\nif actual_status != str(value):\n raise Exception('(actual, expected) (%s, %d)'\n % (actual_status, value))\n", 352 "/opt/infra-android/tools/adb", 353 "3", 354 "1" 355 ], 356 "env": { 357 "CHROME_HEADLESS": "1", 358 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 359 }, 360 "infra_step": true, 361 "name": "Enabling CPU 3", 362 "timeout": 30, 363 "~followup_annotations": [ 364 "@@@STEP_LOG_LINE@python.inline@@@@", 365 "@@@STEP_LOG_LINE@python.inline@import os@@@", 366 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 367 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 368 "@@@STEP_LOG_LINE@python.inline@import time@@@", 369 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 370 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 371 "@@@STEP_LOG_LINE@python.inline@value = int(sys.argv[3])@@@", 372 "@@@STEP_LOG_LINE@python.inline@@@@", 373 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 374 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 375 "@@@STEP_LOG_LINE@python.inline@print log@@@", 376 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 377 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 378 "@@@STEP_LOG_LINE@python.inline@@@@", 379 "@@@STEP_LOG_LINE@python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 380 "@@@STEP_LOG_LINE@python.inline@# So, check the value before trying to write it.@@@", 381 "@@@STEP_LOG_LINE@python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 382 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 383 "@@@STEP_LOG_LINE@python.inline@if prior_status == str(value):@@@", 384 "@@@STEP_LOG_LINE@python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 385 "@@@STEP_LOG_LINE@python.inline@ sys.exit()@@@", 386 "@@@STEP_LOG_LINE@python.inline@@@@", 387 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 388 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 389 "@@@STEP_LOG_LINE@python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 390 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 391 "@@@STEP_LOG_LINE@python.inline@if actual_status != str(value):@@@", 392 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 393 "@@@STEP_LOG_LINE@python.inline@ % (actual_status, value))@@@", 394 "@@@STEP_LOG_END@python.inline@@@" 395 ] 396 }, 397 { 398 "cmd": [ 399 "python", 400 "-u", 401 "\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'])\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([ADB, 'shell', 'echo \"%s\" > '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])\nactual_gov = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()\nif actual_gov != gov:\n raise Exception('(actual, expected) (%s, %s)'\n % (actual_gov, gov))\n", 402 "/opt/infra-android/tools/adb", 403 "4", 404 "ondemand" 405 ], 406 "env": { 407 "CHROME_HEADLESS": "1", 408 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 409 }, 410 "infra_step": true, 411 "name": "Set CPU 4's governor to ondemand", 412 "timeout": 30, 413 "~followup_annotations": [ 414 "@@@STEP_LOG_LINE@python.inline@@@@", 415 "@@@STEP_LOG_LINE@python.inline@import os@@@", 416 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 417 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 418 "@@@STEP_LOG_LINE@python.inline@import time@@@", 419 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 420 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 421 "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@", 422 "@@@STEP_LOG_LINE@python.inline@@@@", 423 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 424 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 425 "@@@STEP_LOG_LINE@python.inline@print log@@@", 426 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 427 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 428 "@@@STEP_LOG_LINE@python.inline@@@@", 429 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 430 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 431 "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 432 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 433 "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@", 434 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 435 "@@@STEP_LOG_LINE@python.inline@ % (actual_gov, gov))@@@", 436 "@@@STEP_LOG_END@python.inline@@@" 437 ] 438 }, 439 { 440 "cmd": [ 441 "python", 442 "-u", 443 "\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'])\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([ADB, 'shell', 'echo \"%s\" > '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])\nactual_gov = subprocess.check_output([ADB, 'shell', 'cat '\n '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()\nif actual_gov != gov:\n raise Exception('(actual, expected) (%s, %s)'\n % (actual_gov, gov))\n", 444 "/opt/infra-android/tools/adb", 445 "0", 446 "ondemand" 447 ], 448 "env": { 449 "CHROME_HEADLESS": "1", 450 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 451 }, 452 "infra_step": true, 453 "name": "Set CPU 0's governor to ondemand", 454 "timeout": 30, 455 "~followup_annotations": [ 456 "@@@STEP_LOG_LINE@python.inline@@@@", 457 "@@@STEP_LOG_LINE@python.inline@import os@@@", 458 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 459 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 460 "@@@STEP_LOG_LINE@python.inline@import time@@@", 461 "@@@STEP_LOG_LINE@python.inline@ADB = sys.argv[1]@@@", 462 "@@@STEP_LOG_LINE@python.inline@cpu = int(sys.argv[2])@@@", 463 "@@@STEP_LOG_LINE@python.inline@gov = sys.argv[3]@@@", 464 "@@@STEP_LOG_LINE@python.inline@@@@", 465 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 466 "@@@STEP_LOG_LINE@python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 467 "@@@STEP_LOG_LINE@python.inline@print log@@@", 468 "@@@STEP_LOG_LINE@python.inline@if 'cannot' in log:@@@", 469 "@@@STEP_LOG_LINE@python.inline@ raise Exception('adb root failed')@@@", 470 "@@@STEP_LOG_LINE@python.inline@@@@", 471 "@@@STEP_LOG_LINE@python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 472 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 473 "@@@STEP_LOG_LINE@python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 474 "@@@STEP_LOG_LINE@python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 475 "@@@STEP_LOG_LINE@python.inline@if actual_gov != gov:@@@", 476 "@@@STEP_LOG_LINE@python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 477 "@@@STEP_LOG_LINE@python.inline@ % (actual_gov, gov))@@@", 478 "@@@STEP_LOG_END@python.inline@@@" 479 ] 480 }, 481 { 482 "cmd": [ 483 "/opt/infra-android/tools/adb", 484 "push", 485 "[START_DIR]/build/dm", 486 "/data/local/tmp/" 487 ], 488 "cwd": "[START_DIR]/skia", 489 "env": { 490 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 491 "CHROME_HEADLESS": "1", 492 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 493 }, 494 "infra_step": true, 495 "name": "push dm" 496 }, 497 { 498 "cmd": [ 499 "vpython", 500 "-u", 501 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 502 "--json-output", 503 "/path/to/tmp/json", 504 "glob", 505 "[START_DIR]/skia/resources", 506 "*" 507 ], 508 "infra_step": true, 509 "name": "ls [START_DIR]/skia/resources/*", 510 "~followup_annotations": [ 511 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/bar.jpg@@@", 512 "@@@STEP_LOG_LINE@glob@[START_DIR]/skia/resources/foo.png@@@", 513 "@@@STEP_LOG_END@glob@@@" 514 ] 515 }, 516 { 517 "cmd": [ 518 "/opt/infra-android/tools/adb", 519 "push", 520 "[START_DIR]/skia/resources/bar.jpg", 521 "[START_DIR]/skia/resources/foo.png", 522 "/sdcard/revenge_of_the_skiabot/resources" 523 ], 524 "cwd": "[START_DIR]/skia", 525 "env": { 526 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 527 "CHROME_HEADLESS": "1", 528 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 529 }, 530 "infra_step": true, 531 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" 532 }, 533 { 534 "cmd": [ 535 "vpython", 536 "-u", 537 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 538 "--json-output", 539 "/path/to/tmp/json", 540 "copy", 541 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 542 "/path/to/tmp/" 543 ], 544 "infra_step": true, 545 "name": "Get skp VERSION", 546 "~followup_annotations": [ 547 "@@@STEP_LOG_LINE@VERSION@42@@@", 548 "@@@STEP_LOG_END@VERSION@@@" 549 ] 550 }, 551 { 552 "cmd": [ 553 "vpython", 554 "-u", 555 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 556 "--json-output", 557 "/path/to/tmp/json", 558 "copy", 559 "42", 560 "[START_DIR]/tmp/SKP_VERSION" 561 ], 562 "infra_step": true, 563 "name": "write SKP_VERSION", 564 "~followup_annotations": [ 565 "@@@STEP_LOG_LINE@SKP_VERSION@42@@@", 566 "@@@STEP_LOG_END@SKP_VERSION@@@" 567 ] 568 }, 569 { 570 "cmd": [ 571 "/opt/infra-android/tools/adb", 572 "shell", 573 "cat", 574 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 575 ], 576 "cwd": "[START_DIR]/skia", 577 "env": { 578 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 579 "CHROME_HEADLESS": "1", 580 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 581 }, 582 "infra_step": true, 583 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION" 584 }, 585 { 586 "cmd": [ 587 "python", 588 "-u", 589 "\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", 590 "/opt/infra-android/tools/adb", 591 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 592 ], 593 "env": { 594 "CHROME_HEADLESS": "1", 595 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 596 }, 597 "infra_step": true, 598 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION", 599 "~followup_annotations": [ 600 "@@@STEP_LOG_LINE@python.inline@@@@", 601 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 602 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 603 "@@@STEP_LOG_LINE@python.inline@@@@", 604 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 605 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 606 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 607 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 608 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 609 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 610 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 611 "@@@STEP_LOG_LINE@python.inline@@@@", 612 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 613 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 614 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 615 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 616 "@@@STEP_LOG_LINE@python.inline@try:@@@", 617 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 618 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 619 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 620 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 621 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 622 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 623 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 624 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 625 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 626 "@@@STEP_LOG_END@python.inline@@@" 627 ] 628 }, 629 { 630 "cmd": [ 631 "python", 632 "-u", 633 "\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", 634 "/opt/infra-android/tools/adb", 635 "/sdcard/revenge_of_the_skiabot/skps" 636 ], 637 "env": { 638 "CHROME_HEADLESS": "1", 639 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 640 }, 641 "infra_step": true, 642 "name": "rm /sdcard/revenge_of_the_skiabot/skps", 643 "~followup_annotations": [ 644 "@@@STEP_LOG_LINE@python.inline@@@@", 645 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 646 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 647 "@@@STEP_LOG_LINE@python.inline@@@@", 648 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 649 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 650 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 651 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 652 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 653 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 654 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 655 "@@@STEP_LOG_LINE@python.inline@@@@", 656 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 657 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 658 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 659 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 660 "@@@STEP_LOG_LINE@python.inline@try:@@@", 661 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 662 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 663 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 664 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 665 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 666 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 667 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 668 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 669 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 670 "@@@STEP_LOG_END@python.inline@@@" 671 ] 672 }, 673 { 674 "cmd": [ 675 "/opt/infra-android/tools/adb", 676 "shell", 677 "mkdir", 678 "-p", 679 "/sdcard/revenge_of_the_skiabot/skps" 680 ], 681 "cwd": "[START_DIR]/skia", 682 "env": { 683 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 684 "CHROME_HEADLESS": "1", 685 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 686 }, 687 "infra_step": true, 688 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 689 }, 690 { 691 "cmd": [ 692 "vpython", 693 "-u", 694 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 695 "--json-output", 696 "/path/to/tmp/json", 697 "glob", 698 "[START_DIR]/skp", 699 "*" 700 ], 701 "infra_step": true, 702 "name": "ls [START_DIR]/skp/*", 703 "~followup_annotations": [ 704 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/bar.jpg@@@", 705 "@@@STEP_LOG_LINE@glob@[START_DIR]/skp/foo.png@@@", 706 "@@@STEP_LOG_END@glob@@@" 707 ] 708 }, 709 { 710 "cmd": [ 711 "/opt/infra-android/tools/adb", 712 "push", 713 "[START_DIR]/skp/bar.jpg", 714 "[START_DIR]/skp/foo.png", 715 "/sdcard/revenge_of_the_skiabot/skps" 716 ], 717 "cwd": "[START_DIR]/skia", 718 "env": { 719 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 720 "CHROME_HEADLESS": "1", 721 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 722 }, 723 "infra_step": true, 724 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" 725 }, 726 { 727 "cmd": [ 728 "/opt/infra-android/tools/adb", 729 "push", 730 "[START_DIR]/tmp/SKP_VERSION", 731 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 732 ], 733 "cwd": "[START_DIR]/skia", 734 "env": { 735 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 736 "CHROME_HEADLESS": "1", 737 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 738 }, 739 "infra_step": true, 740 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 741 }, 742 { 743 "cmd": [ 744 "vpython", 745 "-u", 746 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 747 "--json-output", 748 "/path/to/tmp/json", 749 "copy", 750 "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", 751 "/path/to/tmp/" 752 ], 753 "infra_step": true, 754 "name": "Get skimage VERSION", 755 "~followup_annotations": [ 756 "@@@STEP_LOG_LINE@VERSION@42@@@", 757 "@@@STEP_LOG_END@VERSION@@@" 758 ] 759 }, 760 { 761 "cmd": [ 762 "vpython", 763 "-u", 764 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 765 "--json-output", 766 "/path/to/tmp/json", 767 "copy", 768 "42", 769 "[START_DIR]/tmp/SK_IMAGE_VERSION" 770 ], 771 "infra_step": true, 772 "name": "write SK_IMAGE_VERSION", 773 "~followup_annotations": [ 774 "@@@STEP_LOG_LINE@SK_IMAGE_VERSION@42@@@", 775 "@@@STEP_LOG_END@SK_IMAGE_VERSION@@@" 776 ] 777 }, 778 { 779 "cmd": [ 780 "/opt/infra-android/tools/adb", 781 "shell", 782 "cat", 783 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 784 ], 785 "cwd": "[START_DIR]/skia", 786 "env": { 787 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 788 "CHROME_HEADLESS": "1", 789 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 790 }, 791 "infra_step": true, 792 "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 793 }, 794 { 795 "cmd": [ 796 "python", 797 "-u", 798 "\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", 799 "/opt/infra-android/tools/adb", 800 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 801 ], 802 "env": { 803 "CHROME_HEADLESS": "1", 804 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 805 }, 806 "infra_step": true, 807 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION", 808 "~followup_annotations": [ 809 "@@@STEP_LOG_LINE@python.inline@@@@", 810 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 811 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 812 "@@@STEP_LOG_LINE@python.inline@@@@", 813 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 814 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 815 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 816 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 817 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 818 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 819 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 820 "@@@STEP_LOG_LINE@python.inline@@@@", 821 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 822 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 823 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 824 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 825 "@@@STEP_LOG_LINE@python.inline@try:@@@", 826 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 827 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 828 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 829 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 830 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 831 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 832 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 833 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 834 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 835 "@@@STEP_LOG_END@python.inline@@@" 836 ] 837 }, 838 { 839 "cmd": [ 840 "python", 841 "-u", 842 "\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", 843 "/opt/infra-android/tools/adb", 844 "/sdcard/revenge_of_the_skiabot/images" 845 ], 846 "env": { 847 "CHROME_HEADLESS": "1", 848 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 849 }, 850 "infra_step": true, 851 "name": "rm /sdcard/revenge_of_the_skiabot/images", 852 "~followup_annotations": [ 853 "@@@STEP_LOG_LINE@python.inline@@@@", 854 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 855 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 856 "@@@STEP_LOG_LINE@python.inline@@@@", 857 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 858 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 859 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 860 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 861 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 862 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 863 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 864 "@@@STEP_LOG_LINE@python.inline@@@@", 865 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 866 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 867 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 868 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 869 "@@@STEP_LOG_LINE@python.inline@try:@@@", 870 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 871 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 872 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 873 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 874 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 875 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 876 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 877 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 878 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 879 "@@@STEP_LOG_END@python.inline@@@" 880 ] 881 }, 882 { 883 "cmd": [ 884 "/opt/infra-android/tools/adb", 885 "shell", 886 "mkdir", 887 "-p", 888 "/sdcard/revenge_of_the_skiabot/images" 889 ], 890 "cwd": "[START_DIR]/skia", 891 "env": { 892 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 893 "CHROME_HEADLESS": "1", 894 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 895 }, 896 "infra_step": true, 897 "name": "mkdir /sdcard/revenge_of_the_skiabot/images" 898 }, 899 { 900 "cmd": [ 901 "vpython", 902 "-u", 903 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 904 "--json-output", 905 "/path/to/tmp/json", 906 "glob", 907 "[START_DIR]/skimage", 908 "*" 909 ], 910 "infra_step": true, 911 "name": "ls [START_DIR]/skimage/*", 912 "~followup_annotations": [ 913 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/bar.jpg@@@", 914 "@@@STEP_LOG_LINE@glob@[START_DIR]/skimage/foo.png@@@", 915 "@@@STEP_LOG_END@glob@@@" 916 ] 917 }, 918 { 919 "cmd": [ 920 "/opt/infra-android/tools/adb", 921 "push", 922 "[START_DIR]/skimage/bar.jpg", 923 "[START_DIR]/skimage/foo.png", 924 "/sdcard/revenge_of_the_skiabot/images" 925 ], 926 "cwd": "[START_DIR]/skia", 927 "env": { 928 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 929 "CHROME_HEADLESS": "1", 930 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 931 }, 932 "infra_step": true, 933 "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" 934 }, 935 { 936 "cmd": [ 937 "/opt/infra-android/tools/adb", 938 "push", 939 "[START_DIR]/tmp/SK_IMAGE_VERSION", 940 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 941 ], 942 "cwd": "[START_DIR]/skia", 943 "env": { 944 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 945 "CHROME_HEADLESS": "1", 946 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 947 }, 948 "infra_step": true, 949 "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 950 }, 951 { 952 "cmd": [ 953 "vpython", 954 "-u", 955 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 956 "--json-output", 957 "/path/to/tmp/json", 958 "copy", 959 "[START_DIR]/skia/infra/bots/assets/svg/VERSION", 960 "/path/to/tmp/" 961 ], 962 "infra_step": true, 963 "name": "Get svg VERSION", 964 "~followup_annotations": [ 965 "@@@STEP_LOG_LINE@VERSION@42@@@", 966 "@@@STEP_LOG_END@VERSION@@@" 967 ] 968 }, 969 { 970 "cmd": [ 971 "vpython", 972 "-u", 973 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 974 "--json-output", 975 "/path/to/tmp/json", 976 "copy", 977 "42", 978 "[START_DIR]/tmp/SVG_VERSION" 979 ], 980 "infra_step": true, 981 "name": "write SVG_VERSION", 982 "~followup_annotations": [ 983 "@@@STEP_LOG_LINE@SVG_VERSION@42@@@", 984 "@@@STEP_LOG_END@SVG_VERSION@@@" 985 ] 986 }, 987 { 988 "cmd": [ 989 "/opt/infra-android/tools/adb", 990 "shell", 991 "cat", 992 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 993 ], 994 "cwd": "[START_DIR]/skia", 995 "env": { 996 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 997 "CHROME_HEADLESS": "1", 998 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 999 }, 1000 "infra_step": true, 1001 "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION" 1002 }, 1003 { 1004 "cmd": [ 1005 "python", 1006 "-u", 1007 "\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", 1008 "/opt/infra-android/tools/adb", 1009 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 1010 ], 1011 "env": { 1012 "CHROME_HEADLESS": "1", 1013 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1014 }, 1015 "infra_step": true, 1016 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION", 1017 "~followup_annotations": [ 1018 "@@@STEP_LOG_LINE@python.inline@@@@", 1019 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1020 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1021 "@@@STEP_LOG_LINE@python.inline@@@@", 1022 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 1023 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 1024 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 1025 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 1026 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 1027 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1028 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 1029 "@@@STEP_LOG_LINE@python.inline@@@@", 1030 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 1031 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 1032 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 1033 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1034 "@@@STEP_LOG_LINE@python.inline@try:@@@", 1035 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 1036 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 1037 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 1038 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 1039 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1040 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 1041 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1042 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 1043 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 1044 "@@@STEP_LOG_END@python.inline@@@" 1045 ] 1046 }, 1047 { 1048 "cmd": [ 1049 "python", 1050 "-u", 1051 "\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", 1052 "/opt/infra-android/tools/adb", 1053 "/sdcard/revenge_of_the_skiabot/svgs" 1054 ], 1055 "env": { 1056 "CHROME_HEADLESS": "1", 1057 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1058 }, 1059 "infra_step": true, 1060 "name": "rm /sdcard/revenge_of_the_skiabot/svgs", 1061 "~followup_annotations": [ 1062 "@@@STEP_LOG_LINE@python.inline@@@@", 1063 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1064 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1065 "@@@STEP_LOG_LINE@python.inline@@@@", 1066 "@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@", 1067 "@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@", 1068 "@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@", 1069 "@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@", 1070 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@", 1071 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1072 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@", 1073 "@@@STEP_LOG_LINE@python.inline@@@@", 1074 "@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@", 1075 "@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@", 1076 "@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@", 1077 "@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@", 1078 "@@@STEP_LOG_LINE@python.inline@try:@@@", 1079 "@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)@@@", 1080 "@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@", 1081 "@@@STEP_LOG_LINE@python.inline@ output = e.output@@@", 1082 "@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@", 1083 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1084 "@@@STEP_LOG_LINE@python.inline@print(output)@@@", 1085 "@@@STEP_LOG_LINE@python.inline@print('======')@@@", 1086 "@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@", 1087 "@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@", 1088 "@@@STEP_LOG_END@python.inline@@@" 1089 ] 1090 }, 1091 { 1092 "cmd": [ 1093 "/opt/infra-android/tools/adb", 1094 "shell", 1095 "mkdir", 1096 "-p", 1097 "/sdcard/revenge_of_the_skiabot/svgs" 1098 ], 1099 "cwd": "[START_DIR]/skia", 1100 "env": { 1101 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1102 "CHROME_HEADLESS": "1", 1103 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1104 }, 1105 "infra_step": true, 1106 "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs" 1107 }, 1108 { 1109 "cmd": [ 1110 "vpython", 1111 "-u", 1112 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1113 "--json-output", 1114 "/path/to/tmp/json", 1115 "glob", 1116 "[START_DIR]/svg", 1117 "*" 1118 ], 1119 "infra_step": true, 1120 "name": "ls [START_DIR]/svg/*", 1121 "~followup_annotations": [ 1122 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/bar.jpg@@@", 1123 "@@@STEP_LOG_LINE@glob@[START_DIR]/svg/foo.png@@@", 1124 "@@@STEP_LOG_END@glob@@@" 1125 ] 1126 }, 1127 { 1128 "cmd": [ 1129 "/opt/infra-android/tools/adb", 1130 "push", 1131 "[START_DIR]/svg/bar.jpg", 1132 "[START_DIR]/svg/foo.png", 1133 "/sdcard/revenge_of_the_skiabot/svgs" 1134 ], 1135 "cwd": "[START_DIR]/skia", 1136 "env": { 1137 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1138 "CHROME_HEADLESS": "1", 1139 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1140 }, 1141 "infra_step": true, 1142 "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" 1143 }, 1144 { 1145 "cmd": [ 1146 "/opt/infra-android/tools/adb", 1147 "push", 1148 "[START_DIR]/tmp/SVG_VERSION", 1149 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 1150 ], 1151 "cwd": "[START_DIR]/skia", 1152 "env": { 1153 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1154 "CHROME_HEADLESS": "1", 1155 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1156 }, 1157 "infra_step": true, 1158 "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION" 1159 }, 1160 { 1161 "cmd": [ 1162 "vpython", 1163 "-u", 1164 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1165 "--json-output", 1166 "/path/to/tmp/json", 1167 "copy", 1168 "set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc", 1169 "[START_DIR]/tmp/dm.sh" 1170 ], 1171 "infra_step": true, 1172 "name": "write dm.sh", 1173 "~followup_annotations": [ 1174 "@@@STEP_LOG_LINE@dm.sh@set -x; LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc@@@", 1175 "@@@STEP_LOG_END@dm.sh@@@" 1176 ] 1177 }, 1178 { 1179 "cmd": [ 1180 "/opt/infra-android/tools/adb", 1181 "push", 1182 "[START_DIR]/tmp/dm.sh", 1183 "/data/local/tmp/" 1184 ], 1185 "cwd": "[START_DIR]/skia", 1186 "env": { 1187 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1188 "CHROME_HEADLESS": "1", 1189 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1190 }, 1191 "infra_step": true, 1192 "name": "push dm.sh" 1193 }, 1194 { 1195 "cmd": [ 1196 "/opt/infra-android/tools/adb", 1197 "logcat", 1198 "-c" 1199 ], 1200 "cwd": "[START_DIR]/skia", 1201 "env": { 1202 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1203 "CHROME_HEADLESS": "1", 1204 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1205 }, 1206 "infra_step": true, 1207 "name": "clear log" 1208 }, 1209 { 1210 "cmd": [ 1211 "python", 1212 "-u", 1213 "\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(['/opt/infra-android/tools/adb', 'shell', 'cat',\n bin_dir + 'rc'])))\nexcept ValueError:\n print \"Couldn't read the return code. Probably killed for OOM.\"\n sys.exit(1)\n", 1214 "/data/local/tmp/", 1215 "dm.sh" 1216 ], 1217 "name": "dm", 1218 "~followup_annotations": [ 1219 "@@@STEP_LOG_LINE@python.inline@@@@", 1220 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1221 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1222 "@@@STEP_LOG_LINE@python.inline@bin_dir = sys.argv[1]@@@", 1223 "@@@STEP_LOG_LINE@python.inline@sh = sys.argv[2]@@@", 1224 "@@@STEP_LOG_LINE@python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 1225 "@@@STEP_LOG_LINE@python.inline@try:@@@", 1226 "@@@STEP_LOG_LINE@python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 1227 "@@@STEP_LOG_LINE@python.inline@ bin_dir + 'rc'])))@@@", 1228 "@@@STEP_LOG_LINE@python.inline@except ValueError:@@@", 1229 "@@@STEP_LOG_LINE@python.inline@ print \"Couldn't read the return code. Probably killed for OOM.\"@@@", 1230 "@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@", 1231 "@@@STEP_LOG_END@python.inline@@@" 1232 ] 1233 }, 1234 { 1235 "cmd": [], 1236 "name": "adb pull" 1237 }, 1238 { 1239 "cmd": [ 1240 "/opt/infra-android/tools/adb", 1241 "pull", 1242 "/sdcard/revenge_of_the_skiabot/dm_out", 1243 "[CLEANUP]/adb_pull_tmp_1" 1244 ], 1245 "cwd": "[START_DIR]/skia", 1246 "env": { 1247 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1248 "CHROME_HEADLESS": "1", 1249 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1250 }, 1251 "infra_step": true, 1252 "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out", 1253 "~followup_annotations": [ 1254 "@@@STEP_NEST_LEVEL@1@@@" 1255 ] 1256 }, 1257 { 1258 "cmd": [ 1259 "vpython", 1260 "-u", 1261 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1262 "--json-output", 1263 "/path/to/tmp/json", 1264 "glob", 1265 "[CLEANUP]/adb_pull_tmp_1", 1266 "dm_out/*" 1267 ], 1268 "infra_step": true, 1269 "name": "adb pull.list pulled files", 1270 "~followup_annotations": [ 1271 "@@@STEP_NEST_LEVEL@1@@@", 1272 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/1.png@@@", 1273 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/2.png@@@", 1274 "@@@STEP_LOG_END@glob@@@" 1275 ] 1276 }, 1277 { 1278 "cmd": [ 1279 "vpython", 1280 "-u", 1281 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1282 "--json-output", 1283 "/path/to/tmp/json", 1284 "copy", 1285 "[CLEANUP]/adb_pull_tmp_1/1.png", 1286 "[START_DIR]/[SWARM_OUT_DIR]" 1287 ], 1288 "infra_step": true, 1289 "name": "adb pull.copy 1.png", 1290 "~followup_annotations": [ 1291 "@@@STEP_NEST_LEVEL@1@@@" 1292 ] 1293 }, 1294 { 1295 "cmd": [ 1296 "vpython", 1297 "-u", 1298 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1299 "--json-output", 1300 "/path/to/tmp/json", 1301 "copy", 1302 "[CLEANUP]/adb_pull_tmp_1/2.png", 1303 "[START_DIR]/[SWARM_OUT_DIR]" 1304 ], 1305 "infra_step": true, 1306 "name": "adb pull.copy 2.png", 1307 "~followup_annotations": [ 1308 "@@@STEP_NEST_LEVEL@1@@@" 1309 ] 1310 }, 1311 { 1312 "cmd": [ 1313 "python", 1314 "-u", 1315 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/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 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", 1316 "[START_DIR]/build" 1317 ], 1318 "env": { 1319 "CHROME_HEADLESS": "1", 1320 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1321 }, 1322 "infra_step": true, 1323 "name": "dump log", 1324 "timeout": 300, 1325 "~followup_annotations": [ 1326 "@@@STEP_LOG_LINE@python.inline@@@@", 1327 "@@@STEP_LOG_LINE@python.inline@import os@@@", 1328 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 1329 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 1330 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 1331 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 1332 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 1333 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 1334 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 1335 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 1336 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 1337 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 1338 "@@@STEP_LOG_LINE@python.inline@ try:@@@", 1339 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 1340 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 1341 "@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@", 1342 "@@@STEP_LOG_LINE@python.inline@ pass@@@", 1343 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 1344 "@@@STEP_LOG_END@python.inline@@@" 1345 ] 1346 }, 1347 { 1348 "cmd": [ 1349 "/opt/infra-android/tools/adb", 1350 "kill-server" 1351 ], 1352 "cwd": "[START_DIR]/skia", 1353 "env": { 1354 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1355 "CHROME_HEADLESS": "1", 1356 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1357 }, 1358 "infra_step": true, 1359 "name": "kill adb server" 1360 }, 1361 { 1362 "name": "$result" 1363 } 1364]