aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--infra/bots/recipe_modules/isolate/api.py12
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/always-use-exparchive.json45
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-bmiss.json2
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-emiss.json2
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch.json2
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-miss.json2
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi-miss.json4
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi.json4
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/exparchive.json2
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build1.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build10.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build2.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build3.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build4.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build5.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build6.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build7.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build8.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build9.json180
-rw-r--r--infra/bots/recipe_modules/isolate/examples/full.py25
-rw-r--r--infra/bots/tools/luci-go/linux64/isolate.sha12
-rw-r--r--infra/bots/tools/luci-go/mac64/isolate.sha12
-rw-r--r--infra/bots/tools/luci-go/win64/isolate.exe.sha12
23 files changed, 1843 insertions, 63 deletions
diff --git a/infra/bots/recipe_modules/isolate/api.py b/infra/bots/recipe_modules/isolate/api.py
index 4b3daa2085..296c233da2 100644
--- a/infra/bots/recipe_modules/isolate/api.py
+++ b/infra/bots/recipe_modules/isolate/api.py
@@ -91,7 +91,7 @@ class IsolateApi(recipe_api.RecipeApi):
step_result.presentation.status = self.m.step.WARNING
def isolate_tests(self, build_dir, targets=None, verbose=False,
- set_swarm_hashes=True, always_use_exparchive=False,
+ set_swarm_hashes=True, use_exparchive=False,
**kwargs):
"""Archives prepared tests in |build_dir| to isolate server.
@@ -135,10 +135,10 @@ class IsolateApi(recipe_api.RecipeApi):
return
batch_targets = []
- exparchive_targets = []
+ archive_targets = []
for t in targets:
- if t.endswith('_exparchive') or always_use_exparchive:
- exparchive_targets.append(t)
+ if t.endswith('_exparchive'):
+ archive_targets.append(t)
else:
batch_targets.append(t)
@@ -146,13 +146,13 @@ class IsolateApi(recipe_api.RecipeApi):
try:
args = [
self.m.swarming_client.path,
- 'exparchive',
+ 'archive',
'--dump-json', self.m.json.output(),
'--isolate-server', self._isolate_server,
'--eventlog-endpoint', 'prod',
] + (['--verbose'] if verbose else [])
- for target in exparchive_targets:
+ for target in archive_targets:
isolate_steps.append(
self.m.python(
'isolate %s' % target,
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/always-use-exparchive.json b/infra/bots/recipe_modules/isolate/examples/full.expected/always-use-exparchive.json
index 8028783049..1719129ed4 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/always-use-exparchive.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/always-use-exparchive.json
@@ -94,9 +94,9 @@
"stdout": "/path/to/tmp/json",
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
"@@@STEP_LOG_LINE@json.output@]@@@",
"@@@STEP_LOG_END@json.output@@@"
]
@@ -128,7 +128,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
@@ -154,47 +154,18 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "batcharchive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
"https://isolateserver-dev.appspot.com",
- "--eventlog-endpoint",
- "prod",
- "--isolate",
- "RECIPE_PACKAGE_REPO[skia]/test1.isolate",
- "--isolated",
- "RECIPE_PACKAGE_REPO[skia]/test1.isolated"
- ],
- "name": "isolate test1",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\"@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
- "[START_DIR]/swarming.client",
- "exparchive",
- "--dump-json",
- "/path/to/tmp/json",
- "--isolate-server",
- "https://isolateserver-dev.appspot.com",
- "--eventlog-endpoint",
- "prod",
- "--isolate",
- "RECIPE_PACKAGE_REPO[skia]/test2.isolate",
- "--isolated",
- "RECIPE_PACKAGE_REPO[skia]/test2.isolated"
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
],
- "name": "isolate test2",
+ "name": "isolate tests",
"~followup_annotations": [
"@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-bmiss.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-bmiss.json
index 325694df2e..e42dc67efd 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-bmiss.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-bmiss.json
@@ -131,7 +131,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-emiss.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-emiss.json
index e82f10f128..596c2e7a3f 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-emiss.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch-emiss.json
@@ -131,7 +131,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch.json
index c056efe9c3..1719129ed4 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-batch.json
@@ -128,7 +128,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-miss.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-miss.json
index 54a570e300..9a8dccea8f 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-miss.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-miss.json
@@ -126,7 +126,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi-miss.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi-miss.json
index 07f5865814..ee20c658dc 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi-miss.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi-miss.json
@@ -129,7 +129,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
@@ -155,7 +155,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi.json
index 2aaea20c3d..d78eacb967 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive-multi.json
@@ -126,7 +126,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
@@ -152,7 +152,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive.json b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive.json
index 2f9d7aeead..dcbf0053ec 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive.json
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/exparchive.json
@@ -124,7 +124,7 @@
"-u",
"RECIPE_MODULE[skia::isolate]/resources/isolate.py",
"[START_DIR]/swarming.client",
- "exparchive",
+ "archive",
"--dump-json",
"/path/to/tmp/json",
"--isolate-server",
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build1.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build1.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build1.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build10.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build10.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build10.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build2.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build2.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build2.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build3.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build3.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build3.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build4.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build4.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build4.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build5.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build5.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build5.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build6.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build6.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build6.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build7.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build7.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build7.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build8.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build8.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build8.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build9.json b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build9.json
new file mode 100644
index 0000000000..1719129ed4
--- /dev/null
+++ b/infra/bots/recipe_modules/isolate/examples/full.expected/use-exparchive-20percent-build9.json
@@ -0,0 +1,180 @@
+[
+ {
+ "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",
+ "--progress"
+ ],
+ "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": [
+ "cat"
+ ],
+ "name": "read test spec",
+ "stdout": "/path/to/tmp/json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\"@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/find_isolated_tests.py",
+ "--build-dir",
+ "RECIPE_PACKAGE_REPO[skia]",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "name": "find isolated tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "archive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "--eventlog-endpoint",
+ "prod",
+ "--isolate",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolate",
+ "--isolated",
+ "RECIPE_PACKAGE_REPO[skia]/test_exparchive.isolated"
+ ],
+ "name": "isolate test_exparchive",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test_exparchive\": \"[dummy hash for test_exparchive]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[skia::isolate]/resources/isolate.py",
+ "[START_DIR]/swarming.client",
+ "batcharchive",
+ "--dump-json",
+ "/path/to/tmp/json",
+ "--isolate-server",
+ "https://isolateserver-dev.appspot.com",
+ "RECIPE_PACKAGE_REPO[skia]/test1.isolated.gen.json",
+ "RECIPE_PACKAGE_REPO[skia]/test2.isolated.gen.json"
+ ],
+ "name": "isolate tests",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test1\": \"[dummy hash for test1]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test2\": \"[dummy hash for test2]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@swarm_hashes@{\"test1\": \"[dummy hash for test1]\", \"test2\": \"[dummy hash for test2]\", \"test_exparchive\": \"[dummy hash for test_exparchive]\"}@@@"
+ ]
+ },
+ {
+ "name": "$result",
+ "recipe_result": null,
+ "status_code": 0
+ }
+] \ No newline at end of file
diff --git a/infra/bots/recipe_modules/isolate/examples/full.py b/infra/bots/recipe_modules/isolate/examples/full.py
index 7dfa009f65..b26c81c91c 100644
--- a/infra/bots/recipe_modules/isolate/examples/full.py
+++ b/infra/bots/recipe_modules/isolate/examples/full.py
@@ -20,12 +20,14 @@ DEPS = [
]
PROPERTIES = {
- 'always_use_exparchive': Property(
- kind=bool, help="Force usage of exparchive.", default=False),
+ 'use_exparchive': Property(
+ kind=int, help="Force usage of exparchive.", default=0),
+ 'buildnumber': Property(
+ kind=int, help="Number for the build.", default=100),
}
-def RunSteps(api, always_use_exparchive):
+def RunSteps(api, use_exparchive):
# 'isolate_tests' step needs swarming checkout.
api.swarming_client.checkout('master')
@@ -48,8 +50,7 @@ def RunSteps(api, always_use_exparchive):
# None.
if expected_targets is not None:
api.isolate.isolate_tests(
- build_path, expected_targets,
- always_use_exparchive=always_use_exparchive)
+ build_path, expected_targets, use_exparchive=use_exparchive)
def GenTests(api):
@@ -141,7 +142,15 @@ def GenTests(api):
# Use force-exparchive
yield make_test(
'always-use-exparchive',
- [],
- ['test_exparchive', 'test1', 'test2'],
+ ['test1', 'test2'],
+ ['test_exparchive'],
['test_exparchive', 'test1', 'test2']) + api.properties(
- always_use_exparchive=True)
+ use_exparchive=True)
+ # Use force-exparchive
+ for i in range(1, 11):
+ yield make_test(
+ 'use-exparchive-20percent-build%i' % i,
+ ['test1', 'test2'],
+ ['test_exparchive'],
+ ['test_exparchive', 'test1', 'test2']) + api.properties(
+ use_exparchive=20, buildnumber=i)
diff --git a/infra/bots/tools/luci-go/linux64/isolate.sha1 b/infra/bots/tools/luci-go/linux64/isolate.sha1
index e49fdc70ea..9162638599 100644
--- a/infra/bots/tools/luci-go/linux64/isolate.sha1
+++ b/infra/bots/tools/luci-go/linux64/isolate.sha1
@@ -1 +1 @@
-0c5f61171e70fabea55489eccb330687e94a43a3
+3edf192dfe8e2b9c5e89e3885b7bb27bac3450f0
diff --git a/infra/bots/tools/luci-go/mac64/isolate.sha1 b/infra/bots/tools/luci-go/mac64/isolate.sha1
index 1c79cd34ff..d7f394d3fd 100644
--- a/infra/bots/tools/luci-go/mac64/isolate.sha1
+++ b/infra/bots/tools/luci-go/mac64/isolate.sha1
@@ -1 +1 @@
-f79355e863ef6e67a074ed85b043db81376ffbde
+869b8c39e30c2b19fa82be5eb4642f29720ba634
diff --git a/infra/bots/tools/luci-go/win64/isolate.exe.sha1 b/infra/bots/tools/luci-go/win64/isolate.exe.sha1
index 725910c600..5f3b0be90a 100644
--- a/infra/bots/tools/luci-go/win64/isolate.exe.sha1
+++ b/infra/bots/tools/luci-go/win64/isolate.exe.sha1
@@ -1 +1 @@
-a7682ca46f9ac393f3e8c3b8feb4aa7cef49693f
+dd9791d5ac0e667a17ded140c3bf0bf9673b0da5