| Index: scripts/slave/recipes/ios/try.expected/parent.json
 | 
| diff --git a/scripts/slave/recipes/ios/try.expected/parent.json b/scripts/slave/recipes/ios/try.expected/parent.json
 | 
| index fe932657ff5fe7a4d8d36064c08ef556a01eb388..24569feea213c4d751709115a0ec991c094e426e 100644
 | 
| --- a/scripts/slave/recipes/ios/try.expected/parent.json
 | 
| +++ b/scripts/slave/recipes/ios/try.expected/parent.json
 | 
| @@ -191,10 +191,9 @@
 | 
|        "@@@STEP_LOG_LINE@json.output@    \"fake gyp define 1\": \"fake value 1\", @@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@    \"fake gyp define 2\": \"fake value 2\"@@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@  }, @@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@  \"compiler\": \"xcodebuild\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"compiler\": \"ninja\", @@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@  \"configuration\": \"Debug\", @@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@  \"sdk\": \"iphonesimulator8.0\", @@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@  \"use_mb\": false, @@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@  \"xcode version\": \"fake xcode version\"@@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@}@@@",
 | 
|        "@@@STEP_LOG_END@json.output@@@"
 | 
| @@ -204,7 +203,7 @@
 | 
|      "cmd": [
 | 
|        "echo",
 | 
|        "-e",
 | 
| -      "{\n  \"GYP_DEFINES\": {\n    \"OS\": \"ios\", \n    \"component\": \"static_library\", \n    \"fake gyp define 1\": \"fake value 1\", \n    \"fake gyp define 2\": \"fake value 2\"\n  }, \n  \"additional_compile_targets\": [\n    \"All\"\n  ], \n  \"compiler\": \"xcodebuild\", \n  \"configuration\": \"Debug\", \n  \"env\": {}, \n  \"gn_args\": [], \n  \"mastername\": \"chromium.mac\", \n  \"mb_type\": null, \n  \"sdk\": \"iphonesimulator8.0\", \n  \"tests\": [\n    {\n      \"app\": \"fake tests\", \n      \"device type\": \"fake device\", \n      \"id\": \"0\", \n      \"os\": \"8.1\"\n    }\n  ], \n  \"triggered bots\": {}, \n  \"triggered by\": \"parent\", \n  \"use_analyze\": true, \n  \"xcode version\": \"fake xcode version\"\n}"
 | 
| +      "{\n  \"GYP_DEFINES\": {\n    \"OS\": \"ios\", \n    \"component\": \"static_library\", \n    \"fake gyp define 1\": \"fake value 1\", \n    \"fake gyp define 2\": \"fake value 2\"\n  }, \n  \"additional_compile_targets\": [\n    \"All\"\n  ], \n  \"compiler\": \"ninja\", \n  \"configuration\": \"Debug\", \n  \"env\": {}, \n  \"gn_args\": [], \n  \"mastername\": \"chromium.mac\", \n  \"mb_type\": null, \n  \"sdk\": \"iphonesimulator8.0\", \n  \"tests\": [\n    {\n      \"app\": \"fake tests\", \n      \"device type\": \"fake device\", \n      \"id\": \"0\", \n      \"os\": \"8.1\"\n    }\n  ], \n  \"triggered bots\": {}, \n  \"triggered by\": \"parent\", \n  \"use_analyze\": true, \n  \"xcode version\": \"fake xcode version\"\n}"
 | 
|      ],
 | 
|      "name": "finalize build config"
 | 
|    },
 | 
| @@ -231,9 +230,9 @@
 | 
|      ],
 | 
|      "cwd": "[BUILDER_CACHE]/ios/src",
 | 
|      "env": {
 | 
| +      "GYP_CROSSCOMPILE": "1",
 | 
|        "GYP_DEFINES": "fake gyp define 1=fake value 1 fake gyp define 2=fake value 2 component=static_library OS=ios",
 | 
| -      "GYP_GENERATORS": "xcode",
 | 
| -      "GYP_GENERATOR_FLAGS": "xcode_project_version=3.2",
 | 
| +      "GYP_GENERATORS": "ninja",
 | 
|        "LANDMINES_VERBOSE": "1",
 | 
|        "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]"
 | 
|      },
 | 
