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