[
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
      "--spec",
      "cache_dir = '[GIT_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}, {'custom_deps': {'src/chrome/test/data/firefox2_profile/searchplugins': None, 'src/chrome/test/data/firefox2_searchplugins': None, 'src/chrome/test/data/firefox3_profile/searchplugins': None, 'src/chrome/test/data/firefox3_searchplugins': None, 'src/chrome/test/data/osdd': None, 'src/chrome/test/data/perf/frame_rate/private': None, 'src/chrome/test/data/plugin': None, 'src/chrome/test/data/ssl/certs': None, 'src/data/autodiscovery': None, 'src/data/esctf': None, 'src/data/mach_ports': None, 'src/data/memory_test': None, 'src/data/mozilla_js_tests': None, 'src/data/selenium_core': None, 'src/data/tab_switching': None, 'src/tools/grit/grit/test/data': None, 'src/webkit/data/bmp_decoder': None, 'src/webkit/data/ico_decoder': None, 'src/webkit/data/test_shell/plugins': None, 'src/webkit/data/xbm_decoder': None}, 'deps_file': '.DEPS.git', 'managed': False, 'name': 'src-internal', 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git'}]\ntarget_os = ['android']",
      "--patch_root",
      "src",
      "--revision_mapping_file",
      "{\"src\": \"got_revision\", \"src/buildtools\": \"got_buildtools_revision\", \"src/native_client\": \"got_nacl_revision\", \"src/third_party/angle\": \"got_angle_revision\", \"src/third_party/webrtc\": \"got_webrtc_revision\", \"src/tools/swarming_client\": \"got_swarming_client_revision\", \"src/v8\": \"got_v8_revision\"}",
      "--git-cache-dir",
      "[GIT_CACHE]",
      "--output_json",
      "/path/to/tmp/json",
      "--revision",
      "src@deadbeef",
      "--output_manifest"
    ],
    "env": {
      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]"
    },
    "name": "bot_update",
    "~followup_annotations": [
      "@@@STEP_TEXT@Some step text@@@",
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"did_run\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"fixed_revisions\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"src\": \"deadbeef\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"manifest\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"src\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/buildtools\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/buildtools.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"f0319a328b2809876916353cb994259692140934\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/native_client\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/native_client.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"d998e125e8253980d76e269b7982aeeefc1b9b50\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/third_party/angle\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/third_party/angle.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/third_party/webrtc\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/third_party/webrtc.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"0f90628433546e61d9268596da93418c623137f4\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/tools/swarming_client\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/tools/swarming_client.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"a0ee5d99f1d4b38ddaa4c759c837980b63b99566\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"src/v8\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/v8.git\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"patch_failure\": false, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"patch_root\": \"src\", @@@",
      "@@@STEP_LOG_LINE@json.output@  \"properties\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_angle_revision\": \"fac9503c46405f77757b9a728eb85b8d7bc6080c\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_angle_revision_cp\": \"refs/heads/master@{#297276}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_buildtools_revision\": \"f0319a328b2809876916353cb994259692140934\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_buildtools_revision_cp\": \"refs/heads/master@{#182578}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_nacl_revision\": \"d998e125e8253980d76e269b7982aeeefc1b9b50\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_nacl_revision_cp\": \"refs/heads/master@{#274981}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_revision\": \"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_revision_cp\": \"refs/heads/master@{#170242}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_swarming_client_revision\": \"a0ee5d99f1d4b38ddaa4c759c837980b63b99566\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_swarming_client_revision_cp\": \"refs/heads/master@{#276089}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_v8_revision\": \"801ada225ddc271c132c3a35f03975671d43e399\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_v8_revision_cp\": \"refs/heads/master@{#43426}\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_webrtc_revision\": \"0f90628433546e61d9268596da93418c623137f4\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"got_webrtc_revision_cp\": \"refs/heads/master@{#120644}\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"root\": \"src\", @@@",
      "@@@STEP_LOG_LINE@json.output@  \"step_text\": \"Some step text\"@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@SET_BUILD_PROPERTY@got_nacl_revision@\"d998e125e8253980d76e269b7982aeeefc1b9b50\"@@@",
      "@@@SET_BUILD_PROPERTY@got_swarming_client_revision@\"a0ee5d99f1d4b38ddaa4c759c837980b63b99566\"@@@",
      "@@@SET_BUILD_PROPERTY@got_buildtools_revision_cp@\"refs/heads/master@{#182578}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_webrtc_revision@\"0f90628433546e61d9268596da93418c623137f4\"@@@",
      "@@@SET_BUILD_PROPERTY@got_revision@\"f27fede2220bcd326aee3e86ddfd4ebd0fe58cb9\"@@@",
      "@@@SET_BUILD_PROPERTY@got_nacl_revision_cp@\"refs/heads/master@{#274981}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_angle_revision@\"fac9503c46405f77757b9a728eb85b8d7bc6080c\"@@@",
      "@@@SET_BUILD_PROPERTY@got_v8_revision@\"801ada225ddc271c132c3a35f03975671d43e399\"@@@",
      "@@@SET_BUILD_PROPERTY@got_v8_revision_cp@\"refs/heads/master@{#43426}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_swarming_client_revision_cp@\"refs/heads/master@{#276089}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_webrtc_revision_cp@\"refs/heads/master@{#120644}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#170242}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_angle_revision_cp@\"refs/heads/master@{#297276}\"@@@",
      "@@@SET_BUILD_PROPERTY@got_buildtools_revision@\"f0319a328b2809876916353cb994259692140934\"@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
      "[START_DIR]/src/testing/buildbot/chromium.perf.json",
      "/path/to/tmp/json"
    ],
    "name": "read test spec (chromium.perf.json)",
    "~followup_annotations": [
      "@@@STEP_TEXT@path: [START_DIR]/src/testing/buildbot/chromium.perf.json@@@",
      "@@@STEP_LOG_LINE@json.output@{}@@@",
      "@@@STEP_LOG_END@json.output@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "[START_DIR]/src/testing/scripts/get_compile_targets.py",
      "--output",
      "/path/to/tmp/json",
      "--",
      "--build-config-fs",
      "Release",
      "--paths",
      "{\"checkout\": \"[START_DIR]/src\", \"runit.py\": \"RECIPE_PACKAGE_REPO[build]/scripts/tools/runit.py\", \"runtest.py\": \"RECIPE_PACKAGE_REPO[build]/scripts/slave/runtest.py\"}",
      "--properties",
      "{\"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"perf-id\": \"android-nexus5\", \"results-url\": \"https://chromeperf.appspot.com\", \"slavename\": \"slavename\", \"target_platform\": \"android\"}"
    ],
    "name": "get compile targets for scripts",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{}@@@",
      "@@@STEP_LOG_END@json.output@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport shutil, sys, os\nshutil.rmtree(sys.argv[1], True)\nshutil.rmtree(sys.argv[2], True)\ntry:\n  os.remove(sys.argv[3])\nexcept OSError:\n  pass\nfor base, _dirs, files in os.walk(sys.argv[4]):\n  for f in files:\n    if f.endswith('.pyc'):\n      os.remove(os.path.join(base, f))\n",
      "[SLAVE_BUILD]/src/out/Release/debug_info_dumps",
      "[SLAVE_BUILD]/src/out/Release/test_logs",
      "[SLAVE_BUILD]/src/out/build_product.zip",
      "[SLAVE_BUILD]/src"
    ],
    "name": "clean local files",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import shutil, sys, os@@@",
      "@@@STEP_LOG_LINE@python.inline@shutil.rmtree(sys.argv[1], True)@@@",
      "@@@STEP_LOG_LINE@python.inline@shutil.rmtree(sys.argv[2], True)@@@",
      "@@@STEP_LOG_LINE@python.inline@try:@@@",
      "@@@STEP_LOG_LINE@python.inline@  os.remove(sys.argv[3])@@@",
      "@@@STEP_LOG_LINE@python.inline@except OSError:@@@",
      "@@@STEP_LOG_LINE@python.inline@  pass@@@",
      "@@@STEP_LOG_LINE@python.inline@for base, _dirs, files in os.walk(sys.argv[4]):@@@",
      "@@@STEP_LOG_LINE@python.inline@  for f in files:@@@",
      "@@@STEP_LOG_LINE@python.inline@    if f.endswith('.pyc'):@@@",
      "@@@STEP_LOG_LINE@python.inline@      os.remove(os.path.join(base, f))@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport sys\nsys.path.append(sys.argv[1])\nfrom devil import devil_env\ndevil_env.config.Initialize()\ndevil_env.config.PrefetchPaths(dependencies=['adb'])\n",
      "[SLAVE_BUILD]/src/third_party/catapult/devil"
    ],
    "name": "initialize devil",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
      "@@@STEP_LOG_LINE@python.inline@sys.path.append(sys.argv[1])@@@",
      "@@@STEP_LOG_LINE@python.inline@from devil import devil_env@@@",
      "@@@STEP_LOG_LINE@python.inline@devil_env.config.Initialize()@@@",
      "@@@STEP_LOG_LINE@python.inline@devil_env.config.PrefetchPaths(dependencies=['adb'])@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[build::gsutil]/resources/gsutil_wrapper.py",
      "--",
      "RECIPE_PACKAGE_REPO[depot_tools]/gsutil.py",
      "--force-version",
      "4.7",
      "----",
      "cp",
      "gs://chrome-perf/Android Builder/full-build-linux_deadbeef.zip",
      "[SLAVE_BUILD]/src/out/build_product.zip"
    ],
    "name": "gsutil download_build_product"
  },
  {
    "cmd": [
      "unzip",
      "-o",
      "[SLAVE_BUILD]/src/out/build_product.zip"
    ],
    "cwd": "[SLAVE_BUILD]/src",
    "name": "unzip_build_product"
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/build/symlink.py",
      "-f",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "~/adb"
    ],
    "name": "create adb symlink"
  },
  {
    "cmd": [
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/daemonizer.py",
      "--",
      "[SLAVE_BUILD]/src/build/android/adb_logcat_monitor.py",
      "[SLAVE_BUILD]/src/out/logcat",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "spawn_logcat_monitor"
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/daemonizer.py",
      "--action",
      "restart",
      "--pid-file-path",
      "/tmp/device_monitor.pid",
      "--",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/devil/android/tools/device_monitor.py",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json"
    ],
    "name": "spawn_device_monitor"
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/android/authorize_adb_devices.py",
      "--verbose",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "authorize_adb_devices"
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/third_party/catapult/devil/devil/android/tools/device_recovery.py",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--known-devices-file",
      "[HOME]/.android/known_devices.json",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "-v",
      "--enable-usb-reset"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "device_recovery"
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/build/android/provision_devices.py",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--output-device-blacklist",
      "/path/to/tmp/json",
      "-t",
      "Release",
      "--min-battery-level",
      "95",
      "--disable-network",
      "--disable-java-debug",
      "--max-battery-temp",
      "350"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "provision_devices"
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/third_party/catapult/devil/devil/android/tools/device_status.py",
      "--json-output",
      "/path/to/tmp/json",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--known-devices-file",
      "[HOME]/.android/known_devices.json",
      "--buildbot-path",
      "/home/chrome-bot/.adb_device_info",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "-v",
      "--overwrite-known-devices-files"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "device_status",
    "~followup_annotations": [
      "@@@STEP_TEXT@Online devices: 1@@@",
      "@@@STEP_LOG_LINE@json.output@[@@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"adb_status\": \"device\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"battery\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"AC powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"USB powered\": \"true\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"Wireless powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"health\": \"2\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"level\": \"100\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"present\": \"true\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"scale\": \"100\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"status\": \"5\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"technology\": \"Li-ion\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"temperature\": \"249\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"voltage\": \"4286\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blacklisted\": false, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"build_detail\": \"google/razor/flo:5.0/LRX21O/1570415:userdebug/dev-keys\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"imei_slice\": \"Unknown\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"ro.build.id\": \"LRX21O\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"ro.build.product\": \"product_name\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"serial\": \"07a00ca4\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"usb_status\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"wifi_ip\": \"\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"adb_status\": \"offline\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"serial\": \"03e0363a003c6ad4\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"usb_status\": false@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"adb_status\": \"unauthorized\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"serial\": \"03e0363a003c6ad5\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"usb_status\": true@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"adb_status\": \"device\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"serial\": \"03e0363a003c6ad6\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"usb_status\": true@@@",
      "@@@STEP_LOG_LINE@json.output@  }@@@",
      "@@@STEP_LOG_LINE@json.output@]@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@{@@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"adb_status\": \"device\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"battery\": {@@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"AC powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"USB powered\": \"true\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"Wireless powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"health\": \"2\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"level\": \"100\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"present\": \"true\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"scale\": \"100\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"status\": \"5\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"technology\": \"Li-ion\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"temperature\": \"249\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@    \"voltage\": \"4286\"@@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  }, @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"blacklisted\": false, @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"build_detail\": \"google/razor/flo:5.0/LRX21O/1570415:userdebug/dev-keys\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"imei_slice\": \"Unknown\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"ro.build.id\": \"LRX21O\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"ro.build.product\": \"product_name\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"serial\": \"07a00ca4\", @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"usb_status\": true, @@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@  \"wifi_ip\": \"\"@@@",
      "@@@STEP_LOG_LINE@product_name LRX21O 07a00ca4@}@@@",
      "@@@STEP_LOG_END@product_name LRX21O 07a00ca4@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@{@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@  \"adb_status\": \"offline\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@  \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@  \"serial\": \"03e0363a003c6ad4\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@  \"usb_status\": false@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad4: missing@}@@@",
      "@@@STEP_LOG_END@03e0363a003c6ad4: missing@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@{@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@  \"adb_status\": \"unauthorized\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@  \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@  \"serial\": \"03e0363a003c6ad5\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@  \"usb_status\": true@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad5: adb status unauthorized@}@@@",
      "@@@STEP_LOG_END@03e0363a003c6ad5: adb status unauthorized@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@{@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@  \"adb_status\": \"device\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@  \"blacklisted\": true, @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@  \"serial\": \"03e0363a003c6ad6\", @@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@  \"usb_status\": true@@@",
      "@@@STEP_LOG_LINE@03e0363a003c6ad6: blacklisted@}@@@",
      "@@@STEP_LOG_END@03e0363a003c6ad6: blacklisted@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
      "[SLAVE_BUILD]/src/chrome/VERSION",
      "/path/to/tmp/"
    ],
    "name": "get version"
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/build/android/adb_install_apk.py",
      "ChromePublic.apk",
      "-v",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "--release"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "install ChromePublic.apk"
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/testing/scripts/host_info.py",
      "--build-config-fs",
      "Release",
      "--paths",
      "{\"checkout\": \"[SLAVE_BUILD]/src\", \"runit.py\": \"RECIPE_PACKAGE_REPO[build]/scripts/tools/runit.py\", \"runtest.py\": \"RECIPE_PACKAGE_REPO[build]/scripts/slave/runtest.py\"}",
      "--properties",
      "{\"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"perf-id\": \"android-nexus5\", \"results-url\": \"https://chromeperf.appspot.com\", \"slavename\": \"slavename\", \"target_platform\": \"android\"}",
      "--args",
      "[\"--known-devices-file\", \"[HOME]/.android/known_devices.json\"]",
      "run",
      "--output",
      "/path/to/tmp/json"
    ],
    "env": {
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "Host Info",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"_host_info\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"devices\": [@@@",
      "@@@STEP_LOG_LINE@json.output@      {@@@",
      "@@@STEP_LOG_LINE@json.output@        \"adb_status\": \"device\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"battery\": {@@@",
      "@@@STEP_LOG_LINE@json.output@          \"AC powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"Max charging current\": \"500000\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"USB powered\": \"true\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"Wireless powered\": \"false\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"health\": \"2\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"level\": \"100\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"present\": \"true\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"scale\": \"100\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"status\": \"5\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"technology\": \"Li-ion\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"temperature\": \"240\", @@@",
      "@@@STEP_LOG_LINE@json.output@          \"voltage\": \"4302\"@@@",
      "@@@STEP_LOG_LINE@json.output@        }, @@@",
      "@@@STEP_LOG_LINE@json.output@        \"blacklisted\": null, @@@",
      "@@@STEP_LOG_LINE@json.output@        \"imei_slice\": \"\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"ro.build.fingerprint\": \"fingerprint\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"ro.build.id\": \"MDB08Q\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"ro.build.product\": \"bullhead\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"serial\": \"00d0d567893340f4\", @@@",
      "@@@STEP_LOG_LINE@json.output@        \"usb_status\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@        \"wifi_ip\": \"\"@@@",
      "@@@STEP_LOG_LINE@json.output@      }@@@",
      "@@@STEP_LOG_LINE@json.output@    ], @@@",
      "@@@STEP_LOG_LINE@json.output@    \"free_disk_space\": \"free_disk_space\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"num_cpus\": \"num_cpus\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"os_release\": \"os_release\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"os_system\": \"os_system\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"processor\": \"processor\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"python_path\": \"python_path\", @@@",
      "@@@STEP_LOG_LINE@json.output@    \"python_version\": \"python_version\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"failures\": [], @@@",
      "@@@STEP_LOG_LINE@json.output@  \"valid\": true@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/tools/perf/run_benchmark",
      "list",
      "--browser",
      "android-chromium",
      "--json-output",
      "/path/to/tmp/json",
      "--num-shards",
      "21",
      "--device",
      "07a00ca4"
    ],
    "name": "List Perf Tests",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@{@@@",
      "@@@STEP_LOG_LINE@json.output@  \"steps\": {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"blink_perf.all.exact\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"device_affinity\": 1, @@@",
      "@@@STEP_LOG_LINE@json.output@      \"perf_dashboard_id\": \"blink_perf.all\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blink_perf.all.release\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"device_affinity\": 0, @@@",
      "@@@STEP_LOG_LINE@json.output@      \"perf_dashboard_id\": \"blink_perf.all\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"blink_perf.dom\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"cmd\": \"/path/to/run_benchmark -v --upload-results blink_perf.dom\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"device_affinity\": 1, @@@",
      "@@@STEP_LOG_LINE@json.output@      \"perf_dashboard_id\": \"blink_perf.dom\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"dromaeo.cssqueryjquery\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"cmd\": \"/path/to/run_benchmark\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"device_affinity\": 13@@@",
      "@@@STEP_LOG_LINE@json.output@    }, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"dromaeo.cssqueryjquery.release\": {@@@",
      "@@@STEP_LOG_LINE@json.output@      \"cmd\": \"/path/to/run_benchmark\", @@@",
      "@@@STEP_LOG_LINE@json.output@      \"device_affinity\": 11, @@@",
      "@@@STEP_LOG_LINE@json.output@      \"perf_dashboard_id\": \"dromaeo.cssqueryjquery\"@@@",
      "@@@STEP_LOG_LINE@json.output@    }@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  \"version\": 2@@@",
      "@@@STEP_LOG_LINE@json.output@}@@@",
      "@@@STEP_LOG_END@json.output@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/build/android/test_runner.py",
      "perf",
      "--release",
      "--verbose",
      "--steps",
      "{\"steps\": {\"blink_perf.all.exact\": {\"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", \"device_affinity\": 1, \"perf_dashboard_id\": \"blink_perf.all\"}, \"blink_perf.all.release\": {\"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", \"device_affinity\": 0, \"perf_dashboard_id\": \"blink_perf.all\"}, \"blink_perf.dom\": {\"cmd\": \"/path/to/run_benchmark -v --upload-results blink_perf.dom\", \"device_affinity\": 1, \"perf_dashboard_id\": \"blink_perf.dom\"}}, \"version\": 2}",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--num-retries",
      "0",
      "--collect-chartjson-data",
      "--max-battery-temp",
      "350",
      "--known-devices-file",
      "[HOME]/.android/known_devices.json",
      "--enable-platform-mode",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb"
    ],
    "cwd": "[SLAVE_BUILD]/src",
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "Sharded Perf Tests"
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/build/android/test_runner.py",
      "perf",
      "--steps",
      "{\"steps\": {\"blink_perf.all.exact\": {\"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", \"device_affinity\": 1, \"perf_dashboard_id\": \"blink_perf.all\"}, \"blink_perf.all.release\": {\"cmd\": \"/usr/bin/python /path/to/run_benchmark --a=1 -v --b=2\", \"device_affinity\": 0, \"perf_dashboard_id\": \"blink_perf.all\"}, \"blink_perf.dom\": {\"cmd\": \"/path/to/run_benchmark -v --upload-results blink_perf.dom\", \"device_affinity\": 1, \"perf_dashboard_id\": \"blink_perf.dom\"}}, \"version\": 2}",
      "--output-json-list",
      "/path/to/tmp/json",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb"
    ],
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "get perf test list",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@json.output@[@@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"device_affinity\": 0, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"end_time\": 1443438432.949711, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"has_archive\": true, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"test\": \"perf_test.foo\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }, @@@",
      "@@@STEP_LOG_LINE@json.output@  {@@@",
      "@@@STEP_LOG_LINE@json.output@    \"device_affinity\": 0, @@@",
      "@@@STEP_LOG_LINE@json.output@    \"test\": \"page_cycler.foo\"@@@",
      "@@@STEP_LOG_LINE@json.output@  }@@@",
      "@@@STEP_LOG_LINE@json.output@]@@@",
      "@@@STEP_LOG_END@json.output@@@"
    ]
  },
  {
    "allow_subannotations": true,
    "cmd": [
      "python",
      "-u",
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/runtest.py",
      "--target",
      "Release",
      "--test-platform",
      "android",
      "--no-xvfb",
      "--factory-properties",
      "{\"blamelist\": [\"cool_dev1337@chromium.org\", \"hax@chromium.org\"], \"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"parent_buildername\": \"parent_buildername\", \"parent_buildnumber\": \"1729\", \"parent_revision\": \"deadbeef\", \"path_config\": \"kitchen\", \"recipe\": \"android/perf\", \"repo_name\": \"src\", \"repo_url\": \"https://chromium.googlesource.com/chromium/src.git\", \"revision\": \"deadbeef\", \"slavename\": \"slavename\", \"target\": \"Release\", \"workdir\": \"/path/to/workdir/TestSlavename\"}",
      "--build-properties",
      "{\"blamelist\": [\"cool_dev1337@chromium.org\", \"hax@chromium.org\"], \"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"parent_buildername\": \"parent_buildername\", \"parent_buildnumber\": \"1729\", \"parent_revision\": \"deadbeef\", \"path_config\": \"kitchen\", \"recipe\": \"android/perf\", \"repo_name\": \"src\", \"repo_url\": \"https://chromium.googlesource.com/chromium/src.git\", \"revision\": \"deadbeef\", \"slavename\": \"slavename\", \"target\": \"Release\", \"workdir\": \"/path/to/workdir/TestSlavename\"}",
      "--annotate=graphing",
      "--results-url=https://chromeperf.appspot.com",
      "--perf-dashboard-id=page_cycler.foo",
      "--perf-id=android-nexus5",
      "--test-type=page_cycler.foo",
      "--step-name=page_cycler.foo",
      "--chartjson-file",
      "/path/to/tmp/json",
      "--builder-name=Android Nexus5 Perf (1)",
      "--slave-name=slavename",
      "--build-number=571",
      "--run-python-script",
      "[SLAVE_BUILD]/src/build/android/test_runner.py",
      "perf",
      "--print-step",
      "page_cycler.foo",
      "--verbose",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--enable-platform-mode"
    ],
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "page_cycler.foo",
    "~followup_annotations": [
      "@@@STEP_TEXT@<br/>Device Affinity: 0<br/>@@@",
      "@@@STEP_LOG_LINE@json.output@[]@@@",
      "@@@STEP_LOG_END@json.output@@@",
      "@@@STEP_LOG_LINE@device affinity@0@@@",
      "@@@STEP_LOG_END@device affinity@@@"
    ]
  },
  {
    "allow_subannotations": true,
    "cmd": [
      "python",
      "-u",
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/runtest.py",
      "--target",
      "Release",
      "--test-platform",
      "android",
      "--no-xvfb",
      "--factory-properties",
      "{\"blamelist\": [\"cool_dev1337@chromium.org\", \"hax@chromium.org\"], \"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"parent_buildername\": \"parent_buildername\", \"parent_buildnumber\": \"1729\", \"parent_revision\": \"deadbeef\", \"path_config\": \"kitchen\", \"recipe\": \"android/perf\", \"repo_name\": \"src\", \"repo_url\": \"https://chromium.googlesource.com/chromium/src.git\", \"revision\": \"deadbeef\", \"slavename\": \"slavename\", \"target\": \"Release\", \"workdir\": \"/path/to/workdir/TestSlavename\"}",
      "--build-properties",
      "{\"blamelist\": [\"cool_dev1337@chromium.org\", \"hax@chromium.org\"], \"buildername\": \"Android Nexus5 Perf (1)\", \"buildnumber\": 571, \"mastername\": \"chromium.perf\", \"parent_buildername\": \"parent_buildername\", \"parent_buildnumber\": \"1729\", \"parent_revision\": \"deadbeef\", \"path_config\": \"kitchen\", \"recipe\": \"android/perf\", \"repo_name\": \"src\", \"repo_url\": \"https://chromium.googlesource.com/chromium/src.git\", \"revision\": \"deadbeef\", \"slavename\": \"slavename\", \"target\": \"Release\", \"workdir\": \"/path/to/workdir/TestSlavename\"}",
      "--annotate=graphing",
      "--results-url=https://chromeperf.appspot.com",
      "--perf-dashboard-id=perf_test.foo",
      "--perf-id=android-nexus5",
      "--test-type=perf_test.foo",
      "--step-name=perf_test.foo",
      "--chartjson-file",
      "/path/to/tmp/json",
      "--builder-name=Android Nexus5 Perf (1)",
      "--slave-name=slavename",
      "--build-number=571",
      "--run-python-script",
      "[SLAVE_BUILD]/src/build/android/test_runner.py",
      "perf",
      "--print-step",
      "perf_test.foo",
      "--verbose",
      "--adb-path",
      "[SLAVE_BUILD]/src/third_party/catapult/devil/bin/deps/linux2/x86_64/bin/adb",
      "--blacklist-file",
      "[SLAVE_BUILD]/src/out/bad_devices.json",
      "--enable-platform-mode"
    ],
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "perf_test.foo",
    "~followup_annotations": [
      "step returned non-zero exit code: 1",
      "@@@STEP_TEXT@<br/>Device Affinity: 0<br/>@@@",
      "@@@STEP_LOG_LINE@json.output (invalid)@null@@@",
      "@@@STEP_LOG_END@json.output (invalid)@@@",
      "@@@STEP_LOG_LINE@device affinity@0@@@",
      "@@@STEP_LOG_END@device affinity@@@",
      "@@@STEP_FAILURE@@@"
    ]
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_PACKAGE_REPO[build]/scripts/slave/daemonizer.py",
      "--action",
      "stop",
      "--pid-file-path",
      "/tmp/device_monitor.pid"
    ],
    "name": "shutdown_device_monitor"
  },
  {
    "cmd": [
      "python",
      "-u",
      "[SLAVE_BUILD]/src/build/android/adb_logcat_printer.py",
      "--output-path",
      "[SLAVE_BUILD]/src/out/Release/full_log",
      "[SLAVE_BUILD]/src/out/logcat"
    ],
    "name": "logcat_dump"
  },
  {
    "cmd": [
      "python",
      "-u",
      "RECIPE_MODULE[build::gsutil]/resources/gsutil_wrapper.py",
      "--",
      "RECIPE_PACKAGE_REPO[depot_tools]/gsutil.py",
      "--force-version",
      "4.7",
      "-o",
      "GSUtil:parallel_composite_upload_threshold=50M",
      "----",
      "cp",
      "[SLAVE_BUILD]/src/out/Release/full_log",
      "gs://chromium-android/logcat_dumps/Android Nexus5 Perf (1)/571"
    ],
    "name": "gsutil upload",
    "~followup_annotations": [
      "@@@STEP_LINK@logcat dump@https://storage.cloud.google.com/chromium-android/logcat_dumps/Android Nexus5 Perf (1)/571@@@"
    ]
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/third_party/android_platform/development/scripts/stack",
      "--arch",
      "arm",
      "--more-info",
      "[SLAVE_BUILD]/src/out/Release/full_log"
    ],
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "stack_tool_with_logcat_dump"
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
      "[SLAVE_BUILD]/src/chrome/VERSION",
      "/path/to/tmp/"
    ],
    "name": "get version (2)"
  },
  {
    "cmd": [
      "[SLAVE_BUILD]/src/build/android/tombstones.py",
      "-a",
      "-s",
      "-w"
    ],
    "env": {
      "CHROMIUM_OUTPUT_DIR": "[SLAVE_BUILD]/src/out/Release",
      "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
      "PATH": "[SLAVE_BUILD]/src/third_party/android_tools/sdk/platform-tools:[SLAVE_BUILD]/src/build/android:%(PATH)s"
    },
    "name": "stack_tool_for_tombstones"
  },
  {
    "cmd": [
      "python",
      "-u",
      "\nimport glob, os, sys\nfor report in glob.glob(sys.argv[1]):\n  with open(report, 'r') as f:\n    for l in f.readlines():\n      print l\n  os.remove(report)\n",
      "[SLAVE_BUILD]/src/out/Release/test_logs/*.log"
    ],
    "name": "test_report",
    "~followup_annotations": [
      "@@@STEP_LOG_LINE@python.inline@@@@",
      "@@@STEP_LOG_LINE@python.inline@import glob, os, sys@@@",
      "@@@STEP_LOG_LINE@python.inline@for report in glob.glob(sys.argv[1]):@@@",
      "@@@STEP_LOG_LINE@python.inline@  with open(report, 'r') as f:@@@",
      "@@@STEP_LOG_LINE@python.inline@    for l in f.readlines():@@@",
      "@@@STEP_LOG_LINE@python.inline@      print l@@@",
      "@@@STEP_LOG_LINE@python.inline@  os.remove(report)@@@",
      "@@@STEP_LOG_END@python.inline@@@"
    ]
  },
  {
    "name": "$result",
    "reason": "sharded perf tests failed [StepFailure(\"Step('perf_test.foo') failed with return_code 1\",)]",
    "recipe_result": null,
    "status_code": 1
  }
]