aboutsummaryrefslogtreecommitdiffhomepage
path: root/infra/bots/recipe_modules/swarming/examples
diff options
context:
space:
mode:
Diffstat (limited to 'infra/bots/recipe_modules/swarming/examples')
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/basic.json683
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/show_isolated_out_in_collect_step.json297
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/show_shards_in_collect_step.json299
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_new.json281
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_old.json281
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_new.json278
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_old.json278
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.expected/trybot.json298
-rw-r--r--infra/bots/recipe_modules/swarming/examples/full.py242
9 files changed, 2937 insertions, 0 deletions
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/basic.json b/infra/bots/recipe_modules/swarming/examples/full.expected/basic.json
new file mode 100644
index 0000000000..9a55d5c3d8
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/basic.json
@@ -0,0 +1,683 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "linux",
+ "--verbose"
+ ],
+ "name": "archive for linux",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "mac",
+ "--verbose"
+ ],
+ "name": "archive for mac",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "2",
+ "--task-name",
+ "hello_world/Ubuntu-14.04/hash_for_l",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Ubuntu-14.04",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_linux",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Ubuntu-14.04",
+ "--tag",
+ "os:linux",
+ "--tag",
+ "stepname:hello_world",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_linux"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Ubuntu-14.04/hash_for_l\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Ubuntu-14.04/hash_for_l:2: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-dev.appspot.com/user/task/10000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Ubuntu-14.04/hash_for_l:2:1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shard_index\": 1, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"10100\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10100\"@@@",
+ "@@@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-dev.appspot.com/user/task/10000@@@",
+ "@@@STEP_LINK@shard #1@https://chromium-swarm-dev.appspot.com/user/task/10100@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Mac-10.9/hash_for_m",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Mac-10.9",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_mac",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Mac-10.9",
+ "--tag",
+ "os:mac",
+ "--tag",
+ "stepname:hello_world on Mac-10.9",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_mac"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Mac-10.9",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Mac-10.9'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Mac-10.9/hash_for_m\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Mac-10.9/hash_for_m\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Ubuntu-14.04/hash_for_l\", \"tasks\": {\"hello_world/Ubuntu-14.04/hash_for_l:2:0\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}, \"hello_world/Ubuntu-14.04/hash_for_l:2:1\": {\"shard_index\": 1, \"task_id\": \"10100\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10100\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0100\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@",
+ "@@@STEP_LINK@shard #1 isolated out@blah@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Mac-10.9/hash_for_m\", \"tasks\": {\"hello_world/Mac-10.9/hash_for_m\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Mac-10.9",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Mac-10.9'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/show_isolated_out_in_collect_step.json b/infra/bots/recipe_modules/swarming/examples/full.expected/show_isolated_out_in_collect_step.json
new file mode 100644
index 0000000000..69019a8494
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/show_isolated_out_in_collect_step.json
@@ -0,0 +1,297 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "rietveld:https://codereview.chromium.org/123/#ps1001",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/show_shards_in_collect_step.json b/infra/bots/recipe_modules/swarming/examples/full.expected/show_shards_in_collect_step.json
new file mode 100644
index 0000000000..f4c2e7bb36
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/show_shards_in_collect_step.json
@@ -0,0 +1,299 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "rietveld:https://codereview.chromium.org/123/#ps1001",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@",
+ "@@@STEP_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_new.json b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_new.json
new file mode 100644
index 0000000000..5fa8e68abd
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_new.json
@@ -0,0 +1,281 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0100\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": \"EXPIRED\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LOG_LINE@no_results_exc@Infra Failure in Shard #0 failed: There isn't enough capacity to run your test@@@",
+ "@@@STEP_LOG_END@no_results_exc@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_old.json b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_old.json
new file mode 100644
index 0000000000..f0e2d64568
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_expired_old.json
@@ -0,0 +1,281 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0100\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 48, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LOG_LINE@no_results_exc@Infra Failure in Shard #0 failed: There isn't enough capacity to run your test@@@",
+ "@@@STEP_LOG_END@no_results_exc@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_new.json b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_new.json
new file mode 100644
index 0000000000..46ca02c42d
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_new.json
@@ -0,0 +1,278 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0100\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": \"TIMED_OUT\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_old.json b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_old.json
new file mode 100644
index 0000000000..a2741eb88f
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/swarming_timeout_old.json
@@ -0,0 +1,278 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0100\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 64, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.expected/trybot.json b/infra/bots/recipe_modules/swarming/examples/full.expected/trybot.json
new file mode 100644
index 0000000000..7b23e8cb56
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.expected/trybot.json
@@ -0,0 +1,298 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/external/swarming.client.git"
+ ],
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "retry",
+ "fetch",
+ "origin",
+ "master"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "PATH": "RECIPE_PACKAGE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "read revision",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "--version"
+ ],
+ "name": "swarming.py --version",
+ "stdout": "/path/to/tmp/",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@0.8.6@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolate.py",
+ "archive",
+ "--isolate",
+ "[START_DIR]/swarming.client/example/payload/hello_world.isolate",
+ "--isolated",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/hello_world.isolated",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--config-variable",
+ "OS",
+ "win",
+ "--verbose"
+ ],
+ "name": "archive for win",
+ "stdout": "/path/to/tmp/"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "trigger",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--priority",
+ "30",
+ "--shards",
+ "1",
+ "--task-name",
+ "hello_world/Windows-7-SP1/hash_for_w",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--expiration",
+ "3600",
+ "--io-timeout",
+ "1200",
+ "--hard-timeout",
+ "3600",
+ "--dimension",
+ "cpu",
+ "x86-64",
+ "--dimension",
+ "gpu",
+ "none",
+ "--dimension",
+ "os",
+ "Windows-7-SP1",
+ "--env",
+ "TESTING",
+ "1",
+ "--tag",
+ "data:hash_for_win",
+ "--tag",
+ "master:tryserver",
+ "--tag",
+ "name:hello_world",
+ "--tag",
+ "os:Windows-7-SP1",
+ "--tag",
+ "os:win",
+ "--tag",
+ "rietveld:https://codereview.chromium.org/123/#ps1001",
+ "--tag",
+ "stepname:hello_world on Windows-7-SP1",
+ "--verbose",
+ "--idempotent",
+ "--user",
+ "joe",
+ "--cipd-package",
+ "bin:super/awesome/pkg:git_revision:deadbeef",
+ "--isolated",
+ "hash_for_win"
+ ],
+ "infra_step": true,
+ "name": "[trigger] hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"hello_world/Windows-7-SP1/hash_for_w\": {@@@",
+ "@@@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-dev.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_LINK@shard #0@https://chromium-swarm-dev.appspot.com/user/task/10000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "echo",
+ "running something locally"
+ ],
+ "name": "local step"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::swarming]/resources/collect_task.py",
+ "-o",
+ "/path/to/tmp/json",
+ "--task-output-dir",
+ "[TMP_BASE]/hello_isolated_world_tmp_1/task_output_dir",
+ "--merge-script",
+ "RECIPE_MODULE[skia::swarming]/resources/noop_merge.py",
+ "--merge-additional-args",
+ "[]",
+ "--",
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/swarming.py",
+ "collect",
+ "--swarming",
+ "https://chromium-swarm-dev.appspot.com",
+ "--decorate",
+ "--print-status-updates",
+ "--verbose",
+ "--json",
+ "{\"base_task_name\": \"hello_world/Windows-7-SP1/hash_for_w\", \"tasks\": {\"hello_world/Windows-7-SP1/hash_for_w\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm-dev.appspot.com/user/task/10000\"}}}",
+ "--task-summary-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "hello_world on Windows-7-SP1",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Run on OS: 'Windows-7-SP1'<br>swarming pending 71s@@@",
+ "@@@STEP_LOG_LINE@json.output@{}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@{@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"shards\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"abandoned_ts\": null, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"bot_id\": \"vm30\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"completed_ts\": \"2014-09-25T01:42:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"created_ts\": \"2014-09-25T01:41:00.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"durations\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 5.7, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 31.5@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"exit_codes\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ 0@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"id\": \"148aa78d7aa0000\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"internal_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated_out\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"namespace\": \"default-gzip\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"modified_ts\": \"2014-09-25 01:42:00\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"name\": \"heartbeat-canary-2014-09-25_01:41:55-os=Windows\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs\": [@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Heart beat succeeded on win32.\\n\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"Foo\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ], @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"view_url\": \"blah\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"started_ts\": \"2014-09-25T01:42:11.123\", @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"state\": 112, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"try_number\": 1, @@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ \"user\": \"unknown\"@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ }@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@ ]@@@",
+ "@@@STEP_LOG_LINE@swarming.summary@}@@@",
+ "@@@STEP_LOG_END@swarming.summary@@@",
+ "@@@STEP_LINK@shard #0 isolated out@blah@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::file]/resources/fileutil.py",
+ "rmtree",
+ "[TMP_BASE]/hello_isolated_world_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "rmtree remove temp dir"
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/swarming/examples/full.py b/infra/bots/recipe_modules/swarming/examples/full.py
new file mode 100644
index 0000000000..f61576a24d
--- /dev/null
+++ b/infra/bots/recipe_modules/swarming/examples/full.py
@@ -0,0 +1,242 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# TODO(borenet): This module was copied from build.git and heavily modified to
+# remove dependencies on other modules in build.git. It belongs in a different
+# repo. Remove this once it has been moved.
+
+
+import json
+
+DEPS = [
+ 'file',
+ 'isolate',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/python',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'swarming',
+ 'swarming_client',
+]
+
+from recipe_engine.recipe_api import Property
+
+PROPERTIES = {
+ 'platforms': Property(default=('win',)),
+ 'show_isolated_out_in_collect_step': Property(default=True),
+ 'show_shards_in_collect_step': Property(default=False),
+ 'gtest_task': Property(default=False),
+ #'isolated_script_task': Property(default=False),
+ 'merge': Property(default=None),
+}
+
+def RunSteps(api, platforms, show_isolated_out_in_collect_step,
+ show_shards_in_collect_step, gtest_task, merge):
+ # Checkout swarming client.
+ api.swarming_client.checkout('master')
+
+ # Ensure swarming_client version is fresh enough.
+ api.swarming.check_client_version(step_test_data=(0, 8, 6))
+
+ # Configure isolate & swarming modules (this is optional).
+ api.isolate.isolate_server = 'https://isolateserver-dev.appspot.com'
+ api.swarming.swarming_server = 'https://chromium-swarm-dev.appspot.com'
+ api.swarming.add_default_tag('master:tryserver')
+ api.swarming.default_expiration = 60*60
+ api.swarming.default_hard_timeout = 60*60
+ api.swarming.default_io_timeout = 20*60
+ api.swarming.default_idempotent = True
+ api.swarming.default_priority = 30
+ api.swarming.default_user = 'joe'
+ api.swarming.set_default_env('TESTING', '1')
+ api.swarming.verbose = True
+
+ api.swarming.set_default_dimension('inexistent', None)
+
+ api.swarming.show_shards_in_collect_step = show_shards_in_collect_step
+ api.swarming.show_isolated_out_in_collect_step = (
+ show_isolated_out_in_collect_step)
+
+ try:
+ # Testing ReadOnlyDict.__setattr__() coverage.
+ api.swarming.default_dimensions['invalid'] = 'foo'
+ except TypeError:
+ pass
+ try:
+ api.swarming.default_env['invalid'] = 'foo'
+ except TypeError:
+ pass
+
+ # Create a temp dir to put *.isolated files into.
+ temp_dir = api.path.mkdtemp('hello_isolated_world')
+
+ # Prepare a bunch of swarming tasks to run hello_world on multiple platforms.
+ tasks = []
+ for platform in platforms:
+ # Isolate example hello_world.isolate from swarming client repo.
+ # TODO(vadimsh): Add a thin wrapper around isolate.py to 'isolate' module?
+ step_result = api.python(
+ 'archive for %s' % platform,
+ api.swarming_client.path.join('isolate.py'),
+ [
+ 'archive',
+ '--isolate', api.swarming_client.path.join(
+ 'example', 'payload', 'hello_world.isolate'),
+ '--isolated', temp_dir.join('hello_world.isolated'),
+ '--isolate-server', api.isolate.isolate_server,
+ '--config-variable', 'OS', platform,
+ '--verbose',
+ ], stdout=api.raw_io.output_text())
+ # TODO(vadimsh): Pass result from isolate.py though --output-json option.
+ isolated_hash = step_result.stdout.split()[0].strip()
+
+ # Create a task to run the isolated file on swarming, set OS dimension.
+ # Also generate code coverage for multi-shard case by triggering multiple
+ # shards on Linux.
+ task = api.swarming.task('hello_world', isolated_hash,
+ task_output_dir=temp_dir.join('task_output_dir'))
+ task.dimensions['os'] = api.swarming.prefered_os_dimension(platform)
+ task.shards = 2 if platform == 'linux' else 1
+ task.tags.add('os:' + platform)
+ if api.swarming_client.get_script_version('swarming.py') >= (0, 8, 6):
+ task.cipd_packages = [
+ ('bin', 'super/awesome/pkg', 'git_revision:deadbeef')]
+ tasks.append(task)
+
+ # Launch all tasks.
+ for task in tasks:
+ step_result = api.swarming.trigger_task(task)
+ assert step_result.swarming_task in tasks
+
+ # Recipe can do something useful here locally while tasks are
+ # running on swarming.
+ api.step('local step', ['echo', 'running something locally'])
+
+ # Wait for all tasks to complete.
+ for task in tasks:
+ step_result = api.swarming.collect_task(task)
+ data = step_result.swarming.summary
+
+ state = data['shards'][0]['state']
+ if api.swarming.State.COMPLETED == state:
+ state_name = api.swarming.State.to_string(state)
+ assert 'Completed' == state_name, state_name
+ assert step_result.swarming_task in tasks
+
+ # Cleanup.
+ api.file.rmtree('remove temp dir', temp_dir)
+
+
+def GenTests(api):
+ yield (
+ api.test('basic') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.step_data(
+ 'archive for linux',
+ stdout=api.raw_io.output_text(
+ 'hash_for_linux hello_world.isolated')) +
+ api.step_data(
+ 'archive for mac',
+ stdout=api.raw_io.output_text('hash_for_mac hello_world.isolated')) +
+ api.properties(platforms=('win', 'linux', 'mac')))
+
+ yield (
+ api.test('trybot') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.properties(
+ rietveld='https://codereview.chromium.org',
+ issue='123',
+ patchset='1001'))
+
+ yield (
+ api.test('show_shards_in_collect_step') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.properties(
+ rietveld='https://codereview.chromium.org',
+ issue='123',
+ patchset='1001',
+ show_shards_in_collect_step=True))
+
+ yield (
+ api.test('show_isolated_out_in_collect_step') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.properties(
+ rietveld='https://codereview.chromium.org',
+ issue='123',
+ patchset='1001',
+ show_isolated_out_in_collect_step=False))
+
+ data = {
+ 'shards': [
+ {
+ '': '',
+ }
+ ]
+ }
+
+ data = {
+ 'shards': [
+ {
+ 'abandoned_ts': '2014-09-25T01:41:00.123',
+ 'bot_id': 'vm30',
+ 'completed_ts': None,
+ 'created_ts': '2014-09-25T01:41:00.123',
+ 'durations': None,
+ 'exit_codes': [],
+ 'failure': False,
+ 'id': '148aa78d7aa0100',
+ 'internal_failure': False,
+ 'isolated_out': None,
+ 'modified_ts': '2014-09-25 01:42:00',
+ 'name': 'heartbeat-canary-2014-09-25_01:41:55-os=Windows',
+ 'outputs': [],
+ 'started_ts': '2014-09-25T01:42:11.123',
+ 'state': 0x30, # EXPIRED (old)
+ 'try_number': None,
+ 'user': 'unknown',
+ }
+ ],
+ }
+
+ yield (
+ api.test('swarming_expired_old') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.step_data('hello_world on Windows-7-SP1', api.swarming.summary(data)))
+
+ data['shards'][0]['state'] = 'EXPIRED'
+ yield (
+ api.test('swarming_expired_new') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.step_data('hello_world on Windows-7-SP1', api.swarming.summary(data)))
+
+ data['shards'][0]['state'] = 0x40 # TIMED_OUT (old)
+ yield (
+ api.test('swarming_timeout_old') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.step_data('hello_world on Windows-7-SP1', api.swarming.summary(data)))
+
+ data['shards'][0]['state'] = 'TIMED_OUT' # TIMED_OUT (old)
+ yield (
+ api.test('swarming_timeout_new') +
+ api.step_data(
+ 'archive for win',
+ stdout=api.raw_io.output_text('hash_for_win hello_world.isolated')) +
+ api.step_data('hello_world on Windows-7-SP1', api.swarming.summary(data)))