| @@ -244,49 +243,460 @@
 | 
|    },
 | 
|    {
 | 
|      "cmd": [
 | 
| -      "xcodebuild",
 | 
| -      "-configuration",
 | 
| -      "Debug",
 | 
| -      "-project",
 | 
| -      "[BUILDER_CACHE]/ios/src/build/all.xcodeproj",
 | 
| -      "-sdk",
 | 
| -      "iphonesimulator8.0"
 | 
| +      "git",
 | 
| +      "diff",
 | 
| +      "--cached",
 | 
| +      "--name-only"
 | 
|      ],
 | 
| -    "cwd": "[BUILDER_CACHE]/ios/src/xcodebuild",
 | 
| +    "cwd": "[BUILDER_CACHE]/ios/src",
 | 
| +    "name": "git diff to analyze patch",
 | 
| +    "stdout": "/path/to/tmp/",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_LOG_LINE@files@foo.cc@@@",
 | 
| +      "@@@STEP_LOG_END@files@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
 | 
| +      "[BUILDER_CACHE]/ios/src/testing/buildbot/trybot_analyze_config.json",
 | 
| +      "/path/to/tmp/json"
 | 
| +    ],
 | 
| +    "name": "read filter exclusion spec",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_TEXT@path: 'testing/buildbot/trybot_analyze_config.json'@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"base\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    \"exclusions\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"f.*\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  }, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"chromium\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    \"exclusions\": []@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  }, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"ios\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    \"exclusions\": []@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  }@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@}@@@",
 | 
| +      "@@@STEP_LOG_END@json.output@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "import sys; sys.exit(0)"
 | 
| +    ],
 | 
| +    "name": "analyze",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_TEXT@Analyze disabled: matched exclusion@@@",
 | 
| +      "@@@STEP_LOG_LINE@excluded_files@foo.cc (regex = 'f.*')@@@",
 | 
| +      "@@@STEP_LOG_END@excluded_files@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  \"additional_compile_targets\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"All\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"fake tests\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  \"compile_targets\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"All\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"fake tests\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  \"self.m.filter.compile_targets\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"All\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"fake tests\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  \"self.m.filter.test_targets\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"fake tests\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  \"test_targets\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@    \"fake tests\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@  ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@analyze_details@}@@@",
 | 
| +      "@@@STEP_LOG_END@analyze_details@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "ninja",
 | 
| +      "-C",
 | 
| +      "[BUILDER_CACHE]/ios/src/out/Debug-iphonesimulator",
 | 
| +      "All",
 | 
| +      "fake tests"
 | 
| +    ],
 | 
| +    "cwd": "[BUILDER_CACHE]/ios/src/out/Debug-iphonesimulator",
 | 
|      "name": "compile (with patch)"
 | 
|    },
 | 
|    {
 | 
| +    "cmd": [],
 | 
| +    "name": "bootstrap swarming"
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
 | 
| +      "--path",
 | 
| +      "[SLAVE_BUILD]/swarming.client",
 | 
| +      "--url",
 | 
| +      "https://chromium.googlesource.com/external/swarming.client.git"
 | 
| +    ],
 | 
| +    "name": "bootstrap swarming.git setup (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "retry",
 | 
| +      "fetch",
 | 
| +      "origin",
 | 
| +      "stable"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "env": {
 | 
| +      "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:%(PATH)s"
 | 
| +    },
 | 
| +    "name": "bootstrap swarming.git fetch (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "checkout",
 | 
| +      "-f",
 | 
| +      "FETCH_HEAD"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "name": "bootstrap swarming.git checkout (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "rev-parse",
 | 
| +      "HEAD"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "name": "bootstrap swarming.read revision",
 | 
| +    "stdout": "/path/to/tmp/",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
| +      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "clean",
 | 
