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 "stdout": "/path/to/tmp/", 10 "~followup_annotations": [ 11 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 12 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 13 "@@@STEP_LOG_END (a] python.inline@@@" 14 ] 15 }, 16 { 17 "cmd": [ 18 "/opt/infra-android/tools/adb", 19 "push", 20 "file.txt", 21 "file.txt" 22 ], 23 "cwd": "[START_DIR]/skia", 24 "env": { 25 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 26 "CHROME_HEADLESS": "1", 27 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 28 }, 29 "infra_step": true, 30 "name": "push file.txt file.txt" 31 }, 32 { 33 "cmd": [ 34 "python", 35 "-u", 36 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 37 "--json-output", 38 "/path/to/tmp/json", 39 "rmtree", 40 "results_dir" 41 ], 42 "infra_step": true, 43 "name": "rmtree results_dir" 44 }, 45 { 46 "cmd": [ 47 "python", 48 "-u", 49 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 50 "--json-output", 51 "/path/to/tmp/json", 52 "ensure-directory", 53 "--mode", 54 "0777", 55 "results_dir" 56 ], 57 "infra_step": true, 58 "name": "makedirs results_dir" 59 }, 60 { 61 "cmd": [ 62 "/opt/infra-android/tools/adb", 63 "shell", 64 "rm", 65 "-rf", 66 "device_results_dir" 67 ], 68 "cwd": "[START_DIR]/skia", 69 "env": { 70 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 71 "CHROME_HEADLESS": "1", 72 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 73 }, 74 "infra_step": true, 75 "name": "rm device_results_dir" 76 }, 77 { 78 "cmd": [ 79 "/opt/infra-android/tools/adb", 80 "shell", 81 "mkdir", 82 "-p", 83 "device_results_dir" 84 ], 85 "cwd": "[START_DIR]/skia", 86 "env": { 87 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 88 "CHROME_HEADLESS": "1", 89 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 90 }, 91 "infra_step": true, 92 "name": "mkdir device_results_dir" 93 }, 94 { 95 "cmd": [ 96 "/opt/infra-android/tools/adb", 97 "shell", 98 "mkdir", 99 "-p", 100 "/sdcard/revenge_of_the_skiabot/resources" 101 ], 102 "cwd": "[START_DIR]/skia", 103 "env": { 104 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 105 "CHROME_HEADLESS": "1", 106 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 107 }, 108 "infra_step": true, 109 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 110 }, 111 { 112 "cmd": [ 113 "python", 114 "-u", 115 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 116 "[START_DIR]/skia/resources", 117 "/sdcard/revenge_of_the_skiabot/resources" 118 ], 119 "env": { 120 "CHROME_HEADLESS": "1", 121 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 122 }, 123 "infra_step": true, 124 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources", 125 "~followup_annotations": [ 126 "@@@STEP_LOG_LINE (a] python.inline@@@@", 127 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 128 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 129 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 130 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 131 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 132 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 133 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 134 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 135 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 136 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 137 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 138 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 139 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 140 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 141 "@@@STEP_LOG_END (a] python.inline@@@" 142 ] 143 }, 144 { 145 "cmd": [ 146 "python", 147 "-u", 148 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 149 "--json-output", 150 "/path/to/tmp/json", 151 "copy", 152 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 153 "/path/to/tmp/" 154 ], 155 "infra_step": true, 156 "name": "Get skp VERSION" 157 }, 158 { 159 "cmd": [ 160 "python", 161 "-u", 162 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 163 "--json-output", 164 "/path/to/tmp/json", 165 "copy", 166 "42", 167 "[START_DIR]/tmp/SKP_VERSION" 168 ], 169 "infra_step": true, 170 "name": "write SKP_VERSION" 171 }, 172 { 173 "cmd": [ 174 "/opt/infra-android/tools/adb", 175 "shell", 176 "cat", 177 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 178 ], 179 "cwd": "[START_DIR]/skia", 180 "env": { 181 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 182 "CHROME_HEADLESS": "1", 183 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 184 }, 185 "infra_step": true, 186 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION", 187 "stdout": "/path/to/tmp/" 188 }, 189 { 190 "cmd": [ 191 "/opt/infra-android/tools/adb", 192 "shell", 193 "rm", 194 "-f", 195 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 196 ], 197 "cwd": "[START_DIR]/skia", 198 "env": { 199 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 200 "CHROME_HEADLESS": "1", 201 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 202 }, 203 "infra_step": true, 204 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION" 205 }, 206 { 207 "cmd": [ 208 "/opt/infra-android/tools/adb", 209 "shell", 210 "rm", 211 "-rf", 212 "/sdcard/revenge_of_the_skiabot/skps" 213 ], 214 "cwd": "[START_DIR]/skia", 215 "env": { 216 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 217 "CHROME_HEADLESS": "1", 218 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 219 }, 220 "infra_step": true, 221 "name": "rm /sdcard/revenge_of_the_skiabot/skps" 222 }, 223 { 224 "cmd": [ 225 "/opt/infra-android/tools/adb", 226 "shell", 227 "mkdir", 228 "-p", 229 "/sdcard/revenge_of_the_skiabot/skps" 230 ], 231 "cwd": "[START_DIR]/skia", 232 "env": { 233 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 234 "CHROME_HEADLESS": "1", 235 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 236 }, 237 "infra_step": true, 238 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 239 }, 240 { 241 "cmd": [ 242 "python", 243 "-u", 244 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 245 "[START_DIR]/skp", 246 "/sdcard/revenge_of_the_skiabot/skps" 247 ], 248 "env": { 249 "CHROME_HEADLESS": "1", 250 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 251 }, 252 "infra_step": true, 253 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps", 254 "~followup_annotations": [ 255 "@@@STEP_LOG_LINE (a] python.inline@@@@", 256 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 257 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 258 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 259 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 260 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 261 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 262 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 263 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 264 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 265 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 266 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 267 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 268 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 269 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 270 "@@@STEP_LOG_END (a] python.inline@@@" 271 ] 272 }, 273 { 274 "cmd": [ 275 "/opt/infra-android/tools/adb", 276 "push", 277 "[START_DIR]/tmp/SKP_VERSION", 278 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 279 ], 280 "cwd": "[START_DIR]/skia", 281 "env": { 282 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 283 "CHROME_HEADLESS": "1", 284 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 285 }, 286 "infra_step": true, 287 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 288 }, 289 { 290 "cmd": [ 291 "python", 292 "-u", 293 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 294 "--json-output", 295 "/path/to/tmp/json", 296 "copy", 297 "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", 298 "/path/to/tmp/" 299 ], 300 "infra_step": true, 301 "name": "Get skimage VERSION" 302 }, 303 { 304 "cmd": [ 305 "python", 306 "-u", 307 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 308 "--json-output", 309 "/path/to/tmp/json", 310 "copy", 311 "42", 312 "[START_DIR]/tmp/SK_IMAGE_VERSION" 313 ], 314 "infra_step": true, 315 "name": "write SK_IMAGE_VERSION" 316 }, 317 { 318 "cmd": [ 319 "/opt/infra-android/tools/adb", 320 "shell", 321 "cat", 322 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 323 ], 324 "cwd": "[START_DIR]/skia", 325 "env": { 326 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 327 "CHROME_HEADLESS": "1", 328 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 329 }, 330 "infra_step": true, 331 "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION", 332 "stdout": "/path/to/tmp/" 333 }, 334 { 335 "cmd": [ 336 "/opt/infra-android/tools/adb", 337 "shell", 338 "rm", 339 "-f", 340 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 341 ], 342 "cwd": "[START_DIR]/skia", 343 "env": { 344 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 345 "CHROME_HEADLESS": "1", 346 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 347 }, 348 "infra_step": true, 349 "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 350 }, 351 { 352 "cmd": [ 353 "/opt/infra-android/tools/adb", 354 "shell", 355 "rm", 356 "-rf", 357 "/sdcard/revenge_of_the_skiabot/images" 358 ], 359 "cwd": "[START_DIR]/skia", 360 "env": { 361 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 362 "CHROME_HEADLESS": "1", 363 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 364 }, 365 "infra_step": true, 366 "name": "rm /sdcard/revenge_of_the_skiabot/images" 367 }, 368 { 369 "cmd": [ 370 "/opt/infra-android/tools/adb", 371 "shell", 372 "mkdir", 373 "-p", 374 "/sdcard/revenge_of_the_skiabot/images" 375 ], 376 "cwd": "[START_DIR]/skia", 377 "env": { 378 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 379 "CHROME_HEADLESS": "1", 380 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 381 }, 382 "infra_step": true, 383 "name": "mkdir /sdcard/revenge_of_the_skiabot/images" 384 }, 385 { 386 "cmd": [ 387 "python", 388 "-u", 389 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 390 "[START_DIR]/skimage", 391 "/sdcard/revenge_of_the_skiabot/images" 392 ], 393 "env": { 394 "CHROME_HEADLESS": "1", 395 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 396 }, 397 "infra_step": true, 398 "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images", 399 "~followup_annotations": [ 400 "@@@STEP_LOG_LINE (a] python.inline@@@@", 401 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 402 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 403 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 404 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 405 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 406 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 407 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 408 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 409 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 410 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 411 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 412 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 413 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 414 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 415 "@@@STEP_LOG_END (a] python.inline@@@" 416 ] 417 }, 418 { 419 "cmd": [ 420 "/opt/infra-android/tools/adb", 421 "push", 422 "[START_DIR]/tmp/SK_IMAGE_VERSION", 423 "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 424 ], 425 "cwd": "[START_DIR]/skia", 426 "env": { 427 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 428 "CHROME_HEADLESS": "1", 429 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 430 }, 431 "infra_step": true, 432 "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION" 433 }, 434 { 435 "cmd": [ 436 "python", 437 "-u", 438 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 439 "--json-output", 440 "/path/to/tmp/json", 441 "copy", 442 "[START_DIR]/skia/infra/bots/assets/svg/VERSION", 443 "/path/to/tmp/" 444 ], 445 "infra_step": true, 446 "name": "Get svg VERSION" 447 }, 448 { 449 "cmd": [ 450 "python", 451 "-u", 452 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 453 "--json-output", 454 "/path/to/tmp/json", 455 "copy", 456 "42", 457 "[START_DIR]/tmp/SVG_VERSION" 458 ], 459 "infra_step": true, 460 "name": "write SVG_VERSION" 461 }, 462 { 463 "cmd": [ 464 "/opt/infra-android/tools/adb", 465 "shell", 466 "cat", 467 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 468 ], 469 "cwd": "[START_DIR]/skia", 470 "env": { 471 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 472 "CHROME_HEADLESS": "1", 473 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 474 }, 475 "infra_step": true, 476 "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION", 477 "stdout": "/path/to/tmp/" 478 }, 479 { 480 "cmd": [ 481 "/opt/infra-android/tools/adb", 482 "shell", 483 "rm", 484 "-f", 485 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 486 ], 487 "cwd": "[START_DIR]/skia", 488 "env": { 489 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 490 "CHROME_HEADLESS": "1", 491 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 492 }, 493 "infra_step": true, 494 "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION" 495 }, 496 { 497 "cmd": [ 498 "/opt/infra-android/tools/adb", 499 "shell", 500 "rm", 501 "-rf", 502 "/sdcard/revenge_of_the_skiabot/svgs" 503 ], 504 "cwd": "[START_DIR]/skia", 505 "env": { 506 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 507 "CHROME_HEADLESS": "1", 508 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 509 }, 510 "infra_step": true, 511 "name": "rm /sdcard/revenge_of_the_skiabot/svgs" 512 }, 513 { 514 "cmd": [ 515 "/opt/infra-android/tools/adb", 516 "shell", 517 "mkdir", 518 "-p", 519 "/sdcard/revenge_of_the_skiabot/svgs" 520 ], 521 "cwd": "[START_DIR]/skia", 522 "env": { 523 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 524 "CHROME_HEADLESS": "1", 525 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 526 }, 527 "infra_step": true, 528 "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs" 529 }, 530 { 531 "cmd": [ 532 "python", 533 "-u", 534 "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 535 "[START_DIR]/svg", 536 "/sdcard/revenge_of_the_skiabot/svgs" 537 ], 538 "env": { 539 "CHROME_HEADLESS": "1", 540 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 541 }, 542 "infra_step": true, 543 "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs", 544 "~followup_annotations": [ 545 "@@@STEP_LOG_LINE (a] python.inline@@@@", 546 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 547 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 548 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 549 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 550 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 551 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 552 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 553 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 554 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 555 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 556 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 557 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 558 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 559 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 560 "@@@STEP_LOG_END (a] python.inline@@@" 561 ] 562 }, 563 { 564 "cmd": [ 565 "/opt/infra-android/tools/adb", 566 "push", 567 "[START_DIR]/tmp/SVG_VERSION", 568 "/sdcard/revenge_of_the_skiabot/SVG_VERSION" 569 ], 570 "cwd": "[START_DIR]/skia", 571 "env": { 572 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 573 "CHROME_HEADLESS": "1", 574 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 575 }, 576 "infra_step": true, 577 "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION" 578 }, 579 { 580 "cmd": [ 581 "python", 582 "-u", 583 "\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", 584 "/opt/infra-android/tools/adb", 585 "0", 586 "1" 587 ], 588 "env": { 589 "CHROME_HEADLESS": "1", 590 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 591 }, 592 "infra_step": true, 593 "name": "Enabling CPU 0", 594 "timeout": 30, 595 "~followup_annotations": [ 596 "@@@STEP_LOG_LINE (a] python.inline@@@@", 597 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 598 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 599 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 600 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 601 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 602 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 603 "@@@STEP_LOG_LINE (a] python.inline@value = int(sys.argv[3])@@@", 604 "@@@STEP_LOG_LINE (a] python.inline@@@@", 605 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 606 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 607 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 608 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 609 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 610 "@@@STEP_LOG_LINE (a] python.inline@@@@", 611 "@@@STEP_LOG_LINE (a] python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 612 "@@@STEP_LOG_LINE (a] python.inline@# So, check the value before trying to write it.@@@", 613 "@@@STEP_LOG_LINE (a] python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 614 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 615 "@@@STEP_LOG_LINE (a] python.inline@if prior_status == str(value):@@@", 616 "@@@STEP_LOG_LINE (a] python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 617 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit()@@@", 618 "@@@STEP_LOG_LINE (a] python.inline@@@@", 619 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 620 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 621 "@@@STEP_LOG_LINE (a] python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 622 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 623 "@@@STEP_LOG_LINE (a] python.inline@if actual_status != str(value):@@@", 624 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 625 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_status, value))@@@", 626 "@@@STEP_LOG_END (a] python.inline@@@" 627 ] 628 }, 629 { 630 "cmd": [ 631 "python", 632 "-u", 633 "\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", 634 "/opt/infra-android/tools/adb", 635 "1", 636 "1" 637 ], 638 "env": { 639 "CHROME_HEADLESS": "1", 640 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 641 }, 642 "infra_step": true, 643 "name": "Enabling CPU 1", 644 "timeout": 30, 645 "~followup_annotations": [ 646 "@@@STEP_LOG_LINE (a] python.inline@@@@", 647 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 648 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 649 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 650 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 651 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 652 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 653 "@@@STEP_LOG_LINE (a] python.inline@value = int(sys.argv[3])@@@", 654 "@@@STEP_LOG_LINE (a] python.inline@@@@", 655 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 656 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 657 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 658 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 659 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 660 "@@@STEP_LOG_LINE (a] python.inline@@@@", 661 "@@@STEP_LOG_LINE (a] python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 662 "@@@STEP_LOG_LINE (a] python.inline@# So, check the value before trying to write it.@@@", 663 "@@@STEP_LOG_LINE (a] python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 664 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 665 "@@@STEP_LOG_LINE (a] python.inline@if prior_status == str(value):@@@", 666 "@@@STEP_LOG_LINE (a] python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 667 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit()@@@", 668 "@@@STEP_LOG_LINE (a] python.inline@@@@", 669 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 670 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 671 "@@@STEP_LOG_LINE (a] python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 672 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 673 "@@@STEP_LOG_LINE (a] python.inline@if actual_status != str(value):@@@", 674 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 675 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_status, value))@@@", 676 "@@@STEP_LOG_END (a] python.inline@@@" 677 ] 678 }, 679 { 680 "cmd": [ 681 "python", 682 "-u", 683 "\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", 684 "/opt/infra-android/tools/adb", 685 "2", 686 "1" 687 ], 688 "env": { 689 "CHROME_HEADLESS": "1", 690 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 691 }, 692 "infra_step": true, 693 "name": "Enabling CPU 2", 694 "timeout": 30, 695 "~followup_annotations": [ 696 "@@@STEP_LOG_LINE (a] python.inline@@@@", 697 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 698 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 699 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 700 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 701 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 702 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 703 "@@@STEP_LOG_LINE (a] python.inline@value = int(sys.argv[3])@@@", 704 "@@@STEP_LOG_LINE (a] python.inline@@@@", 705 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 706 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 707 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 708 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 709 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 710 "@@@STEP_LOG_LINE (a] python.inline@@@@", 711 "@@@STEP_LOG_LINE (a] python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 712 "@@@STEP_LOG_LINE (a] python.inline@# So, check the value before trying to write it.@@@", 713 "@@@STEP_LOG_LINE (a] python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 714 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 715 "@@@STEP_LOG_LINE (a] python.inline@if prior_status == str(value):@@@", 716 "@@@STEP_LOG_LINE (a] python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 717 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit()@@@", 718 "@@@STEP_LOG_LINE (a] python.inline@@@@", 719 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 720 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 721 "@@@STEP_LOG_LINE (a] python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 722 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 723 "@@@STEP_LOG_LINE (a] python.inline@if actual_status != str(value):@@@", 724 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 725 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_status, value))@@@", 726 "@@@STEP_LOG_END (a] python.inline@@@" 727 ] 728 }, 729 { 730 "cmd": [ 731 "python", 732 "-u", 733 "\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", 734 "/opt/infra-android/tools/adb", 735 "3", 736 "1" 737 ], 738 "env": { 739 "CHROME_HEADLESS": "1", 740 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 741 }, 742 "infra_step": true, 743 "name": "Enabling CPU 3", 744 "timeout": 30, 745 "~followup_annotations": [ 746 "@@@STEP_LOG_LINE (a] python.inline@@@@", 747 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 748 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 749 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 750 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 751 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 752 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 753 "@@@STEP_LOG_LINE (a] python.inline@value = int(sys.argv[3])@@@", 754 "@@@STEP_LOG_LINE (a] python.inline@@@@", 755 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 756 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 757 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 758 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 759 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 760 "@@@STEP_LOG_LINE (a] python.inline@@@@", 761 "@@@STEP_LOG_LINE (a] python.inline@# If we try to echo 1 to an already online cpu, adb returns exit code 1.@@@", 762 "@@@STEP_LOG_LINE (a] python.inline@# So, check the value before trying to write it.@@@", 763 "@@@STEP_LOG_LINE (a] python.inline@prior_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 764 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 765 "@@@STEP_LOG_LINE (a] python.inline@if prior_status == str(value):@@@", 766 "@@@STEP_LOG_LINE (a] python.inline@ print 'CPU %d online already %d' % (cpu, value)@@@", 767 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit()@@@", 768 "@@@STEP_LOG_LINE (a] python.inline@@@@", 769 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo %s > '@@@", 770 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % (value, cpu)])@@@", 771 "@@@STEP_LOG_LINE (a] python.inline@actual_status = subprocess.check_output([ADB, 'shell', 'cat '@@@", 772 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/online' % cpu]).strip()@@@", 773 "@@@STEP_LOG_LINE (a] python.inline@if actual_status != str(value):@@@", 774 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %d)'@@@", 775 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_status, value))@@@", 776 "@@@STEP_LOG_END (a] python.inline@@@" 777 ] 778 }, 779 { 780 "cmd": [ 781 "python", 782 "-u", 783 "\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", 784 "/opt/infra-android/tools/adb", 785 "4", 786 "ondemand" 787 ], 788 "env": { 789 "CHROME_HEADLESS": "1", 790 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 791 }, 792 "infra_step": true, 793 "name": "Set CPU 4's governor to ondemand", 794 "timeout": 30, 795 "~followup_annotations": [ 796 "@@@STEP_LOG_LINE (a] python.inline@@@@", 797 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 798 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 799 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 800 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 801 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 802 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 803 "@@@STEP_LOG_LINE (a] python.inline@gov = sys.argv[3]@@@", 804 "@@@STEP_LOG_LINE (a] python.inline@@@@", 805 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 806 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 807 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 808 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 809 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 810 "@@@STEP_LOG_LINE (a] python.inline@@@@", 811 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 812 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 813 "@@@STEP_LOG_LINE (a] python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 814 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 815 "@@@STEP_LOG_LINE (a] python.inline@if actual_gov != gov:@@@", 816 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 817 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_gov, gov))@@@", 818 "@@@STEP_LOG_END (a] python.inline@@@" 819 ] 820 }, 821 { 822 "cmd": [ 823 "python", 824 "-u", 825 "\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", 826 "/opt/infra-android/tools/adb", 827 "0", 828 "ondemand" 829 ], 830 "env": { 831 "CHROME_HEADLESS": "1", 832 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 833 }, 834 "infra_step": true, 835 "name": "Set CPU 0's governor to ondemand", 836 "timeout": 30, 837 "~followup_annotations": [ 838 "@@@STEP_LOG_LINE (a] python.inline@@@@", 839 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 840 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 841 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 842 "@@@STEP_LOG_LINE (a] python.inline@import time@@@", 843 "@@@STEP_LOG_LINE (a] python.inline@ADB = sys.argv[1]@@@", 844 "@@@STEP_LOG_LINE (a] python.inline@cpu = int(sys.argv[2])@@@", 845 "@@@STEP_LOG_LINE (a] python.inline@gov = sys.argv[3]@@@", 846 "@@@STEP_LOG_LINE (a] python.inline@@@@", 847 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output([ADB, 'root'])@@@", 848 "@@@STEP_LOG_LINE (a] python.inline@# check for message like 'adbd cannot run as root in production builds'@@@", 849 "@@@STEP_LOG_LINE (a] python.inline@print log@@@", 850 "@@@STEP_LOG_LINE (a] python.inline@if 'cannot' in log:@@@", 851 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('adb root failed')@@@", 852 "@@@STEP_LOG_LINE (a] python.inline@@@@", 853 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_output([ADB, 'shell', 'echo \"%s\" > '@@@", 854 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % (gov, cpu)])@@@", 855 "@@@STEP_LOG_LINE (a] python.inline@actual_gov = subprocess.check_output([ADB, 'shell', 'cat '@@@", 856 "@@@STEP_LOG_LINE (a] python.inline@ '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor' % cpu]).strip()@@@", 857 "@@@STEP_LOG_LINE (a] python.inline@if actual_gov != gov:@@@", 858 "@@@STEP_LOG_LINE (a] python.inline@ raise Exception('(actual, expected) (%s, %s)'@@@", 859 "@@@STEP_LOG_LINE (a] python.inline@ % (actual_gov, gov))@@@", 860 "@@@STEP_LOG_END (a] python.inline@@@" 861 ] 862 }, 863 { 864 "cmd": [ 865 "/opt/infra-android/tools/adb", 866 "push", 867 "[START_DIR]/build/dm", 868 "/data/local/tmp/" 869 ], 870 "cwd": "[START_DIR]/skia", 871 "env": { 872 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 873 "CHROME_HEADLESS": "1", 874 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 875 }, 876 "infra_step": true, 877 "name": "push dm" 878 }, 879 { 880 "cmd": [ 881 "python", 882 "-u", 883 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 884 "--json-output", 885 "/path/to/tmp/json", 886 "copy", 887 "set -x; /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc", 888 "[START_DIR]/tmp/dm.sh" 889 ], 890 "infra_step": true, 891 "name": "write dm.sh" 892 }, 893 { 894 "cmd": [ 895 "/opt/infra-android/tools/adb", 896 "push", 897 "[START_DIR]/tmp/dm.sh", 898 "/data/local/tmp/" 899 ], 900 "cwd": "[START_DIR]/skia", 901 "env": { 902 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 903 "CHROME_HEADLESS": "1", 904 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 905 }, 906 "infra_step": true, 907 "name": "push dm.sh" 908 }, 909 { 910 "cmd": [ 911 "/opt/infra-android/tools/adb", 912 "logcat", 913 "-c" 914 ], 915 "cwd": "[START_DIR]/skia", 916 "env": { 917 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 918 "CHROME_HEADLESS": "1", 919 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 920 }, 921 "infra_step": true, 922 "name": "clear log" 923 }, 924 { 925 "cmd": [ 926 "python", 927 "-u", 928 "\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", 929 "/data/local/tmp/", 930 "dm.sh" 931 ], 932 "name": "dm", 933 "~followup_annotations": [ 934 "@@@STEP_LOG_LINE (a] python.inline@@@@", 935 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 936 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 937 "@@@STEP_LOG_LINE (a] python.inline@bin_dir = sys.argv[1]@@@", 938 "@@@STEP_LOG_LINE (a] python.inline@sh = sys.argv[2]@@@", 939 "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_call(['/opt/infra-android/tools/adb', 'shell', 'sh', bin_dir + sh])@@@", 940 "@@@STEP_LOG_LINE (a] python.inline@try:@@@", 941 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit(int(subprocess.check_output(['/opt/infra-android/tools/adb', 'shell', 'cat',@@@", 942 "@@@STEP_LOG_LINE (a] python.inline@ bin_dir + 'rc'])))@@@", 943 "@@@STEP_LOG_LINE (a] python.inline@except ValueError:@@@", 944 "@@@STEP_LOG_LINE (a] python.inline@ print \"Couldn't read the return code. Probably killed for OOM.\"@@@", 945 "@@@STEP_LOG_LINE (a] python.inline@ sys.exit(1)@@@", 946 "@@@STEP_LOG_END (a] python.inline@@@" 947 ] 948 }, 949 { 950 "cmd": [], 951 "name": "adb pull" 952 }, 953 { 954 "cmd": [ 955 "/opt/infra-android/tools/adb", 956 "pull", 957 "/sdcard/revenge_of_the_skiabot/dm_out", 958 "[CLEANUP]/adb_pull_tmp_1" 959 ], 960 "cwd": "[START_DIR]/skia", 961 "env": { 962 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 963 "CHROME_HEADLESS": "1", 964 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 965 }, 966 "infra_step": true, 967 "name": "adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out", 968 "~followup_annotations": [ 969 "@@@STEP_NEST_LEVEL@1@@@" 970 ] 971 }, 972 { 973 "cmd": [ 974 "python", 975 "-u", 976 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 977 "--json-output", 978 "/path/to/tmp/json", 979 "glob", 980 "[CLEANUP]/adb_pull_tmp_1", 981 "dm_out/*" 982 ], 983 "infra_step": true, 984 "name": "adb pull.list pulled files", 985 "stdout": "/path/to/tmp/", 986 "~followup_annotations": [ 987 "@@@STEP_NEST_LEVEL@1@@@", 988 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/1.png@@@", 989 "@@@STEP_LOG_LINE@glob@[CLEANUP]/adb_pull_tmp_1/2.png@@@", 990 "@@@STEP_LOG_END@glob@@@" 991 ] 992 }, 993 { 994 "cmd": [ 995 "python", 996 "-u", 997 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 998 "--json-output", 999 "/path/to/tmp/json", 1000 "copy", 1001 "[CLEANUP]/adb_pull_tmp_1/1.png", 1002 "[START_DIR]/[SWARM_OUT_DIR]" 1003 ], 1004 "infra_step": true, 1005 "name": "adb pull.copy 1.png", 1006 "~followup_annotations": [ 1007 "@@@STEP_NEST_LEVEL@1@@@" 1008 ] 1009 }, 1010 { 1011 "cmd": [ 1012 "python", 1013 "-u", 1014 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1015 "--json-output", 1016 "/path/to/tmp/json", 1017 "copy", 1018 "[CLEANUP]/adb_pull_tmp_1/2.png", 1019 "[START_DIR]/[SWARM_OUT_DIR]" 1020 ], 1021 "infra_step": true, 1022 "name": "adb pull.copy 2.png", 1023 "~followup_annotations": [ 1024 "@@@STEP_NEST_LEVEL@1@@@" 1025 ] 1026 }, 1027 { 1028 "cmd": [ 1029 "python", 1030 "-u", 1031 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 1032 "--json-output", 1033 "/path/to/tmp/json", 1034 "rmtree", 1035 "[CLEANUP]/adb_pull_tmp_1" 1036 ], 1037 "infra_step": true, 1038 "name": "adb pull.rmtree [CLEANUP]/adb_pull_tmp_1", 1039 "~followup_annotations": [ 1040 "@@@STEP_NEST_LEVEL@1@@@" 1041 ] 1042 }, 1043 { 1044 "cmd": [ 1045 "python", 1046 "-u", 1047 "\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 sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n line = line.replace(addr, addr + ' ' + sym.strip())\n print line\n", 1048 "[START_DIR]/build" 1049 ], 1050 "env": { 1051 "CHROME_HEADLESS": "1", 1052 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1053 }, 1054 "infra_step": true, 1055 "name": "dump log", 1056 "timeout": 300, 1057 "~followup_annotations": [ 1058 "@@@STEP_LOG_LINE (a] python.inline@@@@", 1059 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 1060 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 1061 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 1062 "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@", 1063 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 1064 "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@", 1065 "@@@STEP_LOG_LINE (a] python.inline@ tokens = line.split()@@@", 1066 "@@@STEP_LOG_LINE (a] python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 1067 "@@@STEP_LOG_LINE (a] python.inline@ addr, path = tokens[-2:]@@@", 1068 "@@@STEP_LOG_LINE (a] python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 1069 "@@@STEP_LOG_LINE (a] python.inline@ if os.path.exists(local):@@@", 1070 "@@@STEP_LOG_LINE (a] python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 1071 "@@@STEP_LOG_LINE (a] python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 1072 "@@@STEP_LOG_LINE (a] python.inline@ print line@@@", 1073 "@@@STEP_LOG_END (a] python.inline@@@" 1074 ] 1075 }, 1076 { 1077 "cmd": [ 1078 "/opt/infra-android/tools/adb", 1079 "kill-server" 1080 ], 1081 "cwd": "[START_DIR]/skia", 1082 "env": { 1083 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 1084 "CHROME_HEADLESS": "1", 1085 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 1086 }, 1087 "infra_step": true, 1088 "name": "kill adb server" 1089 }, 1090 { 1091 "jsonResult": null, 1092 "name": "$result" 1093 } 1094 ]