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