| +      "-f",
 | 
| +      "-d",
 | 
| +      "-x"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "name": "bootstrap swarming.git clean (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "submodule",
 | 
| +      "sync"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "name": "bootstrap swarming.submodule sync (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "git",
 | 
| +      "submodule",
 | 
| +      "update",
 | 
| +      "--init",
 | 
| +      "--recursive"
 | 
| +    ],
 | 
| +    "cwd": "[SLAVE_BUILD]/swarming.client",
 | 
| +    "name": "bootstrap swarming.submodule update (swarming_client)",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "[SLAVE_BUILD]/swarming.client/swarming.py",
 | 
| +      "--version"
 | 
| +    ],
 | 
| +    "name": "bootstrap swarming.swarming.py --version",
 | 
| +    "stdout": "/path/to/tmp/",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
| +      "@@@STEP_TEXT@1.2.3@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [],
 | 
| +    "name": "isolate"
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
 | 
| +      "{\n  \"conditions\": [\n    [\n      \"OS == \\\"ios\\\"\", \n      {\n        \"variables\": {\n          \"command\": [\n            \"src/ios/build/bots/scripts/run.py\", \n            \"--app\", \n            \"<(app_path)\", \n            \"--out-dir\", \n            \"${ISOLATED_OUTDIR}\", \n            \"--xcode-version\", \n            \"<(xcode_version)\", \n            \"--iossim\", \n            \"src/out/Debug-iphonesimulator/iossim\", \n            \"--platform\", \n            \"<(platform)\", \n            \"--version\", \n            \"<(version)\"\n          ], \n          \"files\": [\n            \"<(app_path)/\", \n            \"src/ios/build/bots/scripts/\", \n            \"src/out/Debug-iphonesimulator/iossim\"\n          ]\n        }\n      }\n    ]\n  ]\n}",
 | 
| +      "[SLAVE_BUILD]/template.isolate"
 | 
| +    ],
 | 
| +    "name": "isolate.generate template.isolate",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@  \"conditions\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@    [@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@      \"OS == \\\"ios\\\"\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@      {@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@        \"variables\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@          \"command\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"src/ios/build/bots/scripts/run.py\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--app\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"<(app_path)\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--out-dir\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"${ISOLATED_OUTDIR}\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--xcode-version\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"<(xcode_version)\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--iossim\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"src/out/Debug-iphonesimulator/iossim\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--platform\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"<(platform)\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"--version\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"<(version)\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@          ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@          \"files\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"<(app_path)/\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"src/ios/build/bots/scripts/\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@            \"src/out/Debug-iphonesimulator/iossim\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@          ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@        }@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@      }@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@    ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@  ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@template.isolate@}@@@",
 | 
| +      "@@@STEP_LOG_END@template.isolate@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
 | 
| +      "{\n  \"args\": [\n    \"--config-variable\", \n    \"OS\", \n    \"ios\", \n    \"--config-variable\", \n    \"app_path\", \n    \"src/out/Debug-iphonesimulator/fake tests.app\", \n    \"--config-variable\", \n    \"xcode_version\", \n    \"fake xcode version\", \n    \"--isolate\", \n    \"[SLAVE_BUILD]/template.isolate\", \n    \"--isolated\", \n    \"[TMP_BASE]/isolate_tmp_1/0.isolated\", \n    \"--path-variable\", \n    \"app_path\", \n    \"src/out/Debug-iphonesimulator/fake tests.app\", \n    \"--config-variable\", \n    \"platform\", \n    \"fake device\", \n    \"--config-variable\", \n    \"version\", \n    \"8.1\"\n  ], \n  \"dir\": \"[SLAVE_BUILD]\", \n  \"version\": 1\n}",
 | 
| +      "[TMP_BASE]/isolate_tmp_1/0.isolate.gen.json"
 | 
| +    ],
 | 
