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 "vk", 235 "-v5", 236 "--adb", 237 "--adb_binary", 238 "adb.1.0.35", 239 "/sdcard/revenge_of_the_skiabot/skps" 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 "issue", 270 "456789", 271 "patchset", 272 "12", 273 "patch_storage", 274 "gerrit", 275 "swarming_bot_id", 276 "skia-bot-123", 277 "swarming_task_id", 278 "123456", 279 "--outfile", 280 "[START_DIR]/[SWARM_OUT_DIR]/skpbench_abc123_1337000001.json", 281 "--key", 282 "arch", 283 "arm64", 284 "compiler", 285 "Clang", 286 "cpu_or_gpu", 287 "GPU", 288 "cpu_or_gpu_value", 289 "Adreno540", 290 "extra_config", 291 "Android_Vulkan_Skpbench", 292 "model", 293 "Pixel2XL", 294 "os", 295 "Android", 296 "test_filter", 297 "All" 298 ], 299 "env": { 300 "CHROME_HEADLESS": "1", 301 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 302 }, 303 "name": "Parse skpbench output into Perf json" 304 }, 305 { 306 "cmd": [ 307 "python", 308 "-u", 309 "\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", 310 "[START_DIR]/build" 311 ], 312 "env": { 313 "CHROME_HEADLESS": "1", 314 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 315 }, 316 "infra_step": true, 317 "name": "dump log", 318 "timeout": 300, 319 "~followup_annotations": [ 320 "@@@STEP_LOG_LINE@python.inline@@@@", 321 "@@@STEP_LOG_LINE@python.inline@import os@@@", 322 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 323 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 324 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 325 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@", 326 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 327 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 328 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 329 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 330 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 331 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 332 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 333 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 334 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 335 "@@@STEP_LOG_END@python.inline@@@" 336 ] 337 }, 338 { 339 "cmd": [ 340 "/usr/bin/adb.1.0.35", 341 "kill-server" 342 ], 343 "cwd": "[START_DIR]/skia", 344 "env": { 345 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 346 "CHROME_HEADLESS": "1", 347 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 348 }, 349 "infra_step": true, 350 "name": "kill adb server" 351 }, 352 { 353 "name": "$result" 354 } 355]