blob: 0caebbc292ff87eb66a830f8110d479cb7db1f4b [file] [log] [blame]
[
{
"cmd": [
"python",
"-u",
"import os\nprint(os.environ.get('SWARMING_BOT_ID', ''))\n"
],
"name": "get swarming bot id",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@print(os.environ.get('SWARMING_BOT_ID', ''))@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"push",
"file.txt",
"file.txt"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "push file.txt file.txt"
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"shell",
"cat",
"file.txt"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "read file.txt"
},
{
"cmd": [
"python",
"-u",
"\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
"/opt/infra-android/tools/adb",
"file.txt"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "rm file.txt",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
"@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
"@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
"@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
"@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
"@@@STEP_LOG_LINE@python.inline@print(output)@@@",
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
"@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"rmtree",
"results_dir"
],
"infra_step": true,
"name": "rmtree results_dir"
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"results_dir"
],
"infra_step": true,
"name": "makedirs results_dir"
},
{
"cmd": [
"python",
"-u",
"\nimport subprocess\nimport sys\n\n# Remove the path.\nadb = sys.argv[1]\npath = sys.argv[2]\nprint('Removing %s' % path)\ncmd = [adb, 'shell', 'rm', '-rf', path]\nprint(' '.join(cmd))\nsubprocess.check_call(cmd)\n\n# Verify that the path was deleted.\nprint('Checking for existence of %s' % path)\ncmd = [adb, 'shell', 'ls', path]\nprint(' '.join(cmd))\ntry:\n output = subprocess.check_output(\n cmd, stderr=subprocess.STDOUT).decode('utf-8')\nexcept subprocess.CalledProcessError as e:\n output = e.output.decode('utf-8')\nprint('Output was:')\nprint('======')\nprint(output)\nprint('======')\nif 'No such file or directory' not in output:\n raise Exception('%s exists despite being deleted' % path)\n",
"/opt/infra-android/tools/adb",
"device_results_dir"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "rm device_results_dir",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@# Remove the path.@@@",
"@@@STEP_LOG_LINE@python.inline@adb = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@path = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@print('Removing %s' % path)@@@",
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'rm', '-rf', path]@@@",
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
"@@@STEP_LOG_LINE@python.inline@subprocess.check_call(cmd)@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@# Verify that the path was deleted.@@@",
"@@@STEP_LOG_LINE@python.inline@print('Checking for existence of %s' % path)@@@",
"@@@STEP_LOG_LINE@python.inline@cmd = [adb, 'shell', 'ls', path]@@@",
"@@@STEP_LOG_LINE@python.inline@print(' '.join(cmd))@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ output = subprocess.check_output(@@@",
"@@@STEP_LOG_LINE@python.inline@ cmd, stderr=subprocess.STDOUT).decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@except subprocess.CalledProcessError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ output = e.output.decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@print('Output was:')@@@",
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
"@@@STEP_LOG_LINE@python.inline@print(output)@@@",
"@@@STEP_LOG_LINE@python.inline@print('======')@@@",
"@@@STEP_LOG_LINE@python.inline@if 'No such file or directory' not in output:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise Exception('%s exists despite being deleted' % path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"shell",
"mkdir",
"-p",
"device_results_dir"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "mkdir device_results_dir"
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"shell",
"mkdir",
"-p",
"/sdcard/revenge_of_the_skiabot/resources"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources",
"~followup_annotations": [
"@@@STEP_EXCEPTION@@@"
]
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"reconnect",
"device"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "kill adb server after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)",
"timeout": 30
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"wait-for-device"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)",
"timeout": 180
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"shell",
"mkdir",
"-p",
"/sdcard/revenge_of_the_skiabot/resources"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources (attempt 2)",
"~followup_annotations": [
"@@@STEP_EXCEPTION@@@"
]
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"reconnect",
"device"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "kill adb server after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)",
"timeout": 30
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"wait-for-device"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)",
"timeout": 180
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"shell",
"mkdir",
"-p",
"/sdcard/revenge_of_the_skiabot/resources"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources (attempt 3)",
"~followup_annotations": [
"@@@STEP_EXCEPTION@@@"
]
},
{
"cmd": [
"python",
"-u",
"\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output([\n '/opt/infra-android/tools/adb', 'logcat', '-d']).decode('utf-8', errors='ignore')\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 try:\n sym = subprocess.check_output([\n 'addr2line', '-Cfpe', local, addr]).decode('utf-8')\n line = line.replace(addr, addr + ' ' + sym.strip())\n except subprocess.CalledProcessError:\n pass\n print(line)\n",
"[START_DIR]/build"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "dump log",
"timeout": 300,
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@out = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@log = subprocess.check_output([@@@",
"@@@STEP_LOG_LINE@python.inline@ '/opt/infra-android/tools/adb', 'logcat', '-d']).decode('utf-8', errors='ignore')@@@",
"@@@STEP_LOG_LINE@python.inline@for line in log.split('\\n'):@@@",
"@@@STEP_LOG_LINE@python.inline@ tokens = line.split()@@@",
"@@@STEP_LOG_LINE@python.inline@ if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
"@@@STEP_LOG_LINE@python.inline@ addr, path = tokens[-2:]@@@",
"@@@STEP_LOG_LINE@python.inline@ local = os.path.join(out, os.path.basename(path))@@@",
"@@@STEP_LOG_LINE@python.inline@ if os.path.exists(local):@@@",
"@@@STEP_LOG_LINE@python.inline@ try:@@@",
"@@@STEP_LOG_LINE@python.inline@ sym = subprocess.check_output([@@@",
"@@@STEP_LOG_LINE@python.inline@ 'addr2line', '-Cfpe', local, addr]).decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@ line = line.replace(addr, addr + ' ' + sym.strip())@@@",
"@@@STEP_LOG_LINE@python.inline@ except subprocess.CalledProcessError:@@@",
"@@@STEP_LOG_LINE@python.inline@ pass@@@",
"@@@STEP_LOG_LINE@python.inline@ print(line)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
" ",
"/home/chrome-bot/build123-m2--device5.force_quarantine"
],
"infra_step": true,
"name": "Quarantining Bot",
"~followup_annotations": [
"@@@STEP_LOG_LINE@build123-m2--device5.force_quarantine@ @@@",
"@@@STEP_LOG_END@build123-m2--device5.force_quarantine@@@"
]
},
{
"cmd": [
"/opt/infra-android/tools/adb",
"kill-server"
],
"cwd": "[START_DIR]/skia",
"env": {
"ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "kill adb server"
},
{
"failure": {
"humanReason": "Infra Failure: Step('mkdir /sdcard/revenge_of_the_skiabot/resources (attempt 3)') (retcode: 1)"
},
"name": "$result"
}
]