1[ 2 { 3 "cmd": [ 4 "python", 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 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 52 "--json-output", 53 "/path/to/tmp/json", 54 "copy", 55 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 56 "/path/to/tmp/" 57 ], 58 "infra_step": true, 59 "name": "Get skp VERSION" 60 }, 61 { 62 "cmd": [ 63 "python", 64 "-u", 65 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 66 "--json-output", 67 "/path/to/tmp/json", 68 "copy", 69 "42", 70 "[START_DIR]/tmp/SKP_VERSION" 71 ], 72 "infra_step": true, 73 "name": "write SKP_VERSION", 74 "~followup_annotations": [ 75 "@@@STEP_LOG_LINE@SKP_VERSION@42@@@", 76 "@@@STEP_LOG_END@SKP_VERSION@@@" 77 ] 78 }, 79 { 80 "cmd": [ 81 "/usr/bin/adb.1.0.35", 82 "shell", 83 "cat", 84 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 85 ], 86 "cwd": "[START_DIR]/skia", 87 "env": { 88 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 89 "CHROME_HEADLESS": "1", 90 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 91 }, 92 "infra_step": true, 93 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION" 94 }, 95 { 96 "cmd": [ 97 "/usr/bin/adb.1.0.35", 98 "shell", 99 "rm", 100 "-f", 101 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 102 ], 103 "cwd": "[START_DIR]/skia", 104 "env": { 105 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 106 "CHROME_HEADLESS": "1", 107 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 108 }, 109 "infra_step": true, 110 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION" 111 }, 112 { 113 "cmd": [ 114 "/usr/bin/adb.1.0.35", 115 "shell", 116 "rm", 117 "-rf", 118 "/sdcard/revenge_of_the_skiabot/skps" 119 ], 120 "cwd": "[START_DIR]/skia", 121 "env": { 122 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 123 "CHROME_HEADLESS": "1", 124 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 125 }, 126 "infra_step": true, 127 "name": "rm /sdcard/revenge_of_the_skiabot/skps" 128 }, 129 { 130 "cmd": [ 131 "/usr/bin/adb.1.0.35", 132 "shell", 133 "mkdir", 134 "-p", 135 "/sdcard/revenge_of_the_skiabot/skps" 136 ], 137 "cwd": "[START_DIR]/skia", 138 "env": { 139 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 140 "CHROME_HEADLESS": "1", 141 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 142 }, 143 "infra_step": true, 144 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 145 }, 146 { 147 "cmd": [ 148 "python", 149 "-u", 150 "\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", 151 "[START_DIR]/skp", 152 "/sdcard/revenge_of_the_skiabot/skps" 153 ], 154 "env": { 155 "CHROME_HEADLESS": "1", 156 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 157 }, 158 "infra_step": true, 159 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps", 160 "~followup_annotations": [ 161 "@@@STEP_LOG_LINE@python.inline@@@@", 162 "@@@STEP_LOG_LINE@python.inline@import os@@@", 163 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 164 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 165 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 166 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 167 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 168 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 169 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 170 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 171 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 172 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 173 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@", 174 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 175 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 176 "@@@STEP_LOG_END@python.inline@@@" 177 ] 178 }, 179 { 180 "cmd": [ 181 "/usr/bin/adb.1.0.35", 182 "push", 183 "[START_DIR]/tmp/SKP_VERSION", 184 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 185 ], 186 "cwd": "[START_DIR]/skia", 187 "env": { 188 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 189 "CHROME_HEADLESS": "1", 190 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 191 }, 192 "infra_step": true, 193 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 194 }, 195 { 196 "cmd": [ 197 "python", 198 "-u", 199 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 200 "--json-output", 201 "/path/to/tmp/json", 202 "ensure-directory", 203 "--mode", 204 "0777", 205 "[START_DIR]/[SWARM_OUT_DIR]" 206 ], 207 "infra_step": true, 208 "name": "makedirs perf_dir" 209 }, 210 { 211 "cmd": [ 212 "adb.1.0.35", 213 "push", 214 "[START_DIR]/build/skpbench", 215 "/data/local/tmp/" 216 ], 217 "cwd": "[START_DIR]/skia", 218 "env": { 219 "CHROME_HEADLESS": "1", 220 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 221 }, 222 "infra_step": true, 223 "name": "push skpbench" 224 }, 225 { 226 "cmd": [ 227 "python", 228 "-u", 229 "[START_DIR]/skia/tools/skpbench/skpbench.py", 230 "/data/local/tmp/skpbench", 231 "--resultsfile", 232 "[START_DIR]/[SWARM_OUT_DIR]/table", 233 "--config", 234 "gles", 235 "-v5", 236 "--adb", 237 "--adb_binary", 238 "adb.1.0.35", 239 "--pr", 240 "ccpr", 241 "--cc", 242 "--nocache", 243 "/sdcard/revenge_of_the_skiabot/skps/desk_*svg.skp", 244 "/sdcard/revenge_of_the_skiabot/skps/desk_chalkboard.skp" 245 ], 246 "env": { 247 "CHROME_HEADLESS": "1", 248 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 249 }, 250 "name": "skpbench" 251 }, 252 { 253 "cmd": [ 254 "python", 255 "-u", 256 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 257 ], 258 "name": "get swarming task id", 259 "~followup_annotations": [ 260 "@@@STEP_LOG_LINE@python.inline@import os@@@", 261 "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 262 "@@@STEP_LOG_END@python.inline@@@" 263 ] 264 }, 265 { 266 "cmd": [ 267 "python", 268 "-u", 269 "[START_DIR]/skia/tools/skpbench/skiaperf.py", 270 "[START_DIR]/[SWARM_OUT_DIR]/table", 271 "--properties", 272 "gitHash", 273 "abc123", 274 "swarming_bot_id", 275 "skia-bot-123", 276 "swarming_task_id", 277 "123456", 278 "--outfile", 279 "[START_DIR]/[SWARM_OUT_DIR]/skpbench_abc123_1337000001.json", 280 "--key", 281 "arch", 282 "arm64", 283 "compiler", 284 "Clang", 285 "cpu_or_gpu", 286 "GPU", 287 "cpu_or_gpu_value", 288 "Adreno530", 289 "extra_config", 290 "Android_CCPR_Skpbench", 291 "model", 292 "Pixel", 293 "os", 294 "Android", 295 "test_filter", 296 "All" 297 ], 298 "env": { 299 "CHROME_HEADLESS": "1", 300 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 301 }, 302 "name": "Parse skpbench output into Perf json" 303 }, 304 { 305 "cmd": [ 306 "python", 307 "-u", 308 "\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", 309 "[START_DIR]/build" 310 ], 311 "env": { 312 "CHROME_HEADLESS": "1", 313 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 314 }, 315 "infra_step": true, 316 "name": "dump log", 317 "timeout": 300, 318 "~followup_annotations": [ 319 "@@@STEP_LOG_LINE@python.inline@@@@", 320 "@@@STEP_LOG_LINE@python.inline@import os@@@", 321 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 322 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 323 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 324 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@", 325 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 326 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 327 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 328 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 329 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 330 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 331 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 332 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 333 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 334 "@@@STEP_LOG_END@python.inline@@@" 335 ] 336 }, 337 { 338 "cmd": [ 339 "/usr/bin/adb.1.0.35", 340 "kill-server" 341 ], 342 "cwd": "[START_DIR]/skia", 343 "env": { 344 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 345 "CHROME_HEADLESS": "1", 346 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 347 }, 348 "infra_step": true, 349 "name": "kill adb server" 350 }, 351 { 352 "name": "$result" 353 } 354]