| +    "name": "isolate.generate 0.isolate.gen.json",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
| +      "@@@STEP_TEXT@fake tests (fake device iOS 8.1)@@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@  \"args\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--config-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"OS\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"ios\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--config-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"app_path\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"src/out/Debug-iphonesimulator/fake tests.app\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--config-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"xcode_version\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"fake xcode version\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--isolate\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"[SLAVE_BUILD]/template.isolate\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--isolated\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"[TMP_BASE]/isolate_tmp_1/0.isolated\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--path-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"app_path\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"src/out/Debug-iphonesimulator/fake tests.app\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--config-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"platform\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"fake device\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"--config-variable\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"version\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@    \"8.1\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@  ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@  \"dir\": \"[SLAVE_BUILD]\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@  \"version\": 1@@@",
 | 
| +      "@@@STEP_LOG_LINE@0.isolate.gen.json@}@@@",
 | 
| +      "@@@STEP_LOG_END@0.isolate.gen.json@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
|      "cmd": [
 | 
| -      "RECIPE_PACKAGE_REPO[build]/scripts/slave/ios/run.py",
 | 
| -      "--app",
 | 
| -      "[SLAVE_BUILD]/src/xcodebuild/Debug-iphonesimulator/fake tests.app",
 | 
| -      "--json_file",
 | 
| +      "[SLAVE_BUILD]/swarming.client/isolate.py",
 | 
| +      "batcharchive",
 | 
| +      "--dump-json",
 | 
|        "/path/to/tmp/json",
 | 
| -      "--iossim",
 | 
| -      "[SLAVE_BUILD]/src/xcodebuild/ninja-iossim/Debug/iossim",
 | 
| -      "--platform",
 | 
| -      "fake device",
 | 
| -      "--version",
 | 
| -      "8.1"
 | 
| +      "--isolate-server",
 | 
| +      "https://isolateserver.appspot.com",
 | 
| +      "[TMP_BASE]/isolate_tmp_1/0.isolate.gen.json"
 | 
|      ],
 | 
| -    "name": "fake tests (fake device iOS 8.1)",
 | 
| +    "name": "isolate.archive",
 | 
|      "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@{@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@  \"links\": {@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@    \"fake URL text\": \"fake URL\"@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@  }, @@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@  \"logs\": {@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@    \"fake log\": [@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@      \"fake log line 1\", @@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@      \"fake log line 2\"@@@",
 | 
| -      "@@@STEP_LOG_LINE@json.output@    ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"0\": \"fake-hash-0\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@}@@@",
 | 
| +      "@@@STEP_LOG_END@json.output@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [],
 | 
| +    "name": "trigger"
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "[SLAVE_BUILD]/swarming.client/swarming.py",
 | 
| +      "trigger",
 | 
| +      "--swarming",
 | 
| +      "https://chromium-swarm.appspot.com",
 | 
| +      "--isolate-server",
 | 
| +      "https://isolateserver.appspot.com",
 | 
| +      "--priority",
 | 
| +      "200",
 | 
| +      "--shards",
 | 
| +      "1",
 | 
| +      "--task-name",
 | 
| +      "fake tests (fake device iOS 8.1)/Mac/fake-hash-/ios/0",
 | 
| +      "--dump-json",
 | 
| +      "/path/to/tmp/json",
 | 
| +      "--expiration",
 | 
| +      "3600",
 | 
| +      "--io-timeout",
 | 
| +      "1200",
 | 
| +      "--hard-timeout",
 | 
| +      "3600",
 | 
| +      "--dimension",
 | 
| +      "os",
 | 
| +      "Mac",
 | 
| +      "--dimension",
 | 
| +      "pool",
 | 
| +      "Chrome",
 | 
| +      "--dimension",
 | 
| +      "xcode_version",
 | 
| +      "fake xcode version",
 | 
| +      "--tag",
 | 
| +      "buildername:ios",
 | 
| +      "--tag",
 | 
| +      "buildnumber:0",
 | 
| +      "--tag",
 | 
| +      "data:fake-hash-0",
 | 
| +      "--tag",
 | 
| +      "device_type:fake device",
 | 
