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 "stdout": "/path/to/tmp/", 25 "~followup_annotations": [ 26 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 27 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", 28 "@@@STEP_LOG_END (a] python.inline@@@" 29 ] 30 }, 31 { 32 "cmd": [ 33 "/usr/bin/adb.1.0.35", 34 "shell", 35 "mkdir", 36 "-p", 37 "/sdcard/revenge_of_the_skiabot/resources" 38 ], 39 "cwd": "[START_DIR]/skia", 40 "env": { 41 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 42 "CHROME_HEADLESS": "1", 43 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 44 }, 45 "infra_step": true, 46 "name": "mkdir /sdcard/revenge_of_the_skiabot/resources" 47 }, 48 { 49 "cmd": [ 50 "python", 51 "-u", 52 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 53 "--json-output", 54 "/path/to/tmp/json", 55 "copy", 56 "[START_DIR]/skia/infra/bots/assets/skp/VERSION", 57 "/path/to/tmp/" 58 ], 59 "infra_step": true, 60 "name": "Get skp VERSION" 61 }, 62 { 63 "cmd": [ 64 "python", 65 "-u", 66 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 67 "--json-output", 68 "/path/to/tmp/json", 69 "copy", 70 "42", 71 "[START_DIR]/tmp/SKP_VERSION" 72 ], 73 "infra_step": true, 74 "name": "write SKP_VERSION" 75 }, 76 { 77 "cmd": [ 78 "/usr/bin/adb.1.0.35", 79 "shell", 80 "cat", 81 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 82 ], 83 "cwd": "[START_DIR]/skia", 84 "env": { 85 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 86 "CHROME_HEADLESS": "1", 87 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 88 }, 89 "infra_step": true, 90 "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION", 91 "stdout": "/path/to/tmp/" 92 }, 93 { 94 "cmd": [ 95 "/usr/bin/adb.1.0.35", 96 "shell", 97 "rm", 98 "-f", 99 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 100 ], 101 "cwd": "[START_DIR]/skia", 102 "env": { 103 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 104 "CHROME_HEADLESS": "1", 105 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 106 }, 107 "infra_step": true, 108 "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION" 109 }, 110 { 111 "cmd": [ 112 "/usr/bin/adb.1.0.35", 113 "shell", 114 "rm", 115 "-rf", 116 "/sdcard/revenge_of_the_skiabot/skps" 117 ], 118 "cwd": "[START_DIR]/skia", 119 "env": { 120 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 121 "CHROME_HEADLESS": "1", 122 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 123 }, 124 "infra_step": true, 125 "name": "rm /sdcard/revenge_of_the_skiabot/skps" 126 }, 127 { 128 "cmd": [ 129 "/usr/bin/adb.1.0.35", 130 "shell", 131 "mkdir", 132 "-p", 133 "/sdcard/revenge_of_the_skiabot/skps" 134 ], 135 "cwd": "[START_DIR]/skia", 136 "env": { 137 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 138 "CHROME_HEADLESS": "1", 139 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 140 }, 141 "infra_step": true, 142 "name": "mkdir /sdcard/revenge_of_the_skiabot/skps" 143 }, 144 { 145 "cmd": [ 146 "python", 147 "-u", 148 "\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", 149 "[START_DIR]/skp", 150 "/sdcard/revenge_of_the_skiabot/skps" 151 ], 152 "env": { 153 "CHROME_HEADLESS": "1", 154 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 155 }, 156 "infra_step": true, 157 "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps", 158 "~followup_annotations": [ 159 "@@@STEP_LOG_LINE (a] python.inline@@@@", 160 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 161 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 162 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 163 "@@@STEP_LOG_LINE (a] python.inline@host = sys.argv[1]@@@", 164 "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@", 165 "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@", 166 "@@@STEP_LOG_LINE (a] python.inline@ p = os.path.relpath(d, host)@@@", 167 "@@@STEP_LOG_LINE (a] python.inline@ if p != '.' and p.startswith('.'):@@@", 168 "@@@STEP_LOG_LINE (a] python.inline@ continue@@@", 169 "@@@STEP_LOG_LINE (a] python.inline@ for f in fs:@@@", 170 "@@@STEP_LOG_LINE (a] python.inline@ print os.path.join(p,f)@@@", 171 "@@@STEP_LOG_LINE (a] python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@", 172 "@@@STEP_LOG_LINE (a] python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 173 "@@@STEP_LOG_LINE (a] python.inline@ os.path.join(device, p, f)])@@@", 174 "@@@STEP_LOG_END (a] python.inline@@@" 175 ] 176 }, 177 { 178 "cmd": [ 179 "/usr/bin/adb.1.0.35", 180 "push", 181 "[START_DIR]/tmp/SKP_VERSION", 182 "/sdcard/revenge_of_the_skiabot/SKP_VERSION" 183 ], 184 "cwd": "[START_DIR]/skia", 185 "env": { 186 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey", 187 "CHROME_HEADLESS": "1", 188 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 189 }, 190 "infra_step": true, 191 "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION" 192 }, 193 { 194 "cmd": [ 195 "python", 196 "-u", 197 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 198 "--json-output", 199 "/path/to/tmp/json", 200 "ensure-directory", 201 "--mode", 202 "0777", 203 "[START_DIR]/[SWARM_OUT_DIR]" 204 ], 205 "infra_step": true, 206 "name": "makedirs perf_dir" 207 }, 208 { 209 "cmd": [ 210 "adb.1.0.35", 211 "push", 212 "[START_DIR]/build/skpbench", 213 "/data/local/tmp/" 214 ], 215 "cwd": "[START_DIR]/skia", 216 "env": { 217 "CHROME_HEADLESS": "1", 218 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 219 }, 220 "infra_step": true, 221 "name": "push skpbench" 222 }, 223 { 224 "cmd": [ 225 "python", 226 "-u", 227 "[START_DIR]/skia/tools/skpbench/skpbench.py", 228 "/data/local/tmp/skpbench", 229 "--resultsfile", 230 "[START_DIR]/[SWARM_OUT_DIR]/table", 231 "--config", 232 "vk", 233 "-v5", 234 "--adb", 235 "--adb_binary", 236 "adb.1.0.35", 237 "/sdcard/revenge_of_the_skiabot/skps" 238 ], 239 "env": { 240 "CHROME_HEADLESS": "1", 241 "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]" 242 }, 243 "name": "skpbench" 244 }, 245 { 246 "cmd": [ 247 "python", 248 "-u", 249 "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" 250 ], 251 "name": "get swarming task id", 252 "stdout": "/path/to/tmp/", 253 "~followup_annotations": [ 254 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 255 "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", 256 "@@@STEP_LOG_END (a] python.inline@@@" 257 ] 258 }, 259 { 260 "cmd": [ 261 "python", 262 "-u", 263 "[START_DIR]/skia/tools/skpbench/skiaperf.py", 264 "[START_DIR]/[SWARM_OUT_DIR]/table", 265 "--properties", 266 "gitHash", 267 "abc123", 268 "issue", 269 "456789", 270 "patchset", 271 "12", 272 "patch_storage", 273 "gerrit", 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 "Adreno540", 289 "extra_config", 290 "Android_Vulkan_Skpbench", 291 "model", 292 "Pixel2XL", 293 "os", 294 "Android", 295 "test_filter", 296 "All" 297 ], 298 "env": { 299 "CHROME_HEADLESS": "1", 300 "PATH": "<PATH>:RECIPE_PACKAGE_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_PACKAGE_REPO[depot_tools]" 314 }, 315 "infra_step": true, 316 "name": "dump log", 317 "timeout": 300, 318 "~followup_annotations": [ 319 "@@@STEP_LOG_LINE (a] python.inline@@@@", 320 "@@@STEP_LOG_LINE (a] python.inline@import os@@@", 321 "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@", 322 "@@@STEP_LOG_LINE (a] python.inline@import sys@@@", 323 "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@", 324 "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['/usr/bin/adb.1.0.35', 'logcat', '-d'])@@@", 325 "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@", 326 "@@@STEP_LOG_LINE (a] python.inline@ tokens = line.split()@@@", 327 "@@@STEP_LOG_LINE (a] python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 328 "@@@STEP_LOG_LINE (a] python.inline@ addr, path = tokens[-2:]@@@", 329 "@@@STEP_LOG_LINE (a] python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 330 "@@@STEP_LOG_LINE (a] python.inline@ if os.path.exists(local):@@@", 331 "@@@STEP_LOG_LINE (a] python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 332 "@@@STEP_LOG_LINE (a] python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 333 "@@@STEP_LOG_LINE (a] python.inline@ print line@@@", 334 "@@@STEP_LOG_END (a] 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_PACKAGE_REPO[depot_tools]" 347 }, 348 "infra_step": true, 349 "name": "kill adb server" 350 }, 351 { 352 "jsonResult": null, 353 "name": "$result" 354 } 355 ]