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/mskp/VERSION", 56 "/path/to/tmp/" 57 ], 58 "infra_step": true, 59 "name": "Get mskp 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/MSKP_VERSION" 71 ], 72 "infra_step": true, 73 "name": "write MSKP_VERSION", 74 "~followup_annotations": [ 75 "@@@STEP_LOG_LINE@MSKP_VERSION@42@@@", 76 "@@@STEP_LOG_END@MSKP_VERSION@@@" 77 ] 78 }, 79 { 80 "cmd": [ 81 "/usr/bin/adb.1.0.35", 82 "shell", 83 "cat", 84 "/sdcard/revenge_of_the_skiabot/MSKP_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/MSKP_VERSION" 94 }, 95 { 96 "cmd": [ 97 "/usr/bin/adb.1.0.35", 98 "shell", 99 "rm", 100 "-f", 101 "/sdcard/revenge_of_the_skiabot/MSKP_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/MSKP_VERSION" 111 }, 112 { 113 "cmd": [ 114 "/usr/bin/adb.1.0.35", 115 "shell", 116 "rm", 117 "-rf", 118 "/sdcard/revenge_of_the_skiabot/mskp" 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/mskp" 128 }, 129 { 130 "cmd": [ 131 "/usr/bin/adb.1.0.35", 132 "shell", 133 "mkdir", 134 "-p", 135 "/sdcard/revenge_of_the_skiabot/mskp" 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/mskp" 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]/mskp", 152 "/sdcard/revenge_of_the_skiabot/mskp" 153 ], 154 "env": { 155 "CHROME_HEADLESS": "1", 156 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 157 }, 158 "infra_step": true, 159 "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp", 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/MSKP_VERSION", 184 "/sdcard/revenge_of_the_skiabot/MSKP_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/MSKP_VERSION /sdcard/revenge_of_the_skiabot/MSKP_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 "/sdcard/revenge_of_the_skiabot/mskp" 240 ], 241 "env": { 242 "CHROME_HEADLESS": "1", 243 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 244 }, 245 "name": "skpbench" 246 }, 247 { 248 "cmd": [ 249 "python", 250 "-u", 251 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 252 ], 253 "name": "get swarming task id", 254 "~followup_annotations": [ 255 "@@@STEP_LOG_LINE@python.inline@import os@@@", 256 "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 257 "@@@STEP_LOG_END@python.inline@@@" 258 ] 259 }, 260 { 261 "cmd": [ 262 "python", 263 "-u", 264 "[START_DIR]/skia/tools/skpbench/skiaperf.py", 265 "[START_DIR]/[SWARM_OUT_DIR]/table", 266 "--properties", 267 "gitHash", 268 "abc123", 269 "swarming_bot_id", 270 "skia-bot-123", 271 "swarming_task_id", 272 "123456", 273 "--outfile", 274 "[START_DIR]/[SWARM_OUT_DIR]/skpbench_abc123_1337000001.json", 275 "--key", 276 "arch", 277 "arm64", 278 "compiler", 279 "Clang", 280 "cpu_or_gpu", 281 "GPU", 282 "cpu_or_gpu_value", 283 "Adreno530", 284 "extra_config", 285 "Android_Skpbench_Mskp", 286 "model", 287 "Pixel", 288 "os", 289 "Android", 290 "test_filter", 291 "All" 292 ], 293 "env": { 294 "CHROME_HEADLESS": "1", 295 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 296 }, 297 "name": "Parse skpbench output into Perf json" 298 }, 299 { 300 "cmd": [ 301 "python", 302 "-u", 303 "\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", 304 "[START_DIR]/build" 305 ], 306 "env": { 307 "CHROME_HEADLESS": "1", 308 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 309 }, 310 "infra_step": true, 311 "name": "dump log", 312 "timeout": 300, 313 "~followup_annotations": [ 314 "@@@STEP_LOG_LINE@python.inline@@@@", 315 "@@@STEP_LOG_LINE@python.inline@import os@@@", 316 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 317 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 318 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 319 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@", 320 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 321 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 322 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 323 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 324 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 325 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 326 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 327 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 328 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 329 "@@@STEP_LOG_END@python.inline@@@" 330 ] 331 }, 332 { 333 "cmd": [ 334 "/usr/bin/adb.1.0.35", 335 "kill-server" 336 ], 337 "cwd": "[START_DIR]/skia", 338 "env": { 339 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 340 "CHROME_HEADLESS": "1", 341 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 342 }, 343 "infra_step": true, 344 "name": "kill adb server" 345 }, 346 { 347 "name": "$result" 348 } 349]