| +      "--tag",
 | 
| +      "ios_version:8.1",
 | 
| +      "--tag",
 | 
| +      "master:tryserver.fake",
 | 
| +      "--tag",
 | 
| +      "name:fake",
 | 
| +      "--tag",
 | 
| +      "os:Mac",
 | 
| +      "--tag",
 | 
| +      "platform:simulator",
 | 
| +      "--tag",
 | 
| +      "rietveld:fake://rietveld.url/123456/#ps1",
 | 
| +      "--tag",
 | 
| +      "slavename:fake-vm",
 | 
| +      "--tag",
 | 
| +      "stepname:fake tests (fake device iOS 8.1) on Mac",
 | 
| +      "--tag",
 | 
| +      "test:fake tests",
 | 
| +      "fake-hash-0"
 | 
| +    ],
 | 
| +    "name": "trigger.[trigger] fake tests (fake device iOS 8.1) on Mac",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_NEST_LEVEL@1@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"base_task_name\": \"fake tests (fake device iOS 8.1)/Mac/fake-hash-/ios/0\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"tasks\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    \"fake tests (fake device iOS 8.1)/Mac/fake-hash-/ios/0\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"shard_index\": 0, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"10000\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    }@@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@  }@@@",
 | 
|        "@@@STEP_LOG_LINE@json.output@}@@@",
 | 
|        "@@@STEP_LOG_END@json.output@@@",
 | 
| -      "@@@STEP_LOG_LINE@fake log@fake log line 1@@@",
 | 
| -      "@@@STEP_LOG_LINE@fake log@fake log line 2@@@",
 | 
| -      "@@@STEP_LOG_END@fake log@@@",
 | 
| -      "@@@STEP_LINK@fake URL text@fake URL@@@"
 | 
| +      "@@@STEP_LINK@shard #0@https://chromium-swarm.appspot.com/user/task/10000@@@"
 | 
| +    ]
 | 
| +  },
 | 
| +  {
 | 
| +    "cmd": [
 | 
| +      "python",
 | 
| +      "-u",
 | 
| +      "[SLAVE_BUILD]/swarming.client/swarming.py",
 | 
| +      "collect",
 | 
| +      "--swarming",
 | 
| +      "https://chromium-swarm.appspot.com",
 | 
| +      "--decorate",
 | 
| +      "--print-status-updates",
 | 
| +      "--json",
 | 
| +      "{\"base_task_name\": \"fake tests (fake device iOS 8.1)/Mac/fake-hash-/ios/0\", \"tasks\": {\"fake tests (fake device iOS 8.1)/Mac/fake-hash-/ios/0\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
 | 
| +      "--task-summary-json",
 | 
| +      "/path/to/tmp/json",
 | 
| +      "--task-output-dir",
 | 
| +      "[TMP_BASE]/0_tmp_2"
 | 
| +    ],
 | 
| +    "name": "fake tests (fake device iOS 8.1) on Mac",
 | 
| +    "~followup_annotations": [
 | 
| +      "@@@STEP_TEXT@swarming pending 71s@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@{@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  \"shards\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"abandoned_ts\": null, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm30\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"durations\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        5.7, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        31.5@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"exit_codes\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        0, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        0@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"failure\": false, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"id\": \"148aa78d7aa0000\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"internal_failure\": false, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"isolated_out\": {@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"view_url\": \"blah\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      }, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"outputs\": [@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"Heart beat succeeded on win32.\\n\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@        \"Foo\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      ], @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"state\": 112, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"try_number\": 1, @@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@      \"user\": \"unknown\"@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@    }@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@  ]@@@",
 | 
| +      "@@@STEP_LOG_LINE@json.output@}@@@",
 | 
| +      "@@@STEP_LOG_END@json.output@@@",
 | 
| +      "@@@STEP_LINK@shard #0@https://chromium-swarm.appspot.com/user/task/10000@@@"
 | 
|      ]
 | 
|    },
 | 
|    {
 | 
| 
 |