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 "/opt/infra-android/tools/adb", 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/chrome_infrastructure_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\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(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n", 52 "[START_DIR]/skia/resources", 53 "/sdcard/revenge_of_the_skiabot/resources" 54 ], 55 "env": { 56 "CHROME_HEADLESS": "1", 57 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 58 }, 59 "infra_step": true, 60 "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources", 61 "~followup_annotations": [ 62 "@@@STEP_LOG_LINE@python.inline@@@@", 63 "@@@STEP_LOG_LINE@python.inline@import os@@@", 64 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 65 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 66 "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@", 67 "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@", 68 "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@", 69 "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@", 70 "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@", 71 "@@@STEP_LOG_LINE@python.inline@ continue@@@", 72 "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@", 73 "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@", 74 "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@", 75 "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@", 76 "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@", 77 "@@@STEP_LOG_END@python.inline@@@", 78 "@@@STEP_EXCEPTION@@@" 79 ] 80 }, 81 { 82 "cmd": [ 83 "python", 84 "-u", 85 "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['/opt/infra-android/tools/adb', '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", 86 "[START_DIR]/build" 87 ], 88 "env": { 89 "CHROME_HEADLESS": "1", 90 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 91 }, 92 "infra_step": true, 93 "name": "dump log", 94 "timeout": 300, 95 "~followup_annotations": [ 96 "@@@STEP_LOG_LINE@python.inline@@@@", 97 "@@@STEP_LOG_LINE@python.inline@import os@@@", 98 "@@@STEP_LOG_LINE@python.inline@import subprocess@@@", 99 "@@@STEP_LOG_LINE@python.inline@import sys@@@", 100 "@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@", 101 "@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output(['/opt/infra-android/tools/adb', 'logcat', '-d'])@@@", 102 "@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@", 103 "@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@", 104 "@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@", 105 "@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@", 106 "@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@", 107 "@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@", 108 "@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@", 109 "@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@", 110 "@@@STEP_LOG_LINE@python.inline@ print line@@@", 111 "@@@STEP_LOG_END@python.inline@@@" 112 ] 113 }, 114 { 115 "cmd": [ 116 "python", 117 "-u", 118 "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", 119 "--json-output", 120 "/path/to/tmp/json", 121 "copy", 122 " ", 123 "/home/chrome-bot/build123-m2--device5.force_quarantine" 124 ], 125 "infra_step": true, 126 "name": "Quarantining Bot", 127 "~followup_annotations": [ 128 "@@@STEP_LOG_LINE@build123-m2--device5.force_quarantine@ @@@", 129 "@@@STEP_LOG_END@build123-m2--device5.force_quarantine@@@" 130 ] 131 }, 132 { 133 "cmd": [ 134 "/opt/infra-android/tools/adb", 135 "kill-server" 136 ], 137 "cwd": "[START_DIR]/skia", 138 "env": { 139 "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", 140 "CHROME_HEADLESS": "1", 141 "PATH": "<PATH>:RECIPE_REPO[depot_tools]" 142 }, 143 "infra_step": true, 144 "name": "kill adb server" 145 }, 146 { 147 "failure": { 148 "humanReason": "Infra Failure: Step('push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources') (retcode: 1)" 149 }, 150 "name": "$result" 151 } 152]