Setup Dart recipes in the new repo
This adds most of the machinery needed to support recipes currently in
Chromium's build.git to Dart's recipes repo and copies of the recipes
themselves.
https://crbug.com/1032231
Change-Id: I51011d1a803ddbbe9333293a6b733ab2ba3eb6ac
Reviewed-on: https://dart-review.googlesource.com/c/recipes/+/136523
Reviewed-by: William Hesse <whesse@google.com>
Reviewed-by: Robbie Iannucci <iannucci@google.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4e43185
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.pyc
+/.recipe_deps
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..a3889d5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,25 @@
+Copyright 2012, the Dart project authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.recipes.md b/README.recipes.md
new file mode 100644
index 0000000..ac01cb1
--- /dev/null
+++ b/README.recipes.md
@@ -0,0 +1,200 @@
+<!--- AUTOGENERATED BY `./recipes.py test train` -->
+# Repo documentation for [dart](https://dart.googlesource.com/recipes.git)
+## Table of Contents
+
+**[Recipe Modules](#Recipe-Modules)**
+ * [dart](#recipe_modules-dart)
+
+**[Recipes](#Recipes)**
+ * [dart/chocolatey](#recipes-dart_chocolatey)
+ * [dart/docker](#recipes-dart_docker)
+ * [dart/external](#recipes-dart_external)
+ * [dart/flutter_engine](#recipes-dart_flutter_engine)
+ * [dart/forward_branch](#recipes-dart_forward_branch)
+ * [dart/gclient](#recipes-dart_gclient)
+ * [dart/linearize](#recipes-dart_linearize)
+ * [dart/neo](#recipes-dart_neo)
+ * [dart/package_co19](#recipes-dart_package_co19)
+ * [dart:examples/example](#recipes-dart_examples_example)
+ * [dart:examples/example-get_secret](#recipes-dart_examples_example-get_secret)
+## Recipe Modules
+
+### *recipe_modules* / [dart](/recipe_modules/dart)
+
+[DEPS](/recipe_modules/dart/__init__.py#5): [build/goma][build/recipe_modules/goma], [build/swarming\_client][build/recipe_modules/swarming_client], [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/gerrit][depot_tools/recipe_modules/gerrit], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/service\_account][recipe_engine/recipe_modules/service_account], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/swarming][recipe_engine/recipe_modules/swarming]
+
+#### **class [DartApi](/recipe_modules/dart/api.py#40)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
+
+Recipe module for code commonly used in dart recipes.
+
+Shouldn't be used elsewhere.
+
+— **def [build](/recipe_modules/dart/api.py#108)(self, build_args=None, name='build dart'):**
+
+Builds dart using the specified build_args
+
+— **def [checkout](/recipe_modules/dart/api.py#44)(self, clobber=False):**
+
+Checks out the dart code and prepares it for building.
+
+— **def [collect\_all](/recipe_modules/dart/api.py#281)(self, steps):**
+
+Collects the results of a sharded test run.
+
+— **def [commit\_id](/recipe_modules/dart/api.py#101)(self):**
+
+The commit hash of a CI build or the patch set of a CQ build
+
+— **def [dart\_executable](/recipe_modules/dart/api.py#95)(self):**
+
+Returns the path to the checked-in SDK dart executable.
+
+— **def [delete\_debug\_log](/recipe_modules/dart/api.py#556)(self):**
+
+Deletes the debug log file
+
+— **def [download\_browser](/recipe_modules/dart/api.py#827)(self, runtime, version):**
+
+— **def [download\_parent\_isolate](/recipe_modules/dart/api.py#155)(self):**
+
+— **def [get\_secret](/recipe_modules/dart/api.py#64)(self, name):**
+
+Decrypts the specified secret and returns the location of the result
+
+— **def [kill\_tasks](/recipe_modules/dart/api.py#87)(self, ok_ret='any'):**
+
+Kills leftover tasks from previous runs or steps.
+
+— **def [read\_debug\_log](/recipe_modules/dart/api.py#544)(self):**
+
+Reads the debug log file
+
+— **def [shard](/recipe_modules/dart/api.py#172)(self, name, isolate_hash, test_args, os, cpu='x86-64', pool='dart.tests', num_shards=0, last_shard_is_local=False, cipd_ensure_file=None, ignore_failure=False):**
+
+Runs test.py in the given isolate, sharded over several swarming tasks.
+Returns the created tasks, which can be collected with collect_all().
+
+— **def [test](/recipe_modules/dart/api.py#562)(self, test_data):**
+
+Reads the test-matrix.json file in checkout and runs each step listed
+in the file.
+
+— **def [upload\_isolate](/recipe_modules/dart/api.py#132)(self, isolate_fileset):**
+
+Builds an isolate
+## Recipes
+
+### *recipes* / [dart/chocolatey](/recipes/dart/chocolatey.py)
+
+[DEPS](/recipes/dart/chocolatey.py#7): [dart](#recipe_modules-dart), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/url][recipe_engine/recipe_modules/url]
+
+— **def [RunSteps](/recipes/dart/chocolatey.py#25)(api):**
+### *recipes* / [dart/docker](/recipes/dart/docker.py)
+
+[DEPS](/recipes/dart/docker.py#7): [build/zip][build/recipe_modules/zip], [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [RunSteps](/recipes/dart/docker.py#20)(api):**
+### *recipes* / [dart/external](/recipes/dart/external.py)
+
+[DEPS](/recipes/dart/external.py#7): [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [RunSteps](/recipes/dart/external.py#13)(api):**
+### *recipes* / [dart/flutter\_engine](/recipes/dart/flutter_engine.py)
+
+[DEPS](/recipes/dart/flutter_engine.py#15): [build/goma][build/recipe_modules/goma], [dart](#recipe_modules-dart), [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [AnalyzeDartUI](/recipes/dart/flutter_engine.py#72)(api, checkout_dir):**
+
+— **def [Build](/recipes/dart/flutter_engine.py#55)(api, checkout_dir, config, \*targets):**
+
+— **def [BuildAndTest](/recipes/dart/flutter_engine.py#351)(api, start_dir, checkout_dir, flutter_rev):**
+
+— **def [BuildLinux](/recipes/dart/flutter_engine.py#107)(api, checkout_dir):**
+
+— **def [BuildLinuxAndroidArm](/recipes/dart/flutter_engine.py#89)(api, checkout_dir):**
+
+— **def [BuildLinuxAndroidx86](/recipes/dart/flutter_engine.py#82)(api, checkout_dir):**
+
+— **def [CopyArtifacts](/recipes/dart/flutter_engine.py#179)(api, engine_src, cached_dest, file_paths):**
+
+— **def [GetCheckout](/recipes/dart/flutter_engine.py#130)(api):**
+
+— **def [KillTasks](/recipes/dart/flutter_engine.py#47)(api, checkout_dir, ok_ret='any'):**
+
+Kills leftover tasks from previous runs or steps.
+
+— **def [RunGN](/recipes/dart/flutter_engine.py#64)(api, checkout_dir, \*args):**
+
+— **def [RunSteps](/recipes/dart/flutter_engine.py#312)(api):**
+
+— **def [TestEngine](/recipes/dart/flutter_engine.py#77)(api, checkout_dir):**
+
+— **def [TestFlutter](/recipes/dart/flutter_engine.py#266)(api, start_dir, just_built_dart_sdk):**
+
+— **def [TestObservatory](/recipes/dart/flutter_engine.py#119)(api, checkout_dir):**
+
+— **def [UpdateCachedEngineArtifacts](/recipes/dart/flutter_engine.py#192)(api, flutter, engine_src):**
+### *recipes* / [dart/forward\_branch](/recipes/dart/forward_branch.py)
+
+[DEPS](/recipes/dart/forward_branch.py#8): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [RunSteps](/recipes/dart/forward_branch.py#19)(api):**
+### *recipes* / [dart/gclient](/recipes/dart/gclient.py)
+
+[DEPS](/recipes/dart/gclient.py#7): [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
+
+— **def [RunSteps](/recipes/dart/gclient.py#15)(api):**
+### *recipes* / [dart/linearize](/recipes/dart/linearize.py)
+
+[DEPS](/recipes/dart/linearize.py#8): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
+
+— **def [RunSteps](/recipes/dart/linearize.py#24)(api):**
+### *recipes* / [dart/neo](/recipes/dart/neo.py)
+
+[DEPS](/recipes/dart/neo.py#5): [build/swarming\_client][build/recipe_modules/swarming_client], [dart](#recipe_modules-dart), [depot\_tools/osx\_sdk][depot_tools/recipe_modules/osx_sdk], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [RunSteps](/recipes/dart/neo.py#53)(api):**
+### *recipes* / [dart/package\_co19](/recipes/dart/package_co19.py)
+
+[DEPS](/recipes/dart/package_co19.py#8): [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
+
+— **def [RunSteps](/recipes/dart/package_co19.py#18)(api):**
+### *recipes* / [dart:examples/example](/recipe_modules/dart/examples/example.py)
+
+[DEPS](/recipe_modules/dart/examples/example.py#18): [dart](#recipe_modules-dart), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/swarming][recipe_engine/recipe_modules/swarming]
+
+— **def [RunSteps](/recipe_modules/dart/examples/example.py#312)(api):**
+### *recipes* / [dart:examples/example-get\_secret](/recipe_modules/dart/examples/example-get_secret.py)
+
+[DEPS](/recipe_modules/dart/examples/example-get_secret.py#7): [dart](#recipe_modules-dart), [recipe\_engine/platform][recipe_engine/recipe_modules/platform]
+
+— **def [RunSteps](/recipe_modules/dart/examples/example-get_secret.py#12)(api):**
+
+[build/recipe_modules/goma]: https://chromium.googlesource.com/chromium/tools/build.git/+/0ebaafb94cf8602809cf3f1d69e1302925295e67/scripts/slave/README.recipes.md#recipe_modules-goma
+[build/recipe_modules/swarming_client]: https://chromium.googlesource.com/chromium/tools/build.git/+/0ebaafb94cf8602809cf3f1d69e1302925295e67/scripts/slave/README.recipes.md#recipe_modules-swarming_client
+[build/recipe_modules/zip]: https://chromium.googlesource.com/chromium/tools/build.git/+/0ebaafb94cf8602809cf3f1d69e1302925295e67/scripts/slave/README.recipes.md#recipe_modules-zip
+[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-bot_update
+[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-depot_tools
+[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-gclient
+[depot_tools/recipe_modules/gerrit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-gerrit
+[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-git
+[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-gitiles
+[depot_tools/recipe_modules/gsutil]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-gsutil
+[depot_tools/recipe_modules/osx_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-osx_sdk
+[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/851532894fe976bfe62e6c3ba15de4904c6f3121/recipes/README.recipes.md#recipe_modules-tryserver
+[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-buildbucket
+[recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-cipd
+[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-context
+[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-file
+[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-json
+[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-path
+[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-platform
+[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-properties
+[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-python
+[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-raw_io
+[recipe_engine/recipe_modules/runtime]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-runtime
+[recipe_engine/recipe_modules/service_account]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-service_account
+[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-step
+[recipe_engine/recipe_modules/swarming]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-swarming
+[recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/README.recipes.md#recipe_modules-url
+[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/33fed4343ba9723f8d4e16dd04978f27490f0a57/recipe_engine/recipe_api.py#871
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
new file mode 100644
index 0000000..3772365
--- /dev/null
+++ b/infra/config/recipes.cfg
@@ -0,0 +1,34 @@
+{
+ "api_version": 2,
+ "autoroll_recipe_options": {
+ "nontrivial": {
+ "automatic_commit_dry_run": true,
+ "set_autosubmit": true
+ },
+ "trivial": {
+ "automatic_commit": true,
+ "tbr_emails": [
+ "athom@google.com"
+ ]
+ }
+ },
+ "canonical_repo_url": "https://dart.googlesource.com/recipes.git",
+ "deps": {
+ "build": {
+ "branch": "master",
+ "revision": "0ebaafb94cf8602809cf3f1d69e1302925295e67",
+ "url": "https://chromium.googlesource.com/chromium/tools/build.git"
+ },
+ "depot_tools": {
+ "branch": "master",
+ "revision": "851532894fe976bfe62e6c3ba15de4904c6f3121",
+ "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
+ },
+ "recipe_engine": {
+ "branch": "master",
+ "revision": "33fed4343ba9723f8d4e16dd04978f27490f0a57",
+ "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git"
+ }
+ },
+ "repo_name": "dart"
+}
diff --git a/recipe_modules/dart/__init__.py b/recipe_modules/dart/__init__.py
new file mode 100644
index 0000000..46efbc3
--- /dev/null
+++ b/recipe_modules/dart/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2019 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.
+
+DEPS = [
+ 'depot_tools/bot_update',
+ 'depot_tools/depot_tools',
+ 'depot_tools/gclient',
+ 'depot_tools/gerrit',
+ 'depot_tools/git',
+ 'depot_tools/gsutil',
+ 'depot_tools/tryserver',
+ 'build/goma',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/cipd',
+ 'recipe_engine/context',
+ 'recipe_engine/file',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+ 'recipe_engine/python',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/service_account',
+ 'recipe_engine/step',
+ 'recipe_engine/swarming',
+ 'build/swarming_client',
+]
diff --git a/recipe_modules/dart/api.py b/recipe_modules/dart/api.py
new file mode 100644
index 0000000..c0f261d
--- /dev/null
+++ b/recipe_modules/dart/api.py
@@ -0,0 +1,1143 @@
+# Copyright 2018 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.
+
+from recipe_engine import recipe_api
+from collections import OrderedDict
+import json, re
+
+BLACKLIST = (
+ r'(^(out|xcodebuild)[/\\](Release|Debug|Product)\w*[/\\]' +
+ r'(clang_\w*[/\\])?(generated_tests|obj)[/\\])' +
+ r'|(^tools[/\\]sdks)')
+# TODO(athom): move to third_party when swarming_client.path has a setter
+SWARMING_CLIENT_PATH = 'tools/swarming_client'
+SWARMING_CLIENT_REPO = (
+ 'https://chromium.googlesource.com/infra/luci/client-py.git')
+SWARMING_CLIENT_REV = '88229872dd17e71658fe96763feaa77915d8cbd6'
+
+TEST_PY_PATH = 'tools/test.py'
+BUILD_PY_PATH = 'tools/build.py'
+GN_PY_PATH = 'tools/gn.py'
+
+CHROME_PATH_ARGUMENT = {
+ 'linux': '--chrome=browsers/chrome/google-chrome',
+ 'mac': '--chrome=browsers/Google Chrome.app/Contents/MacOS/Google Chrome',
+ 'win': '--chrome=browsers\\Chrome\\Application\\chrome.exe'
+}
+
+FIREFOX_PATH_ARGUMENT = {
+ 'linux': '--firefox=browsers/firefox/firefox',
+ 'mac': '--firefox=browsers/Firefox.app/Contents/MacOS/firefox',
+ 'win': '--firefox=browsers\\firefox\\firefox.exe'
+}
+
+CO19_PACKAGE = 'dart/third_party/co19'
+CO19_LEGACY_PACKAGE = 'dart/third_party/co19/legacy'
+CIPD_SERVER_URL = 'https://chrome-infra-packages.appspot.com'
+
+
+class DartApi(recipe_api.RecipeApi):
+ """Recipe module for code commonly used in dart recipes.
+
+ Shouldn't be used elsewhere."""
+ def checkout(self, clobber=False):
+ """Checks out the dart code and prepares it for building."""
+ self.m.gclient.set_config('dart')
+ sdk = self.m.gclient.c.solutions[0]
+ sdk.custom_deps['sdk/%s' % SWARMING_CLIENT_PATH] = \
+ '%s@%s' % (SWARMING_CLIENT_REPO, SWARMING_CLIENT_REV)
+ self.m.goma.ensure_goma()
+
+ with self.m.context(
+ cwd=self.m.path['cache'].join('builder'),
+ env={'GOMA_DIR': self.m.goma.goma_dir}):
+ self.m.bot_update.ensure_checkout()
+ with self.m.context(cwd=self.m.path['checkout']):
+ if clobber:
+ self.m.python('clobber',
+ self.m.path['checkout'].join(
+ 'tools', 'clean_output_directory.py'))
+ self.m.gclient.runhooks()
+
+
+ def get_secret(self, name):
+ """Decrypts the specified secret and returns the location of the result"""
+ cloudkms_dir = self.m.path['start_dir'].join('cloudkms')
+ cloudkms_package = 'infra/tools/luci/cloudkms/${platform}'
+ self.m.cipd.ensure(
+ cloudkms_dir,
+ self.m.cipd.EnsureFile().add_package(cloudkms_package, 'latest'))
+
+ with self.m.context(cwd=self.m.path['cleanup']):
+ file_name = '%s.encrypted' % name
+ self.m.gsutil.download('dart-ci-credentials', file_name, file_name)
+
+ executable_suffix = '.exe' if self.m.platform.name == 'win' else ''
+ secret_key = self.m.path['cleanup'].join('%s.key' % name)
+ self.m.step('cloudkms get key',
+ [cloudkms_dir.join('cloudkms%s' % executable_suffix), 'decrypt',
+ '-input', file_name,
+ '-output', secret_key,
+ 'projects/dart-ci/locations/'
+ 'us-central1/keyRings/dart-ci/cryptoKeys/dart-ci'])
+ return secret_key
+
+
+ def kill_tasks(self, ok_ret='any'):
+ """Kills leftover tasks from previous runs or steps."""
+ self.m.python('kill processes',
+ self.m.path['checkout'].join('tools', 'task_kill.py'),
+ args=['--kill_browsers=True', '--kill_vsbuild=True'],
+ ok_ret=ok_ret)
+
+
+ def dart_executable(self):
+ """Returns the path to the checked-in SDK dart executable."""
+ executable = 'dart.exe' if self.m.platform.name == 'win' else 'dart'
+ return self.m.path['checkout'].join(
+ 'tools','sdks', 'dart-sdk', 'bin', executable)
+
+ def commit_id(self):
+ """The commit hash of a CI build or the patch set of a CQ build"""
+ return str(self.m.buildbucket.gitiles_commit.id or 'refs/changes/%s/%s' %
+ (self.m.buildbucket.build.input.gerrit_changes[0].change,
+ self.m.buildbucket.build.input.gerrit_changes[0].patchset))
+
+
+ def build(self, build_args=None, name='build dart'):
+ """Builds dart using the specified build_args"""
+ if not build_args: # pragma: no cover
+ build_args = []
+ build_args = build_args + ['--no-start-goma', '-j200']
+ with self.m.depot_tools.on_path(), self.m.context(
+ cwd=self.m.path['checkout'], env={'GOMA_DIR': self.m.goma.goma_dir}):
+ self.kill_tasks()
+ build_exit_status = None
+ try:
+ self.m.goma.start()
+ try:
+ with self.m.context(infra_steps=False):
+ self.m.python(
+ name,
+ self.m.path['checkout'].join('tools', 'build.py'),
+ args=build_args,
+ timeout=50 * 60)
+ finally:
+ build_exit_status = self.m.step.active_result.retcode
+ finally:
+ self.m.goma.stop(build_exit_status=build_exit_status)
+
+
+ def upload_isolate(self, isolate_fileset):
+ """Builds an isolate"""
+ # TODO(athom): Use upstream isolated recipe. https://crbug.com/944902
+ if isolate_fileset == self.m.properties.get('parent_fileset_name', None):
+ return self.m.properties.get('parent_fileset')
+ step_result = self.m.python(
+ 'upload testing fileset %s' % isolate_fileset,
+ self.m.swarming_client.path.join('isolate.py'),
+ args= ['archive',
+ '--blacklist=%s' % BLACKLIST,
+ '--ignore_broken_items', # TODO(athom) find a way to avoid that
+ '-I', 'isolateserver.appspot.com',
+ '--namespace', 'default-gzip',
+ '-i%s' % self.m.path['checkout'].join('%s' % isolate_fileset),
+ '-s%s' % self.m.path['checkout'].join(
+ '%s.isolated' % isolate_fileset)],
+ stdout=self.m.raw_io.output('out'))
+ isolate_hash = step_result.stdout.strip()[:40]
+ step_result.presentation.step_text = 'swarming fileset hash: %s' % (
+ isolate_hash)
+ return isolate_hash
+
+
+ def download_parent_isolate(self):
+ # TODO(athom): Use upstream isolated recipe. https://crbug.com/944902
+ self.m.path['checkout'] = self.m.path['cleanup']
+ isolate_hash = self.m.properties['parent_fileset']
+ fileset_name = self.m.properties['parent_fileset_name']
+ with self.m.context(cwd=self.m.path['cleanup']):
+ self.m.python(
+ 'downloading fileset %s' % fileset_name,
+ self.m.swarming_client.path.join('isolateserver.py'),
+ args= ['download',
+ '-I', 'isolateserver.appspot.com',
+ '--namespace', 'default-gzip',
+ '-s%s' % isolate_hash,
+ '--target=.'],
+ stdout=self.m.raw_io.output('out'))
+
+
+ def shard(self,
+ name,
+ isolate_hash,
+ test_args,
+ os,
+ cpu='x86-64',
+ pool='dart.tests',
+ num_shards=0,
+ last_shard_is_local=False,
+ cipd_ensure_file=None,
+ ignore_failure=False):
+ """Runs test.py in the given isolate, sharded over several swarming tasks.
+ Returns the created tasks, which can be collected with collect_all().
+ """
+ assert(num_shards > 0)
+ if not cipd_ensure_file: # pragma: no cover
+ cipd_ensure_file = self.m.cipd.EnsureFile()
+ cipd_ensure_file.add_package(
+ 'infra/tools/luci/vpython/${platform}',
+ 'git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a',
+ 'cipd_bin_packages')
+ cipd_ensure_file.add_package(
+ 'infra/tools/luci/vpython-native/${platform}',
+ 'git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a',
+ 'cipd_bin_packages')
+ cipd_ensure_file.add_package('infra/3pp/tools/cpython/${platform}',
+ 'version:2.7.17.chromium.24',
+ 'cipd_bin_packages/cpython')
+ cipd_ensure_file.add_package('infra/3pp/tools/cpython3/${platform}',
+ 'version:3.8.1rc1.chromium.10',
+ 'cipd_bin_packages/cpython3')
+ path_prefixes = [
+ 'cipd_bin_packages',
+ 'cipd_bin_packages/bin',
+ 'cipd_bin_packages/cpython',
+ 'cipd_bin_packages/cpython/bin',
+ 'cipd_bin_packages/cpython3',
+ 'cipd_bin_packages/cpython3/bin',
+ ]
+
+ tasks = []
+ # TODO(athom) use built-in sharding to remove for loop
+ for shard in range(num_shards):
+ if last_shard_is_local and shard == num_shards - 1:
+ break
+
+ cmd = ((test_args or []) + [
+ '--shards=%s' % num_shards,
+ '--shard=%s' % (shard + 1), '--output-directory=${ISOLATED_OUTDIR}'
+ ])
+
+ # TODO(crbug/1018836): Use distro specific name instead of Linux.
+ os_names = {
+ 'android': 'Android',
+ 'linux': 'Linux',
+ 'mac': 'Mac',
+ 'win': 'Windows',
+ }
+
+ dimensions = {
+ 'os': os_names.get(os, os),
+ 'cpu': cpu,
+ 'pool': pool,
+ 'gpu': None,
+ }
+
+ task_request = (
+ self.m.swarming.task_request().with_name(
+ '%s_shard_%s' % (name, (shard + 1))).
+ # Set a priority lower than any builder, to prioritize shards.
+ with_priority(25))
+ if ignore_failure:
+ task_request = task_request.with_tags({'optional': ['true']})
+
+ task_slice = task_request[0] \
+ .with_cipd_ensure_file(cipd_ensure_file) \
+ .with_command(cmd) \
+ .with_containment_type('AUTO') \
+ .with_dimensions(**dimensions) \
+ .with_env_prefixes(PATH=path_prefixes) \
+ .with_env_vars(VPYTHON_VIRTUALENV_ROOT='cache/vpython') \
+ .with_execution_timeout_secs(3600) \
+ .with_expiration_secs(3600) \
+ .with_isolated(isolate_hash) \
+ .with_io_timeout_secs(1200) \
+ .with_named_caches({ 'vpython' : 'cache/vpython' })
+
+ if 'shard_timeout' in self.m.properties:
+ task_slice = (task_slice.with_execution_timeout_secs(
+ int(self.m.properties['shard_timeout'])))
+
+ task_request = task_request.with_slice(0, task_slice)
+ tasks.append(task_request)
+ return self.m.swarming.trigger('trigger shards for %s' % name, tasks)
+
+
+ def _release_builder(self):
+ """Boolean that reports whether the builder is on the
+ dev or stable channel. Some steps are only run on the
+ master and try builders."""
+ return (self.m.buildbucket.builder_name.endswith('-dev') or
+ self.m.buildbucket.builder_name.endswith('-stable'))
+
+ def _try_builder(self):
+ """Boolean that reports whether this a try builder.
+ Some steps are not run on the try builders."""
+ return self.m.buildbucket.builder_name.endswith('-try')
+
+
+ def collect_all(self, steps):
+ """Collects the results of a sharded test run."""
+ # Defer results in case one of the shards has a non-zero exit code.
+ with self.m.step.defer_results():
+ # TODO(athom) collect all the output, and present as a single step
+ for step in steps:
+ tasks = step.tasks
+ step.tasks = []
+ for shard in tasks:
+ self._collect(step, shard)
+
+ def _collect(self, step, task):
+ output_dir = self.m.path.mkdtemp()
+ # Every shard is only a single task in swarming
+ task_result = self.m.swarming.collect(task.name, [task], output_dir)[0]
+ # Swarming uses the task's id as a subdirectory name
+ output_dir = output_dir.join(task.id)
+ try:
+ task_result.analyze()
+ except self.m.step.InfraFailure as failure:
+ if (task_result.state == self.m.swarming.TaskState.COMPLETED and
+ not step.is_test_step):
+ self.m.step.active_result.presentation.status = 'FAILURE'
+ raise self.m.step.StepFailure(failure.reason)
+ else:
+ self.m.step.active_result.presentation.status = 'EXCEPTION'
+ raise
+ except self.m.step.StepFailure as failure:
+ assert (task_result.state == self.m.swarming.TaskState.TIMED_OUT)
+ self.m.step.active_result.presentation.status = 'EXCEPTION'
+ raise self.m.step.InfraFailure(failure.reason)
+
+ bot_name = task_result.bot_id
+ task_name = task_result.name
+ self._add_results_and_links(output_dir, bot_name, task_name, step.results)
+
+ def _add_results_and_links(self, output_dir, bot_name, task_name, results):
+ filenames = ('logs.json', 'results.json')
+ for filename in filenames:
+ file_path = output_dir.join(filename)
+ self.m.path.mock_add_paths(file_path)
+ if self.m.path.exists(file_path):
+ contents = self.m.file.read_text(
+ 'read %s for %s' % (filename, task_name), file_path)
+ if filename == 'results.json':
+ results.add_results(bot_name, contents)
+ if filename == 'logs.json':
+ results.logs += contents
+
+
+ def _get_latest_tested_commit(self):
+ builder = self._get_builder_dir()
+ # Note: The pre-approval script relies on this step being named
+ # gsutil_find_latest_build inside the nested step download_previous_results.
+ latest_result = self.m.gsutil.download(
+ 'dart-test-results',
+ 'builders/%s/latest' % builder,
+ self.m.raw_io.output_text(name='latest', add_output_log=True),
+ name='find latest build',
+ ok_ret='any') # TODO(athom): succeed only if file does not exist
+ latest = latest_result.raw_io.output_texts.get('latest')
+ revision = None
+ if latest:
+ latest = latest.strip()
+ revision_result = self.m.gsutil.download(
+ 'dart-test-results',
+ 'builders/%s/%s/revision' % (builder, latest),
+ self.m.raw_io.output_text(name='revision', add_output_log=True),
+ name='get revision for latest build',
+ ok_ret='any') # TODO(athom): succeed only if file does not exist
+ revision = revision_result.raw_io.output_texts.get('revision')
+
+ return (latest, revision)
+
+
+ def _get_builder_dir(self):
+ builder = self.m.buildbucket.builder_name
+ if builder.endswith('-try'):
+ builder = builder[:-4]
+ return str(builder)
+
+
+ def _download_results(self, latest):
+ filenames = ['results.json', 'flaky.json']
+ builder = self._get_builder_dir()
+ results_path = self.m.path['checkout'].join('LATEST')
+ self.m.file.ensure_directory('ensure LATEST dir', results_path)
+ for filename in filenames:
+ self.m.file.write_text(
+ 'ensure %s exists' % filename, results_path.join(filename), '')
+ if latest:
+ self.m.gsutil.download(
+ 'dart-test-results',
+ 'builders/%s/%s/*.json' % (builder, latest),
+ results_path,
+ name='download previous results')
+
+
+ def _deflake_results(self, step, global_config):
+ step.deflake_list = self.m.step(
+ 'list tests to deflake (%s)' % step.name, [
+ self.dart_executable(), 'tools/bots/compare_results.dart',
+ '--flakiness-data', 'LATEST/flaky.json', '--changed', '--passing',
+ '--failing', '--count', '50', 'LATEST/results.json',
+ self.m.raw_io.input_text(step.results.results)
+ ],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ if step.deflake_list:
+ self._run_step(step, global_config)
+
+
+ def _update_flakiness_information(self, results_str):
+ flaky_json = self.m.step('update flakiness information', [
+ self.dart_executable(), 'tools/bots/update_flakiness.dart', '-i',
+ 'LATEST/flaky.json', '-o',
+ self.m.raw_io.output_text(name='flaky.json', add_output_log=True),
+ '--build-id', self.m.buildbucket.build.id, '--commit',
+ self.m.buildbucket.gitiles_commit.id,
+ self.m.raw_io.input_text(results_str, name='results.json')
+ ])
+ return flaky_json.raw_io.output_texts.get('flaky.json')
+
+
+ def _upload_results_to_cloud(self, flaky_json_str, logs_str, results_str):
+ builder = str(self.m.buildbucket.builder_name)
+ build_revision = str(self.m.buildbucket.gitiles_commit.id)
+ build_number = str(self.m.buildbucket.build.number)
+ self._upload_result(builder, build_number, 'revision', build_revision)
+ self._upload_result(builder, build_number, 'logs.json', logs_str)
+ self._upload_result(builder, build_number, 'results.json', results_str)
+ self._upload_result(builder, build_number, 'flaky.json', flaky_json_str)
+ if not (builder.endswith('dev') or builder.endswith('stable')):
+ self._upload_result('current_flakiness', 'single_directory',
+ 'flaky_current_%s.json' % builder, flaky_json_str)
+ # Update "latest" file
+ new_latest = self.m.raw_io.input_text(build_number, name='latest')
+ self.m.gsutil.upload(
+ new_latest,
+ 'dart-test-results',
+ 'builders/%s/%s' % (builder, 'latest'),
+ name='update "latest" reference')
+
+
+ def _upload_result(self, builder, build_number, filename, result_str):
+ self.m.gsutil.upload(
+ self.m.raw_io.input_text(str(result_str), name=filename),
+ 'dart-test-results',
+ 'builders/%s/%s/%s' % (builder, build_number, filename),
+ name='upload %s' % filename)
+
+
+ def _publish_results(self, results_str):
+ if self._release_builder():
+ return
+ access_token = self.m.service_account.default().get_access_token(
+ ['https://www.googleapis.com/auth/cloud-platform'])
+ self.m.step('publish results to pub/sub', [
+ self.dart_executable(), self.m.path['checkout'].join(
+ 'tools', 'bots', 'post_results_to_pubsub.dart'), '--result_file',
+ self.m.raw_io.input_text(results_str), '--auth_token',
+ self.m.raw_io.input_text(access_token), '--id',
+ self.m.buildbucket.build.id
+ ])
+
+
+ def _report_success(self, results_str):
+ if results_str:
+ access_token = self.m.service_account.default().get_access_token(
+ ['https://www.googleapis.com/auth/cloud-platform'])
+ try:
+ with self.m.context(infra_steps=False):
+ self.m.step('test results', [
+ self.dart_executable(), self.m.path['checkout'].join(
+ 'tools', 'bots', 'get_builder_status.dart'), '-b',
+ self.m.buildbucket.builder_name, '-n',
+ self.m.buildbucket.build.number, '-a',
+ self.m.raw_io.input_text(access_token)
+ ])
+ except self.m.step.StepFailure:
+ result = self.m.step.active_result
+ if result.retcode > 1:
+ # Returns codes other than 1 are infra failures
+ self.m.step.active_result.presentation.status = 'EXCEPTION'
+ raise self.m.step.InfraFailure('failed to get test results')
+ raise
+
+
+ def _extend_results_records(self, results_str, prior_results_path,
+ flaky_json_str, prior_flaky_path, builder_name,
+ build_number, commit_time, commit_id):
+ return self.m.step('add fields to result records', [
+ self.dart_executable(), self.m.path['checkout'].join(
+ 'tools', 'bots', 'extend_results.dart'),
+ self.m.raw_io.input_text(results_str,
+ name='results.json'), prior_results_path,
+ self.m.raw_io.input_text(flaky_json_str, name='flaky.json'),
+ prior_flaky_path, builder_name, build_number, commit_time, commit_id,
+ self.m.raw_io.output_text()
+ ]).raw_io.output_text
+
+
+ def _present_results(self, logs_str, results_str, flaky_json_str):
+ args = [self.dart_executable(),
+ 'tools/bots/compare_results.dart',
+ '--flakiness-data',
+ self.m.raw_io.input_text(flaky_json_str, name='flaky.json'),
+ '--human',
+ '--verbose',
+ self.m.path['checkout'].join('LATEST', 'results.json'),
+ self.m.raw_io.input_text(results_str),
+ ]
+ args_logs = ["--logs",
+ self.m.raw_io.input_text(logs_str, name='logs.json'),
+ "--logs-only"]
+ links = OrderedDict()
+ judgement_args = list(args)
+ judgement_args.append('--judgement')
+ links["new test failures"] = self.m.step(
+ 'find new test failures',
+ args + ["--changed", "--failing"],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ links["new test failures (logs)"] = self.m.step(
+ 'find new test failures (logs)',
+ args + args_logs + ["--changed", "--failing"],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ links["tests that began passing"] = self.m.step(
+ 'find tests that began passing',
+ args + ["--changed", "--passing"],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ judgement_args += ["--changed", "--failing"]
+ if self._try_builder(): # pragma: no cover
+ judgement_args += ["--passing"]
+ else:
+ links["ignored flaky test failure logs"] = self.m.step(
+ 'find ignored flaky test failure logs',
+ args + args_logs + ["--flaky"],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ with self.m.step.defer_results():
+ if self._release_builder():
+ with self.m.context(infra_steps=False):
+ self.m.step('test results', judgement_args)
+ else:
+ # This call runs a step that the following links get added to.
+ self._report_success(results_str)
+
+ # Add more links and logs to the 'test results' step
+ if self._try_builder():
+ # Construct different results links for tryjobs and CI jobs
+ patchset = self.commit_id().replace('refs/changes/', '')
+ log_url = 'https://dart-ci.firebaseapp.com/cl/%s' % patchset
+ else:
+ log_url = (
+ 'https://dart-ci.firebaseapp.com/#commit=%s' % self.commit_id())
+ self.m.step.active_result.presentation.links['Test Results'] = log_url
+ doc_url = 'https://goto.google.com/dart-status-file-free-workflow'
+ self.m.step.active_result.presentation.links['Documentation'] = doc_url
+ # Show only the links with non-empty output (something happened).
+ for link, contents in links.iteritems():
+ if contents != '': # pragma: no cover
+ self.m.step.active_result.presentation.logs[link] = [contents]
+ self.m.step.active_result.presentation.logs['results.json'] = [
+ results_str]
+
+ def read_debug_log(self):
+ """Reads the debug log file"""
+ if self.m.platform.name == 'win':
+ self.m.step('debug log',
+ ['cmd.exe', '/c', 'type', '.debug.log'],
+ ok_ret='any')
+ else:
+ self.m.step('debug log',
+ ['cat', '.debug.log'],
+ ok_ret='any')
+
+
+ def delete_debug_log(self):
+ """Deletes the debug log file"""
+ self.m.file.remove('delete debug log',
+ self.m.path['checkout'].join('.debug.log'))
+
+
+ def test(self, test_data):
+ """Reads the test-matrix.json file in checkout and runs each step listed
+ in the file.
+ """
+ with self.m.context(infra_steps=True):
+ test_matrix_path = self.m.path['checkout'].join('tools', 'bots',
+ 'test_matrix.json')
+ read_json = self.m.json.read(
+ 'read test-matrix.json',
+ test_matrix_path,
+ step_test_data=lambda: self.m.json.test_api.output(test_data))
+ test_matrix = read_json.json.output
+ builder = str(self.m.buildbucket.builder_name)
+ if builder.endswith(('-be', '-try', '-stable', '-dev')):
+ builder = builder[0:builder.rfind('-')]
+ isolate_hashes = {}
+ global_config = test_matrix['global']
+ config = None
+ for c in test_matrix['builder_configurations']:
+ if builder in c['builders']:
+ config = c
+ break
+ if config is None:
+ raise self.m.step.InfraFailure(
+ 'Error, could not find builder by name %s in test-matrix' % builder)
+ self.delete_debug_log()
+ self._write_file_sets(test_matrix['filesets'])
+ self._run_steps(config, isolate_hashes, builder, global_config)
+
+
+ def _write_file_sets(self, filesets):
+ """Writes the fileset to the root of the sdk to allow for swarming to pick
+ up the files and isolate the files.
+ Args:
+ * filesets - Filesets from the test-matrix
+ """
+ for fileset,files in filesets.iteritems():
+ isolate_fileset = { 'variables': { 'files': files } }
+ destination_path = self.m.path['checkout'].join(fileset)
+ self.m.file.write_text('write fileset %s to sdk root' % fileset,
+ destination_path,
+ str(isolate_fileset))
+
+
+ def _build_isolates(self, config, isolate_hashes):
+ """Isolate filesets from all steps in config and populates a dictionary
+ with a mapping from fileset to isolate_hash.
+ Args:
+ * config (dict) - Configuration of the builder, including the steps
+ * isolate_hashes (dict) - A dict that will contain a mapping from
+ fileset name to isolate hash upon completion of this method.
+ """
+ for step in config['steps']:
+ if 'fileset' in step and step['fileset'] not in isolate_hashes:
+ isolate_hash = self.upload_isolate(step['fileset'])
+ isolate_hashes[step['fileset']] = isolate_hash
+
+
+ def _get_option(self, builder_fragments, options, default_value):
+ """Gets an option from builder_fragments in options, or returns the default
+ value."""
+ intersection = set(builder_fragments) & set(options)
+ if len(intersection) == 1:
+ return intersection.pop()
+ return default_value
+
+
+ def _get_specific_argument(self, arguments, options):
+ for arg in arguments:
+ if isinstance(arg, basestring):
+ for option in options:
+ if arg.startswith(option):
+ return arg[len(option):]
+ return None
+
+
+ def _has_specific_argument(self, arguments, options):
+ return self._get_specific_argument(arguments, options) is not None
+
+
+ def _run_steps(self, config, isolate_hashes, builder_name, global_config):
+ """Executes all steps from a json test-matrix builder entry"""
+ # Find information from the builder name. It should be in the form
+ # <info>-<os>-<mode>-<arch>-<runtime> or <info>-<os>-<mode>-<arch>.
+ builder_fragments = builder_name.split('-')
+ system = self._get_option(
+ builder_fragments,
+ ['android', 'linux', 'mac', 'win'],
+ 'linux')
+ mode = self._get_option(
+ builder_fragments,
+ ['debug', 'release', 'product'],
+ 'release')
+ arch = self._get_option(builder_fragments, [
+ 'ia32', 'x64', 'arm', 'armv6', 'armv5te', 'arm64', 'arm_x64', 'simarm',
+ 'simarmv6', 'simarmv5te', 'simarm64', 'simdbc', 'simdbc64', 'armsimdbc',
+ 'armsimdbc64', 'simarm_x64'
+ ], 'x64')
+ runtime = self._get_option(
+ builder_fragments,
+ ['none', 'd8', 'jsshell', 'edge', 'ie11', 'firefox', 'safari', 'chrome'],
+ None)
+ with self.m.context(cwd=self.m.path['checkout']):
+ checked_in_sdk_version = self.m.gclient('get checked-in SDK version',
+ ['getdep', '-r', 'sdk/tools/sdks:dart/dart-sdk/${platform}'],
+ stdout=self.m.raw_io.output_text(add_output_log=True)).stdout
+ # TODO(athom): Remove co19_2 legacy support when the test suite has been
+ # deleted from all release branches.
+ filter_arg = '--filter=%s/%s' % (CIPD_SERVER_URL, CO19_PACKAGE)
+ result = self.m.gclient(
+ 'get co19 versions', [
+ 'revinfo', filter_arg, filter_arg + '/legacy', '--output-json',
+ self.m.json.output(name='revinfo')
+ ],
+ step_test_data=self._canned_revinfo)
+ revinfo = result.json.outputs.get('revinfo')
+ if not revinfo:
+ raise recipe_api.InfraFailure('failed to retrieve co19 versions')
+ co19_version = None
+ if 'sdk/tests/co19_2/src:' + CO19_PACKAGE in revinfo:
+ # legacy mode, DEPS doesn't have co19, only co19_2
+ co19_2_version = revinfo['sdk/tests/co19_2/src:' + CO19_PACKAGE]['rev']
+ co19_2_package = CO19_PACKAGE
+ else:
+ co19_2_package = CO19_LEGACY_PACKAGE
+ co19_2_version = revinfo['sdk/tests/co19_2/src:' +
+ CO19_LEGACY_PACKAGE]['rev']
+ co19_version = revinfo['sdk/tests/co19/src:' + CO19_PACKAGE]['rev']
+
+ out = 'xcodebuild' if self.m.platform.name == 'mac' else 'out'
+ build_root = out + '/' + mode.capitalize() + arch.upper()
+ environment = {
+ 'system': system,
+ 'mode': mode,
+ 'arch': arch,
+ 'build_root': build_root,
+ 'copy-coredumps': False,
+ 'checked_in_sdk_version': checked_in_sdk_version,
+ 'co19_version': co19_version,
+ 'co19_2_version': co19_2_version,
+ 'co19_2_package': co19_2_package,
+ 'out': out
+ }
+ # Linux and vm-*-win builders should use copy-coredumps
+ environment['copy-coredumps'] = (system == 'linux' or system == 'mac' or
+ (system.startswith('win') and builder_name.startswith('vm-')))
+
+ if runtime is not None:
+ if runtime == 'ff':
+ runtime = 'firefox' # pragma: no cover
+ environment['runtime'] = runtime
+ if runtime == 'chrome' or runtime == 'firefox':
+ self.download_browser(runtime, global_config[runtime])
+ test_steps = []
+ sharded_steps = []
+ try:
+ with self.m.step.defer_results():
+ for index, step_json in enumerate(config['steps']):
+ step = self.TestMatrixStep(self.m, builder_name, config, step_json,
+ environment, index)
+ if step.fileset:
+ # We build isolates here, every time we see fileset, to wait for the
+ # building of Dart, which may be included in the fileset.
+ self._build_isolates(config, isolate_hashes)
+ step.isolate_hash = isolate_hashes[step.fileset]
+
+ if not step.is_trigger and step.is_test_step:
+ test_steps.append(step)
+ if step.isolate_hash and not (step.local_shard and step.shards < 2):
+ sharded_steps.append(step)
+ self._run_step(step, global_config)
+ self.collect_all(sharded_steps)
+ except recipe_api.AggregatedStepFailure as failure:
+ if _has_infra_failure(failure):
+ raise recipe_api.InfraFailure(failure.reason)
+ else:
+ raise
+ self._process_test_results(test_steps, global_config)
+
+
+ @recipe_api.non_step
+ def _run_step(self, step, global_config):
+ with self.m.depot_tools.on_path(), self.m.context(
+ cwd=self.m.path['checkout'],
+ env=step.environment_variables):
+ if step.is_gn_step:
+ with self.m.context(infra_steps=False):
+ self._run_gn(step)
+ elif step.is_build_step:
+ self._run_build(step)
+ elif step.is_trigger:
+ self._run_trigger(step)
+ elif step.is_test_py_step:
+ self._run_test_py(step, global_config)
+ else:
+ with self.m.context(infra_steps=step.is_test_step):
+ self._run_script(step)
+
+
+ @recipe_api.non_step
+ def _run_gn(self, step):
+ mode = step.environment['mode']
+ arch = step.environment['arch']
+ args = step.args
+ if not self._has_specific_argument(args, ['-m', '--mode']):
+ args = ['-m%s' % mode] + args
+ if not self._has_specific_argument(args, ['-a', '--arch']):
+ args = ['-a%s' % arch] + args
+ with self.m.context(env={'GOMA_DIR': self.m.goma.goma_dir}):
+ self.m.python(step.name,
+ self.m.path['checkout'].join('tools', 'gn.py'),
+ args=args)
+
+
+ @recipe_api.non_step
+ def _run_build(self, step):
+ mode = step.environment['mode']
+ arch = step.environment['arch']
+ args = step.args
+ if not self._has_specific_argument(args, ['-m', '--mode']):
+ args = ['-m%s' % mode] + args
+ if not self._has_specific_argument(args, ['-a', '--arch']):
+ args = ['-a%s' % arch] + args
+ deferred_result = self.build(name=step.name, build_args=args)
+ deferred_result.get_result() # raises build errors
+
+
+ def _process_test_results(self, steps, global_config):
+ # If there are no test steps, steps will be empty.
+ if steps:
+ with self.m.context(cwd=self.m.path['checkout']):
+ # Note: The pre-approval script relies on this being a nested step named
+ # download_previous_results that contains gsutil_find_latest_build.
+ with self.m.step.nest('download previous results'):
+ latest, _ = self._get_latest_tested_commit()
+ self._download_results(latest)
+ with self.m.step.nest('deflaking'):
+ for step in steps:
+ if step.is_test_py_step:
+ self._deflake_results(step, global_config)
+ self.collect_all(steps)
+ logs_str = ''.join(
+ (step.results.logs for step in steps))
+ results_str = ''.join(
+ (step.results.results for step in steps))
+ flaky_json_str = self._update_flakiness_information(results_str)
+ results_str = self._extend_results_records(
+ results_str, self.m.path['checkout'].join('LATEST', 'results.json'),
+ flaky_json_str, self.m.path['checkout'].join(
+ 'LATEST', 'flaky.json'), self.m.buildbucket.builder_name,
+ self.m.buildbucket.build.number,
+ self.m.git.get_timestamp(test_data='1234567'), self.commit_id())
+ try:
+ # Try builders do not upload results, only publish to pub/sub
+ with self.m.step.nest('upload new results'):
+ if results_str:
+ self._publish_results(results_str)
+ if not self._try_builder():
+ self._upload_results_to_cloud(flaky_json_str, logs_str,
+ results_str)
+ self._upload_results_to_bq(results_str)
+ finally:
+ self._present_results(logs_str, results_str, flaky_json_str)
+
+
+ def download_browser(self, runtime, version):
+ # Download CIPD package
+ # dart/browsers/<runtime>/${platform} <version>
+ # to directory
+ # [sdk root]/browsers
+ # Shards must install this CIPD package to the same location -
+ # there is an argument to the swarming module task creation api for this.
+ browser_path = self.m.path['checkout'].join('browsers')
+ self.m.file.ensure_directory('create browser cache', browser_path)
+ version_tag = 'version:%s' % version
+ package = 'dart/browsers/%s/${platform}' % runtime
+ ensure_file = self.m.cipd.EnsureFile().add_package(package, version_tag)
+ self.m.cipd.ensure(browser_path, ensure_file)
+ return browser_path
+
+
+ def _upload_results_to_bq(self, results_str):
+ if not results_str:
+ return # pragma: no cover
+ assert(results_str[-1] == '\n')
+
+ bqupload_path = self.m.path['checkout'].join('bqupload')
+ package = r'infra/tools/bqupload/${platform}'
+ ensure_file = self.m.cipd.EnsureFile().add_package(package, 'latest')
+ self.m.cipd.ensure(bqupload_path, ensure_file)
+
+ bqupload = bqupload_path.join('bqupload')
+ cmd = [bqupload , 'dart-ci.results.results']
+ with self.m.step.nest('upload test results to big query'):
+ # Upload at most 1000 lines at once
+ for match in re.finditer(r'(?:.*\n){1,1000}', results_str):
+ chunk = match.group(0)
+ self.m.step(
+ 'upload results chunk to big query',
+ cmd,
+ stdin=self.m.raw_io.input_text(chunk))
+
+
+ def _run_trigger(self, step):
+ trigger_props = {}
+ trigger_props['revision'] = self.m.buildbucket.gitiles_commit.id
+ trigger_props['parent_buildername'] = self.m.buildbucket.builder_name
+ trigger_props['parent_build_id'] = self.m.properties.get('build_id', '')
+ if step.isolate_hash:
+ trigger_props['parent_fileset'] = step.isolate_hash
+ trigger_props['parent_fileset_name'] = step.fileset
+ put_result = self.m.buildbucket.put(
+ [
+ {
+ 'bucket': 'luci.dart.ci',
+ 'parameters': {
+ 'builder_name': builder_name,
+ 'properties': trigger_props,
+ 'changes': [
+ {
+ 'author': {
+ 'email': author,
+ },
+ }
+ for author in self.m.properties.get('blamelist', [])
+ ],
+ },
+ }
+ for builder_name in step.triggered_builders
+ ])
+ self.m.step.active_result.presentation.step_text = step.name
+ for build in put_result.stdout['results']:
+ builder_tag = (
+ x for x in build['build']['tags'] if x.startswith('builder:')).next()
+ builder_name = builder_tag[len('builder:'):]
+ self.m.step.active_result.presentation.links[builder_name] = (
+ build['build']['url'])
+
+
+ def _run_test_py(self, step, global_config):
+ """Runs test.py with default arguments, based on configuration from.
+ Args:
+ * step (TestMatrixStep) - The test-matrix step.
+ * global_config (dict) - The global section from test_matrix.json.
+ Contains version tags for the pinned browsers Firefox and Chrome.
+ """
+ environment = step.environment
+ args = step.args
+ shards = step.shards
+ if step.deflake_list:
+ args = args + ['--repeat=5', '--tests', step.deflake_list]
+ shards = min(shards, 1)
+
+ test_args = [
+ '--progress=status', '--report', '--time', '--silent-failures',
+ '--write-results', '--write-logs'
+ ]
+ test_args.append('--clean-exit')
+ args = test_args + args
+ if environment['copy-coredumps']:
+ args = args + ['--copy-coredumps']
+ # The --chrome flag is added here if the runtime for the bot is
+ # chrome. This also catches the case where there is a specific
+ # argument -r or --runtime. It misses the case where
+ # a recipe calls run_script directly with a test.py command.
+ # The download of the browser from CIPD should also be moved
+ # here (perhaps checking if it is already done) so we catch
+ # specific test steps with runtime chrome in a bot without that
+ # global runtime.
+ ensure_file = self.m.cipd.EnsureFile()
+
+ if any('chrome' in arg for arg in args if isinstance(arg, basestring)):
+ version_tag = 'version:%s' % global_config['chrome']
+ ensure_file.add_package('dart/browsers/chrome/${platform}', version_tag,
+ 'browsers')
+ args = args + [CHROME_PATH_ARGUMENT[environment['system']]]
+ if any('firefox' in arg for arg in args if isinstance(arg, basestring)):
+ version_tag = 'version:%s' % global_config['firefox']
+ ensure_file.add_package('dart/browsers/firefox/${platform}', version_tag,
+ 'browsers')
+ args = args + [FIREFOX_PATH_ARGUMENT[environment['system']]]
+
+ with self.m.step.defer_results():
+ self._run_script(
+ step,
+ args,
+ cipd_ensure_file=ensure_file,
+ ignore_failure=step.deflake_list,
+ shards=shards)
+
+ def _run_script(self,
+ step,
+ args=None,
+ cipd_ensure_file=None,
+ ignore_failure=False,
+ shards=None):
+ """Runs a specific script with current working directory to be checkout. If
+ the runtime (passed in environment) is a browser, and the system is linux,
+ xvfb is used. If an isolate_hash is passed in, it will swarm the command.
+ Args:
+ * step (TestMatrixStep) - The test-matrix step.
+ * args ([str]) - Overrides the arguments specified in the step.
+ * cipd_packages ([tuple]) - list of 3-tuples specifying a cipd package
+ to be downloaded
+ * ignore_failure ([bool]) - Do not turn step red if this script fails.
+ * shards ([int]) - Overrides the number of shards specified in the step.
+ """
+ environment = step.environment
+ if not args:
+ args = step.args
+ if not cipd_ensure_file: # pragma: no cover
+ cipd_ensure_file = self.m.cipd.EnsureFile()
+ cipd_ensure_file.add_package('dart/dart-sdk/${platform}',
+ environment['checked_in_sdk_version'],
+ 'tools/sdks')
+ if any(arg.startswith('co19_2') for arg in args):
+ cipd_ensure_file.add_package(environment['co19_2_package'],
+ environment['co19_2_version'],
+ 'tests/co19_2/src')
+ if any(arg.startswith('co19/') or arg == 'co19' for arg in args):
+ cipd_ensure_file.add_package(CO19_PACKAGE, environment['co19_version'],
+ 'tests/co19/src')
+
+ ok_ret = 'any' if ignore_failure else {0}
+ runtime = environment.get('runtime', None)
+ use_xvfb = (runtime in ['chrome', 'firefox'] and
+ environment['system'] == 'linux')
+ script = step.script
+ is_python = str(script).endswith('.py')
+ xvfb_cmd = []
+ if use_xvfb:
+ xvfb_cmd = [
+ '/usr/bin/xvfb-run',
+ '-a',
+ '--server-args=-screen 0 1024x768x24']
+ if is_python:
+ xvfb_cmd += ['python', '-u']
+
+ step_name = step.name
+ shards = shards or step.shards
+ if step.isolate_hash and not (step.local_shard and shards < 2):
+ with self.m.step.nest('trigger shards for %s' % step_name):
+ arch = environment['arch']
+ cpu = arch if arch.startswith('arm') else 'x86-64'
+ # armsimdbc64 -> arm64 because simdbc isn't a real architecture.
+ cpu = cpu.replace('simdbc', '')
+ # arm_x64 -> arm (x64 gen_snapshot creating 32bit arm code).
+ cpu = cpu.replace('_x64', '')
+ step.tasks += self.shard(
+ step_name,
+ step.isolate_hash,
+ xvfb_cmd + [script] + args,
+ num_shards=shards,
+ last_shard_is_local=step.local_shard,
+ cipd_ensure_file=cipd_ensure_file,
+ ignore_failure=ignore_failure,
+ cpu=cpu,
+ os=environment['system'])
+ if step.local_shard:
+ args = args + [
+ '--shards=%s' % shards,
+ '--shard=%s' % shards,
+ ]
+ step_name = '%s_shard_%s' % (step_name, shards)
+ else:
+ return # Shards have been triggered, no local shard to run.
+
+ output_dir = None
+ if step.is_test_step:
+ output_dir = self.m.path.mkdtemp()
+ args = args + [
+ '--output-directory',
+ output_dir,
+ ]
+
+ cmd = self.m.path['checkout'].join(*script.split('/'))
+ if is_python and not use_xvfb:
+ self.m.python(step_name, cmd, args=args, ok_ret=ok_ret)
+ else:
+ self.m.step(step_name, xvfb_cmd + [cmd] + args, ok_ret=ok_ret)
+ if output_dir:
+ self._add_results_and_links(output_dir, self.m.properties.get('bot_id'),
+ step_name, step.results)
+
+
+ def _canned_revinfo(self):
+ revinfo = {
+ "sdk/tests/co19/src:dart/third_party/co19": {
+ "url": "%s/dart/third_party/co19" % CIPD_SERVER_URL,
+ "rev": "git_revision:co19_hash"
+ },
+ "sdk/tests/co19_2/src:dart/third_party/co19/legacy": {
+ "url": "%s/dart/third_party/co19/legacy" % CIPD_SERVER_URL,
+ "rev": "git_revision:co19_2_hash"
+ }
+ }
+ return self.m.json.test_api.output(name='revinfo', data=revinfo)
+
+ class TestMatrixStep:
+ def __init__(self, m, builder_name, config, step_json, environment, index):
+ self.m = m
+ self.name = step_json['name']
+ self.results = StepResults(m)
+ self.deflake_list = []
+ self.args = step_json.get('arguments', [])
+ self.environment = environment
+ self.tasks = []
+ self.is_trigger = 'trigger' in step_json
+ self.triggered_builders = step_json.get('trigger', [])
+ # If script is not defined, use test.py.
+ self.script = step_json.get('script', TEST_PY_PATH)
+ if self.m.platform.name == 'mac' and self.script.startswith('out/'):
+ self.script = self.script.replace('out/', 'xcodebuild/', 1)
+ is_dart = self.script.endswith('/dart')
+ if is_dart:
+ executable_suffix = '.exe' if self.m.platform.name == 'win' else ''
+ self.script += executable_suffix
+
+ self.is_build_step = self.script.endswith(BUILD_PY_PATH)
+ self.is_gn_step = self.script.endswith(GN_PY_PATH)
+ self.is_test_py_step = self.script.endswith(TEST_PY_PATH)
+ self.is_test_step = (self.is_test_py_step
+ or step_json.get('testRunner', False))
+
+ self.isolate_hash = None
+ self.fileset = step_json.get('fileset')
+ self.shards = step_json.get('shards', 0)
+ self.local_shard = (self.shards > 1 and index == len(config['steps']) - 1
+ and not environment['system'] == 'android')
+
+ self.environment_variables = step_json.get('environment', {})
+
+ channels = {
+ "refs/heads/master": "be",
+ "refs/heads/stable": "stable",
+ "refs/heads/dev": "dev"
+ }
+ channel = channels.get(self.m.buildbucket.gitiles_commit.ref, 'try')
+ self.environment_variables['BUILDBOT_BUILDERNAME'] = (
+ builder_name + "-%s" % channel)
+
+ # Enable Crashpad integration if a Windows bot wants to copy coredumps.
+ if self.environment['copy-coredumps'] and self.m.platform.name == 'win':
+ self.environment_variables['DART_USE_CRASHPAD'] = '1'
+
+ def _expand_environment(arg):
+ for k, v in environment.iteritems():
+ arg = arg.replace('${%s}' % k, str(v))
+ return arg
+
+ self.args = [_expand_environment(arg) for arg in self.args]
+
+
+class StepResults:
+
+ def __init__(self, m):
+ self.logs = ''
+ self.results = ''
+ self.builder_name = str(m.buildbucket.builder_name) # Returned as unicode
+ self.build_number = str(m.buildbucket.build.number)
+
+
+ def add_results(self, bot_name, results_str):
+ extra = ',"bot_name":"%s"}\n' % bot_name
+ all_matches = re.finditer(r'(^{.*)(?:})', results_str, flags=re.MULTILINE)
+ all_chunks = (chunk for match in all_matches for chunk in (
+ match.group(1), extra))
+ self.results += ''.join(all_chunks)
+
+
+def _has_infra_failure(failure):
+ """ Returns whether failure is an aggregated failure that directly or
+ indirectly contains an InfraFailure."""
+ if not isinstance(failure, recipe_api.AggregatedStepFailure):
+ return False
+ elif failure.result.contains_infra_failure:
+ return True
+ else:
+ for f in failure.result.failures:
+ if _has_infra_failure(f):
+ return True
+ return False
diff --git a/recipe_modules/dart/examples/example-get_secret.expected/basic.json b/recipe_modules/dart/examples/example-get_secret.expected/basic.json
new file mode 100644
index 0000000..bd508ea
--- /dev/null
+++ b/recipe_modules/dart/examples/example-get_secret.expected/basic.json
@@ -0,0 +1,60 @@
+[
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[START_DIR]/cloudkms",
+ "-ensure-file",
+ "infra/tools/luci/cloudkms/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-ci-credentials/not_a_secret.encrypted",
+ "not_a_secret.encrypted"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "gsutil download"
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cloudkms/cloudkms",
+ "decrypt",
+ "-input",
+ "not_a_secret.encrypted",
+ "-output",
+ "[CLEANUP]/not_a_secret.key",
+ "projects/dart-ci/locations/us-central1/keyRings/dart-ci/cryptoKeys/dart-ci"
+ ],
+ "cwd": "[CLEANUP]",
+ "name": "cloudkms get key"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example-get_secret.expected/win.json b/recipe_modules/dart/examples/example-get_secret.expected/win.json
new file mode 100644
index 0000000..11091cd
--- /dev/null
+++ b/recipe_modules/dart/examples/example-get_secret.expected/win.json
@@ -0,0 +1,15 @@
+[
+ {
+ "cmd": [
+ "[START_DIR]\\cloudkms\\cloudkms.exe",
+ "decrypt",
+ "-input",
+ "not_a_secret.encrypted",
+ "-output",
+ "[CLEANUP]\\not_a_secret.key",
+ "projects/dart-ci/locations/us-central1/keyRings/dart-ci/cryptoKeys/dart-ci"
+ ],
+ "cwd": "[CLEANUP]",
+ "name": "cloudkms get key"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example-get_secret.py b/recipe_modules/dart/examples/example-get_secret.py
new file mode 100644
index 0000000..c12799f
--- /dev/null
+++ b/recipe_modules/dart/examples/example-get_secret.py
@@ -0,0 +1,21 @@
+# Copyright 2018 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.
+
+from recipe_engine.post_process import (Filter)
+
+DEPS = [
+ 'dart',
+ 'recipe_engine/platform',
+]
+
+def RunSteps(api):
+ api.dart.get_secret('not_a_secret')
+
+def GenTests(api):
+ yield api.test('basic')
+ yield api.test(
+ 'win',
+ api.platform('win', 64),
+ api.post_process(Filter('cloudkms get key')),
+ )
diff --git a/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json b/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json
new file mode 100644
index 0000000..8eaa88f
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json
@@ -0,0 +1,2666 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@3456abce78ef",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"3456abce78ef\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/analyzer_linux_release"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"analyzer-linux-release\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "analyzer-linux-release",
+ "--buildbot-slavename",
+ "trusty-dart-123"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "kill processes (3)"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/analyzer_linux_release"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "-ax64",
+ "-mrelease",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "build",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/analyzer_linux_release",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"analyzer-linux-release\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "analyzer-linux-release",
+ "--buildbot-slavename",
+ "trusty-dart-123"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/swarming_client/isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]/builder/sdk/test",
+ "-s[CACHE]/builder/sdk/test.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset test",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: test_hash@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/swarming_client/isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]/builder/sdk/trigger",
+ "-s[CACHE]/builder/sdk/trigger.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset trigger",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: trigger_hash@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-nunittest-asserts-release-linux\", \"--copy-coredumps\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"test1_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-nunittest-asserts-release-linux\", \"--copy-coredumps\", \"--shards=2\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: test1_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "foo",
+ "--bar",
+ "-ndartk-linux-release-x64",
+ "--copy-coredumps",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_1"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "buildbucket",
+ "put",
+ "-host",
+ "cr-buildbucket.appspot.com",
+ "{\"bucket\": \"luci.dart.ci\", \"experimental\": false, \"parameters_json\": \"{\\\"builder_name\\\": \\\"foo-builder\\\", \\\"changes\\\": [], \\\"properties\\\": {\\\"parent_build_id\\\": \\\"\\\", \\\"parent_buildername\\\": \\\"analyzer-linux-release\\\", \\\"parent_fileset\\\": \\\"trigger_hash\\\", \\\"parent_fileset_name\\\": \\\"trigger\\\", \\\"revision\\\": \\\"3456abce78ef\\\"}}\", \"tags\": [\"builder:foo-builder\", \"buildset:commit/gitiles/dart.googlesource.com/sdk/+/3456abce78ef\", \"gitiles_ref:refs/heads/master\", \"parent_buildername:analyzer-linux-release\", \"parent_buildnumber:1357\", \"user_agent:recipe\"]}",
+ "{\"bucket\": \"luci.dart.ci\", \"experimental\": false, \"parameters_json\": \"{\\\"builder_name\\\": \\\"bar-builder\\\", \\\"changes\\\": [], \\\"properties\\\": {\\\"parent_build_id\\\": \\\"\\\", \\\"parent_buildername\\\": \\\"analyzer-linux-release\\\", \\\"parent_fileset\\\": \\\"trigger_hash\\\", \\\"parent_fileset_name\\\": \\\"trigger\\\", \\\"revision\\\": \\\"3456abce78ef\\\"}}\", \"tags\": [\"builder:bar-builder\", \"buildset:commit/gitiles/dart.googlesource.com/sdk/+/3456abce78ef\", \"gitiles_ref:refs/heads/master\", \"parent_buildername:analyzer-linux-release\", \"parent_buildnumber:1357\", \"user_agent:recipe\"]}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "buildbucket.put",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@trigger@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039183808\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-linux-release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039183808\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039836208\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-strong-linux-release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039836208\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039228096\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-analysis-server-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039228096\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@analyzer-linux-release@https://ci.chromium.org/p/dart/builds/b8963024236039183808@@@",
+ "@@@STEP_LINK@analyzer-strong-linux-release@https://ci.chromium.org/p/dart/builds/b8963024236039836208@@@",
+ "@@@STEP_LINK@analyzer-analysis-server-linux@https://ci.chromium.org/p/dart/builds/b8963024236039228096@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test3"
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test3_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-nanalyzer-asserts-linux\", \"foo\", \"--bar\", \"--copy-coredumps\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test3.trigger shards for test3",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test3_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-nanalyzer-asserts-linux",
+ "foo",
+ "--bar",
+ "--copy-coredumps",
+ "--shards=2",
+ "--shard=2",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_2"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test3_shard_2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test3_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test3_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_3",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_4",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_5",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test3_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test3_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test3_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_5/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_5/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/analyzer-linux-release/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test1)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"tags\": [\"optional:true\"], \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-nunittest-asserts-release-linux\", \"--repeat=5\", \"--tests\", \"Flaky/Test/1\\nFlaky/Test/2\", \"--copy-coredumps\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "foo",
+ "--bar",
+ "-ndartk-linux-release-x64",
+ "--repeat=5",
+ "--tests",
+ "Flaky/Test/1\nFlaky/Test/2",
+ "--copy-coredumps",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_6"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_6/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_6/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test3)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-nanalyzer-asserts-linux",
+ "foo",
+ "--bar",
+ "--repeat=5",
+ "--tests",
+ "Flaky/Test/1\nFlaky/Test/2",
+ "--copy-coredumps",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_7"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.test3",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_7/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read logs.json for test3",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_7/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "analyzer-linux-release-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read results.json for test3",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_8",
+ "0"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_8/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_8/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "3456abce78ef",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"trusty-dart-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/extend_results.dart",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test2\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"trusty-dart-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"trusty-dart-123\"}\n",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json",
+ "analyzer-linux-release",
+ "1357",
+ "1234567",
+ "3456abce78ef",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.get access token for default account",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/post_results_to_pubsub.dart",
+ "--result_file",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--auth_token",
+ "extra.secret.token.should.not.be.logged",
+ "--id",
+ "8945511751514863184"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.publish results to pub/sub",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "3456abce78ef",
+ "gs://dart-test-results/builders/analyzer-linux-release/1357/revision"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload revision",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/analyzer-linux-release/1357/revision@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "gs://dart-test-results/builders/analyzer-linux-release/1357/logs.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload logs.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/analyzer-linux-release/1357/logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "gs://dart-test-results/builders/analyzer-linux-release/1357/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload results.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/analyzer-linux-release/1357/results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/analyzer-linux-release/1357/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/analyzer-linux-release/1357/flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/current_flakiness/single_directory/flaky_current_analyzer-linux-release.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky_current_analyzer-linux-release.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/current_flakiness/single_directory/flaky_current_analyzer-linux-release.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "1357",
+ "gs://dart-test-results/builders/analyzer-linux-release/latest"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil update \"latest\" reference",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/analyzer-linux-release/latest@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/sdk/bqupload",
+ "-ensure-file",
+ "infra/tools/bqupload/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/bqupload/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "upload new results.upload test results to big query",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/bqupload/bqupload",
+ "dart-ci.results.results"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.upload test results to big query.upload results chunk to big query",
+ "stdin": "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "--logs-only",
+ "--flaky"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find ignored flaky test failure logs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "get access token for default account"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/get_builder_status.dart",
+ "-b",
+ "analyzer-linux-release",
+ "-n",
+ "1357",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=3456abce78ef@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/basic-failure.json b/recipe_modules/dart/examples/example.expected/basic-failure.json
new file mode 100644
index 0000000..d791193
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/basic-failure.json
@@ -0,0 +1,431 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/build_fail"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/build_fail",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000,
+ "~followup_annotations": [
+ "@@@STEP_FAILURE@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/build_fail",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/build_fail",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/build_fail",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "1",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"build-fail\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "build-fail"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "failure": {
+ "failure": {},
+ "humanReason": "Step('can_time_out') (retcode: 1)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/basic-mac.json b/recipe_modules/dart/examples/example.expected/basic-mac.json
new file mode 100644
index 0000000..a7e2e5d
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/basic-mac.json
@@ -0,0 +1,1753 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/clean_output_directory.py"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "clobber"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/dart2js_strong_mac_x64_chrome_dev"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_mac_x64_chrome_dev",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_mac_x64_chrome_dev",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_mac_x64_chrome_dev",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_mac_x64_chrome_dev",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"dart2js-strong-mac-x64-chrome-dev\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "dart2js-strong-mac-x64-chrome-dev",
+ "--buildbot-slavename",
+ "mac-dart-123"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/browsers"
+ ],
+ "infra_step": true,
+ "name": "create browser cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/sdk/browsers",
+ "-ensure-file",
+ "dart/browsers/chrome/${platform} version:66.0.3359.139",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:66.0.335\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/browsers/chrome/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"dart/browsers/chrome/${platform}\", \"path\": \"browsers\", \"version\": \"version:66.0.3359.139\"}, {\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndart2js-mac-chrome\", \"foo\", \"--bar\", \"-e co19, language_2\", \"--copy-coredumps\", \"--chrome=browsers/Google Chrome.app/Contents/MacOS/Google Chrome\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Mac\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"isolate_hash_123\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"test1_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"dart/browsers/chrome/${platform}\", \"path\": \"browsers\", \"version\": \"version:66.0.3359.139\"}, {\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndart2js-mac-chrome\", \"foo\", \"--bar\", \"-e co19, language_2\", \"--copy-coredumps\", \"--chrome=browsers/Google Chrome.app/Contents/MacOS/Google Chrome\", \"--shards=2\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Mac\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"isolate_hash_123\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: test1_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/custom_thing.py",
+ "foo",
+ "--bar",
+ "--buildername"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "custom"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/custom_test_runner.py",
+ "foo",
+ "--bar",
+ "--buildername",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_1"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "custom_runner"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for custom_runner",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for custom_runner",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-ndart2js-mac-chrome",
+ "foo",
+ "--bar",
+ "co19",
+ "--copy-coredumps",
+ "--chrome=browsers/Google Chrome.app/Contents/MacOS/Google Chrome",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_2"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-mac-x64-chrome-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_3",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_4",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test1)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/extend_results.dart",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json",
+ "dart2js-strong-mac-x64-chrome-dev",
+ "1357",
+ "1234567",
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/revision"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload revision",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/revision@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/logs.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload logs.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload results.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/1357/flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "1357",
+ "gs://dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/latest"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil update \"latest\" reference",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/dart2js-strong-mac-x64-chrome-dev/latest@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/sdk/bqupload",
+ "-ensure-file",
+ "infra/tools/bqupload/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/bqupload/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "upload new results.upload test results to big query",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/bqupload/bqupload",
+ "dart-ci.results.results"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.upload test results to big query.upload results chunk to big query",
+ "stdin": "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "",
+ "--logs-only",
+ "--flaky"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find ignored flaky test failure logs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--judgement",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CLEANUP]/tools/swarming_client/isolateserver.py",
+ "download",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-sisolate_hash_123",
+ "--target=."
+ ],
+ "cwd": "[CLEANUP]",
+ "name": "downloading fileset test"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/basic-missing-name.json b/recipe_modules/dart/examples/example.expected/basic-missing-name.json
new file mode 100644
index 0000000..459dace
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/basic-missing-name.json
@@ -0,0 +1,714 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/this_name_does_not_exist_in_test_matrix"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/this_name_does_not_exist_in_test_matrix",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/this_name_does_not_exist_in_test_matrix",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/this_name_does_not_exist_in_test_matrix",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/this_name_does_not_exist_in_test_matrix",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"this-name-does-not-exist-in-test-matrix\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "this-name-does-not-exist-in-test-matrix"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "failure": {
+ "humanReason": "Error, could not find builder by name this-name-does-not-exist-in-test-matrix in test-matrix"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/basic-timeout.json b/recipe_modules/dart/examples/example.expected/basic-timeout.json
new file mode 100644
index 0000000..cb5fc1b
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/basic-timeout.json
@@ -0,0 +1,429 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/times_out"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/times_out",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000,
+ "~followup_annotations": [
+ "@@@STEP_FAILURE@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/times_out",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/times_out",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/times_out",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"times-out\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "times-out"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "failure": {
+ "failure": {},
+ "humanReason": "Step('can_time_out') (timeout)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/basic.json b/recipe_modules/dart/examples/example.expected/basic.json
new file mode 100644
index 0000000..b1acd66
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/basic.json
@@ -0,0 +1,1957 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gerrit_client.py",
+ "changes",
+ "--host",
+ "https://dart-review.googlesource.com",
+ "--json_file",
+ "/path/to/tmp/json",
+ "--limit",
+ "1",
+ "-p",
+ "change=123456",
+ "-o",
+ "ALL_REVISIONS",
+ "-o",
+ "DOWNLOAD_COMMANDS"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "gerrit fetch current CL info",
+ "timeout": 600,
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"branch\": \"master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"184ebe53805e102605d11f6b143486d15c23a09c\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"_number\": \"7\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/changes/56/123456/7\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--patch_root",
+ "sdk",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--patch_ref",
+ "https://dart.googlesource.com/sdk@refs/heads/master:refs/changes/56/123456/7",
+ "--revision",
+ "sdk@HEAD"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"HEAD\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/dart2js_strong_linux_x64_firefox_try"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_linux_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_linux_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_linux_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_strong_linux_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"try\", \"builder\": \"dart2js-strong-linux-x64-firefox-try\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "dart2js-strong-linux-x64-firefox-try"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/browsers"
+ ],
+ "infra_step": true,
+ "name": "create browser cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/sdk/browsers",
+ "-ensure-file",
+ "dart/browsers/firefox/${platform} version:61",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:61------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/browsers/firefox/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/swarming_client/isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]/builder/sdk/test",
+ "-s[CACHE]/builder/sdk/test.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset test",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: test_hash@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"dart/browsers/firefox/${platform}\", \"path\": \"browsers\", \"version\": \"version:61\"}, {\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"/usr/bin/xvfb-run\", \"-a\", \"--server-args=-screen 0 1024x768x24\", \"python\", \"-u\", \"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndart2js-linux-firefox\", \"foo\", \"--bar\", \"-e co19, language_2\", \"--copy-coredumps\", \"--firefox=browsers/firefox/firefox\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"test1_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"dart/browsers/firefox/${platform}\", \"path\": \"browsers\", \"version\": \"version:61\"}, {\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"/usr/bin/xvfb-run\", \"-a\", \"--server-args=-screen 0 1024x768x24\", \"python\", \"-u\", \"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndart2js-linux-firefox\", \"foo\", \"--bar\", \"-e co19, language_2\", \"--copy-coredumps\", \"--firefox=browsers/firefox/firefox\", \"--shards=2\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: test1_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/xvfb-run",
+ "-a",
+ "--server-args=-screen 0 1024x768x24",
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/custom_thing.py",
+ "foo",
+ "--bar",
+ "--buildername"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "custom"
+ },
+ {
+ "cmd": [
+ "/usr/bin/xvfb-run",
+ "-a",
+ "--server-args=-screen 0 1024x768x24",
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/custom_test_runner.py",
+ "foo",
+ "--bar",
+ "--buildername",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_1"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "custom_runner"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for custom_runner",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for custom_runner",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/xvfb-run",
+ "-a",
+ "--server-args=-screen 0 1024x768x24",
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-ndart2js-linux-firefox",
+ "foo",
+ "--bar",
+ "co19",
+ "--copy-coredumps",
+ "--firefox=browsers/firefox/firefox",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_2"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_3",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_4",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_4/1/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/dart2js-strong-linux-x64-firefox/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text[latest]@123@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/dart2js-strong-linux-x64-firefox/123/revision",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil get revision for latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[revision]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/dart2js-strong-linux-x64-firefox/123/*.json",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil download previous results",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test1)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"tags\": [\"optional:true\"], \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"dart/browsers/firefox/${platform}\", \"path\": \"browsers\", \"version\": \"version:61\"}, {\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"/usr/bin/xvfb-run\", \"-a\", \"--server-args=-screen 0 1024x768x24\", \"python\", \"-u\", \"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndart2js-linux-firefox\", \"foo\", \"--bar\", \"-e co19, language_2\", \"--repeat=5\", \"--tests\", \"Flaky/Test/1\\nFlaky/Test/2\", \"--copy-coredumps\", \"--firefox=browsers/firefox/firefox\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"None\"}\n{\"name\":\"test2\",\"bot_name\":\"None\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/xvfb-run",
+ "-a",
+ "--server-args=-screen 0 1024x768x24",
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-ndart2js-linux-firefox",
+ "foo",
+ "--bar",
+ "co19",
+ "--repeat=5",
+ "--tests",
+ "Flaky/Test/1\nFlaky/Test/2",
+ "--copy-coredumps",
+ "--firefox=browsers/firefox/firefox",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_5"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_5/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_5/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "dart2js-strong-linux-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_6",
+ "0"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_6/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_6/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"None\"}\n{\"name\":\"test2\",\"bot_name\":\"None\"}\n{\"name\":\"test1\",\"bot_name\":\"None\"}\n{\"name\":\"test2\",\"bot_name\":\"None\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"None\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"None\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/extend_results.dart",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"None\"}\n{\"name\":\"test2\",\"bot_name\":\"None\"}\n{\"name\":\"test1\",\"bot_name\":\"None\"}\n{\"name\":\"test2\",\"bot_name\":\"None\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"None\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"None\"}\n",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json",
+ "dart2js-strong-linux-x64-firefox-try",
+ "1357",
+ "1234567",
+ "refs/changes/123456/7",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.get access token for default account",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/post_results_to_pubsub.dart",
+ "--result_file",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--auth_token",
+ "extra.secret.token.should.not.be.logged",
+ "--id",
+ "8945511751514863184"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.publish results to pub/sub",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "get access token for default account"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/get_builder_status.dart",
+ "-b",
+ "dart2js-strong-linux-x64-firefox-try",
+ "-n",
+ "1357",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/cl/123456/7@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/co19-no-revinfo.json b/recipe_modules/dart/examples/example.expected/co19-no-revinfo.json
new file mode 100644
index 0000000..b437bbe
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/co19-no-revinfo.json
@@ -0,0 +1,26 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/co19.json b/recipe_modules/dart/examples/example.expected/co19.json
new file mode 100644
index 0000000..96c9bfd
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/co19.json
@@ -0,0 +1,375 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for co19"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for co19.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for co19.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"co19_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19/src\", \"version\": \"git_revision:co19_hash\"}, {\"package_name\": \"dart/third_party/co19/legacy\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"co19/nnbd\", \"co19_2\", \"--copy-coredumps\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for co19.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: co19_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_1",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (co19)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"co19_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"tags\": [\"optional:true\"], \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19/src\", \"version\": \"git_revision:co19_hash\"}, {\"package_name\": \"dart/third_party/co19/legacy\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"co19/nnbd\", \"co19_2\", \"--repeat=5\", \"--tests\", \"Flaky/Test/1\\nFlaky/Test/2\", \"--copy-coredumps\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.trigger shards for co19.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: co19_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_2",
+ "0"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read logs.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read results.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/current_flakiness/single_directory/flaky_current_co19.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky_current_co19.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/current_flakiness/single_directory/flaky_current_co19.json@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/co19_2-legacy.json b/recipe_modules/dart/examples/example.expected/co19_2-legacy.json
new file mode 100644
index 0000000..6e5944f
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/co19_2-legacy.json
@@ -0,0 +1,371 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for co19"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for co19.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for co19.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"co19_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19/src\", \"version\": null}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"co19/nnbd\", \"co19_2\", \"--copy-coredumps\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for co19.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: co19_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_1",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (co19)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"co19_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"tags\": [\"optional:true\"], \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19/src\", \"version\": null}, {\"package_name\": \"dart/third_party/co19\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"co19/nnbd\", \"co19_2\", \"--repeat=5\", \"--tests\", \"Flaky/Test/1\\nFlaky/Test/2\", \"--copy-coredumps\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "co19-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.trigger shards for co19.trigger shards for co19",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: co19_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_2",
+ "0"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read logs.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read results.json for co19_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/current_flakiness/single_directory/flaky_current_co19.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky_current_co19.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/current_flakiness/single_directory/flaky_current_co19.json@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/download-results-error-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/download-results-error-is-infra-failure.json
new file mode 100644
index 0000000..dad1162
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/download-results-error-is-infra-failure.json
@@ -0,0 +1,22 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/co19/1234/*.json",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil download previous results",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/example-android.json b/recipe_modules/dart/examples/example.expected/example-android.json
new file mode 100644
index 0000000..e75123d
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/example-android.json
@@ -0,0 +1,1590 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/vm_kernel_precomp_android_release_armsimdbc64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_precomp_android_release_armsimdbc64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_precomp_android_release_armsimdbc64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_precomp_android_release_armsimdbc64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_precomp_android_release_armsimdbc64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"vm-kernel-precomp-android-release-armsimdbc64\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "vm-kernel-precomp-android-release-armsimdbc64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/swarming_client/isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]/builder/sdk/test",
+ "-s[CACHE]/builder/sdk/test.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset test",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: test_hash@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for android"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for android.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-precomp-android-release-armsimdbc64-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for android.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"android_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndartkp-android-release-armsimdbc64\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Android\"}, {\"key\": \"cpu\", \"value\": \"arm64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"android_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndartkp-android-release-armsimdbc64\", \"--shards=2\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Android\"}, {\"key\": \"cpu\", \"value\": \"arm64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-precomp-android-release-armsimdbc64-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for android.trigger shards for android",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: android_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: android_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_1",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: android_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: android_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_2",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "android_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: android_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: android_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for android_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@logs.json@{\"test\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/1/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for android_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"test2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (android)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/1@@@",
+ "@@@STEP_LOG_LINE@raw_io.output_text@Flaky/Test/2@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking.trigger shards for android",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"android_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"tags\": [\"optional:true\"], \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndartkp-android-release-armsimdbc64\", \"--repeat=5\", \"--tests\", \"Flaky/Test/1\\nFlaky/Test/2\", \"--shards=1\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Android\"}, {\"key\": \"cpu\", \"value\": \"arm64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-precomp-android-release-armsimdbc64-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "deflaking.trigger shards for android.trigger shards for android",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: android_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_3",
+ "0"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: android_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: android_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read logs.json for android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/1\":\"log\"}@@@",
+ "@@@STEP_LOG_LINE@logs.json@{\"Flaky/Test/2\":\"log\"}@@@",
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_3/0/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.read results.json for android_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/1\"}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"Flaky/Test/2\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/extend_results.dart",
+ "{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"test2\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/1\",\"bot_name\":\"vm-123\"}\n{\"name\":\"Flaky/Test/2\",\"bot_name\":\"vm-123\"}\n",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json",
+ "vm-kernel-precomp-android-release-armsimdbc64",
+ "0",
+ "1234567",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/revision"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload revision",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/revision@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/logs.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload logs.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload results.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/0/flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/current_flakiness/single_directory/flaky_current_vm-kernel-precomp-android-release-armsimdbc64.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky_current_vm-kernel-precomp-android-release-armsimdbc64.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/current_flakiness/single_directory/flaky_current_vm-kernel-precomp-android-release-armsimdbc64.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "0",
+ "gs://dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/latest"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil update \"latest\" reference",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-precomp-android-release-armsimdbc64/latest@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "--logs",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "--logs",
+ "{\"test\":\"log\"}\n{\"test\":\"log\"}\n{\"Flaky/Test/1\":\"log\"}\n{\"Flaky/Test/2\":\"log\"}",
+ "--logs-only",
+ "--flaky"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "find ignored flaky test failure logs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@",
+ "@@@STEP_LOG_LINE@results.json@@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=2d72510e447ab60a9728aeea2362d8be2cbd7789@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/example-mac.json b/recipe_modules/dart/examples/example.expected/example-mac.json
new file mode 100644
index 0000000..52ef9dc
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/example-mac.json
@@ -0,0 +1,1175 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/vm_kernel_mac_release_x64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"vm-kernel-mac-release-x64\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "vm-kernel-mac-release-x64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "kill processes (3)"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/vm_kernel_mac_release_x64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "-ax64",
+ "-mrelease",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "build",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/vm_kernel_mac_release_x64",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"vm-kernel-mac-release-x64\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "vm-kernel-mac-release-x64"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/xcodebuild/custom_thing",
+ "foo",
+ "--bar",
+ "--buildername"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-mac-release-x64-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "custom"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-tests.json b/recipe_modules/dart/examples/example.expected/failed-tests.json
new file mode 100644
index 0000000..5a55c20
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-tests.json
@@ -0,0 +1,24 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/get_builder_status.dart",
+ "-b",
+ "co19",
+ "-n",
+ "1357",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=3456abce78ef@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@",
+ "@@@STEP_FAILURE@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-get-test-results.json b/recipe_modules/dart/examples/example.expected/failed-to-get-test-results.json
new file mode 100644
index 0000000..7998781
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-get-test-results.json
@@ -0,0 +1,24 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/get_builder_status.dart",
+ "-b",
+ "co19",
+ "-n",
+ "1357",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=3456abce78ef@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-get-tests-to-deflake-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/failed-to-get-tests-to-deflake-is-infra-failure.json
new file mode 100644
index 0000000..6bba251
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-get-tests-to-deflake-is-infra-failure.json
@@ -0,0 +1,25 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (co19)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-publish-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/failed-to-publish-is-infra-failure.json
new file mode 100644
index 0000000..c0e8401
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-publish-is-infra-failure.json
@@ -0,0 +1,21 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/post_results_to_pubsub.dart",
+ "--result_file",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--auth_token",
+ "extra.secret.token.should.not.be.logged",
+ "--id",
+ "8945511751514863184"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.publish results to pub/sub",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-update-flaky-data-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/failed-to-update-flaky-data-is-infra-failure.json
new file mode 100644
index 0000000..5465b1f
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-update-flaky-data-is-infra-failure.json
@@ -0,0 +1,24 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-update-latest-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/failed-to-update-latest-is-infra-failure.json
new file mode 100644
index 0000000..15f0ee1
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-update-latest-is-infra-failure.json
@@ -0,0 +1,22 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "0",
+ "gs://dart-test-results/builders/co19/latest"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil update \"latest\" reference",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/failed-to-upload-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/failed-to-upload-is-infra-failure.json
new file mode 100644
index 0000000..3f2ded1
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/failed-to-upload-is-infra-failure.json
@@ -0,0 +1,22 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "gs://dart-test-results/builders/co19/0/revision"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload revision",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/fuzz-test.json b/recipe_modules/dart/examples/example.expected/fuzz-test.json
new file mode 100644
index 0000000..6d9880f
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/fuzz-test.json
@@ -0,0 +1,1074 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/fuzz_linux"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/fuzz_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/fuzz_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/fuzz_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/fuzz_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"fuzz-linux\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "fuzz-linux"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cat",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/swarming_client/isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]/builder/sdk/test",
+ "-s[CACHE]/builder/sdk/test.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset test",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: test_hash@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for make a fuzz"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for make a fuzz.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "fuzz-linux-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for make a fuzz.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"make a fuzz_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"out/ReleaseX64/dart\", \"runtime/tools/dartfuzz/dartfuzz_test.dart\", \"--isolates\", \"8\", \"--no-show-stats\", \"--time\", \"2700\", \"--shards=3\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"make a fuzz_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"out/ReleaseX64/dart\", \"runtime/tools/dartfuzz/dartfuzz_test.dart\", \"--isolates\", \"8\", \"--no-show-stats\", \"--time\", \"2700\", \"--shards=3\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "fuzz-linux-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for make a fuzz.trigger shards for make a fuzz",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: make a fuzz_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: make a fuzz_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/out/ReleaseX64/dart",
+ "runtime/tools/dartfuzz/dartfuzz_test.dart",
+ "--isolates",
+ "8",
+ "--no-show-stats",
+ "--time",
+ "2700",
+ "--shards=3",
+ "--shard=3"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "fuzz-linux-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "make a fuzz_shard_3"
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_1",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "make a fuzz_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 1, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: make a fuzz_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: make a fuzz_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: make a fuzz_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
+ "@@@STEP_FAILURE@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/swarming_client/swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]/tmp_tmp_2",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "make a fuzz_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: make a fuzz_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: make a fuzz_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: make a fuzz_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for make a fuzz_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/1/results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for make a fuzz_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "failure": {
+ "failure": {},
+ "humanReason": "1 out of 3 aggregated steps failed: 1 out of 2 aggregated steps failed: Swarming task failed:\nhello world!"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/non-test-step-error-is-step-failure.json b/recipe_modules/dart/examples/example.expected/non-test-step-error-is-step-failure.json
new file mode 100644
index 0000000..8b3558e
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/non-test-step-error-is-step-failure.json
@@ -0,0 +1,22 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/out/ReleaseX64/dart",
+ "--bar",
+ "foo.dart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "dart",
+ "~followup_annotations": [
+ "@@@STEP_FAILURE@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/upload-error-is-infra-failure.json b/recipe_modules/dart/examples/example.expected/upload-error-is-infra-failure.json
new file mode 100644
index 0000000..378e3cd
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/upload-error-is-infra-failure.json
@@ -0,0 +1,16 @@
+[
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/bqupload/bqupload",
+ "dart-ci.results.results"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "upload new results.upload test results to big query.upload results chunk to big query",
+ "stdin": "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.expected/vm-win.json b/recipe_modules/dart/examples/example.expected/vm-win.json
new file mode 100644
index 0000000..9a629c9
--- /dev/null
+++ b/recipe_modules/dart/examples/example.expected/vm-win.json
@@ -0,0 +1,2388 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd.bat",
+ "ensure",
+ "-root",
+ "[CACHE]\\goma\\client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]\\resources\\bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]\\\\git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]\\git",
+ "--cleanup-dir",
+ "[CLEANUP]\\bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@3456abce78ef",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]\\builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"3456abce78ef\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]\\gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]\\builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]\\resources\\cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail.exe",
+ "--pid-file",
+ "[TMP_BASE]\\cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "C:\\creds\\service_accounts\\service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\build.py",
+ "--super-fast",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "can_time_out",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]\\goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]\\scripts\\slave\\upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "C:\\creds\\service_accounts\\service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]\\goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]\\goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]\\goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]\\crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"vm-kernel-win-release-simarm_x64\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "vm-kernel-win-release-simarm_x64",
+ "--buildbot-slavename",
+ "win-dart-123"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]\\resources\\cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]\\cloudtail.pid"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [
+ "cmd.exe",
+ "/c",
+ "type",
+ ".debug.log"
+ ],
+ "name": "debug log"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]\\builder\\sdk\\tools\\bots\\test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-win-release-simarm_x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bytecode\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--gen-snapshot=${build_root}/gen_snapshot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"gn\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/gn.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--arch=x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2/sel\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--exclude_suite=co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo.dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19/nnbd\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nunittest-asserts-${mode}-${system}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartk-${system}-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"trigger\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo-builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bar-builder\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-nanalyzer-asserts-${system}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-mac-x64-chrome\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-linux-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-strong-win-x64-chrome\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19, language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_thing.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom_runner\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/custom_test_runner.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"testRunner\": true@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndart2js-${system}-${runtime}\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-mac-release-x64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--buildername\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"custom\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/custom_thing\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"vm-kernel-precomp-android-release-armsimdbc64\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-ndartkp-android-${mode}-${arch}\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"android\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 2@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fuzz-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"runtime/tools/dartfuzz/dartfuzz_test.dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--isolates\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"8\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--no-show-stats\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--time\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"2700\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset\": \"test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"make a fuzz\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"out/ReleaseX64/dart\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 3@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"test\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"trigger\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"61\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]\\builder\\sdk\\.debug.log"
+ ],
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]\\builder\\sdk\\test"
+ ],
+ "infra_step": true,
+ "name": "write fileset test to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@test@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@test@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]\\builder\\sdk\\trigger"
+ ],
+ "infra_step": true,
+ "name": "write fileset trigger to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@trigger@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@trigger@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]\\gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]\\gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\gn.py",
+ "-asimarm_x64",
+ "-mrelease",
+ "--bytecode",
+ "--gen-snapshot=out/ReleaseSIMARM_X64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "kill processes (3)"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]\\resources\\cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail.exe",
+ "--pid-file",
+ "[TMP_BASE]\\cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "C:\\creds\\service_accounts\\service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\build.py",
+ "-mrelease",
+ "--arch=x64",
+ "runtime",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "build",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]\\goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\goma\\client\\goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]\\crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]\\goma\\data\\vm_kernel_win_release_simarm_x64",
+ "GOMA_DIR": "[CACHE]\\goma\\client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]\\goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]\\goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "C:\\creds\\service_accounts\\service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]\\scripts\\slave\\upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "C:\\creds\\service_accounts\\service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]\\goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]\\goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]\\goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]\\crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"vm-kernel-win-release-simarm_x64\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "vm-kernel-win-release-simarm_x64",
+ "--buildbot-slavename",
+ "win-dart-123"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]\\scripts\\tools\\runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]\\resources\\cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]\\cloudtail.pid"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1",
+ "GOMA_DIR": "[CACHE]\\goma\\client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\swarming_client\\isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]\\builder\\sdk\\test",
+ "-s[CACHE]\\builder\\sdk\\test.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset test",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: test_hash@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\swarming_client\\isolate.py",
+ "archive",
+ "--blacklist=(^(out|xcodebuild)[/\\\\](Release|Debug|Product)\\w*[/\\\\](clang_\\w*[/\\\\])?(generated_tests|obj)[/\\\\])|(^tools[/\\\\]sdks)",
+ "--ignore_broken_items",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-i[CACHE]\\builder\\sdk\\trigger",
+ "-s[CACHE]\\builder\\sdk\\trigger.isolated"
+ ],
+ "infra_step": true,
+ "name": "upload testing fileset trigger",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@swarming fileset hash: trigger_hash@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test1.ensure swarming",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd.bat",
+ "ensure",
+ "-root",
+ "[CACHE]\\swarming_client",
+ "-ensure-file",
+ "infra/tools/luci/swarming/${platform} git_revision:386eb9fd6a1e21d174824c786a0eee9d883dad56",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.ensure swarming.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-git_revision:386\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\swarming_client\\swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test1_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19/legacy\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"foo\", \"-ndartk-win-release-simarm_x64\", \"language_2\", \"co19_2/sel\", \"--exclude_suite=co19\", \"--copy-coredumps\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Windows\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}, {\"name\": \"test1_shard_2\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/third_party/co19/legacy\", \"path\": \"tests/co19_2/src\", \"version\": \"git_revision:co19_2_hash\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"foo\", \"-ndartk-win-release-simarm_x64\", \"language_2\", \"co19_2/sel\", \"--exclude_suite=co19\", \"--copy-coredumps\", \"--shards=2\", \"--shard=2\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Windows\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test1.trigger shards for test1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test1_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@",
+ "@@@STEP_LINK@task UI: test1_shard_2@https://example.swarmingserver.appspot.com/task?id=1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "foo",
+ "--bar",
+ "-ndartk-win-release-simarm_x64",
+ "--copy-coredumps",
+ "--output-directory",
+ "[CLEANUP]\\tmp_tmp_1"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_1\\logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_1\\results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "buildbucket",
+ "put",
+ "-host",
+ "cr-buildbucket.appspot.com",
+ "{\"bucket\": \"luci.dart.ci\", \"experimental\": false, \"parameters_json\": \"{\\\"builder_name\\\": \\\"foo-builder\\\", \\\"changes\\\": [], \\\"properties\\\": {\\\"parent_build_id\\\": \\\"\\\", \\\"parent_buildername\\\": \\\"vm-kernel-win-release-simarm_x64\\\", \\\"parent_fileset\\\": \\\"trigger_hash\\\", \\\"parent_fileset_name\\\": \\\"trigger\\\", \\\"revision\\\": \\\"3456abce78ef\\\"}}\", \"tags\": [\"builder:foo-builder\", \"buildset:commit/gitiles/dart.googlesource.com/sdk/+/3456abce78ef\", \"gitiles_ref:refs/heads/master\", \"parent_buildername:vm-kernel-win-release-simarm_x64\", \"parent_buildnumber:1357\", \"user_agent:recipe\"]}",
+ "{\"bucket\": \"luci.dart.ci\", \"experimental\": false, \"parameters_json\": \"{\\\"builder_name\\\": \\\"bar-builder\\\", \\\"changes\\\": [], \\\"properties\\\": {\\\"parent_build_id\\\": \\\"\\\", \\\"parent_buildername\\\": \\\"vm-kernel-win-release-simarm_x64\\\", \\\"parent_fileset\\\": \\\"trigger_hash\\\", \\\"parent_fileset_name\\\": \\\"trigger\\\", \\\"revision\\\": \\\"3456abce78ef\\\"}}\", \"tags\": [\"builder:bar-builder\", \"buildset:commit/gitiles/dart.googlesource.com/sdk/+/3456abce78ef\", \"gitiles_ref:refs/heads/master\", \"parent_buildername:vm-kernel-win-release-simarm_x64\", \"parent_buildnumber:1357\", \"user_agent:recipe\"]}"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "buildbucket.put",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@trigger@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039183808\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-linux-release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039183808\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039836208\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-strong-linux-release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039836208\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8963024236039228096\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder:analyzer-analysis-server-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parent_buildername:dart-sdk-linux\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"url\": \"https://ci.chromium.org/p/dart/builds/b8963024236039228096\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@analyzer-linux-release@https://ci.chromium.org/p/dart/builds/b8963024236039183808@@@",
+ "@@@STEP_LINK@analyzer-strong-linux-release@https://ci.chromium.org/p/dart/builds/b8963024236039836208@@@",
+ "@@@STEP_LINK@analyzer-analysis-server-linux@https://ci.chromium.org/p/dart/builds/b8963024236039228096@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\out\\ReleaseX64\\dart.exe",
+ "--bar",
+ "foo.dart"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "dart"
+ },
+ {
+ "cmd": [],
+ "name": "trigger shards for test3"
+ },
+ {
+ "cmd": [
+ "[CACHE]\\swarming_client\\swarming",
+ "spawn-tasks",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-json-input",
+ "{\"requests\": [{\"name\": \"test3_shard_1\", \"priority\": \"25\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"3600\", \"properties\": {\"caches\": [{\"name\": \"vpython\", \"path\": \"cache/vpython\"}], \"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci/vpython/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/tools/luci/vpython-native/${platform}\", \"path\": \"cipd_bin_packages\", \"version\": \"git_revision:e317c7d2c17d4c3460ee37524dfce4e1dee4306a\"}, {\"package_name\": \"infra/3pp/tools/cpython/${platform}\", \"path\": \"cipd_bin_packages/cpython\", \"version\": \"version:2.7.17.chromium.24\"}, {\"package_name\": \"infra/3pp/tools/cpython3/${platform}\", \"path\": \"cipd_bin_packages/cpython3\", \"version\": \"version:3.8.1rc1.chromium.10\"}, {\"package_name\": \"dart/dart-sdk/${platform}\", \"path\": \"tools/sdks\", \"version\": \"\"}]}, \"command\": [\"tools/test.py\", \"--progress=status\", \"--report\", \"--time\", \"--silent-failures\", \"--write-results\", \"--write-logs\", \"--clean-exit\", \"-ndartk-win-release-simarm_x64\", \"foo\", \"--bar\", \"--copy-coredumps\", \"--shards=2\", \"--shard=1\", \"--output-directory=${ISOLATED_OUTDIR}\"], \"containment\": {\"containment_type\": \"AUTO\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Windows\"}, {\"key\": \"cpu\", \"value\": \"x86-64\"}, {\"key\": \"pool\", \"value\": \"dart.tests\"}], \"env\": [{\"key\": \"VPYTHON_VIRTUALENV_ROOT\", \"value\": \"cache/vpython\"}], \"env_prefixes\": [{\"key\": \"PATH\", \"value\": [\"cipd_bin_packages\", \"cipd_bin_packages/bin\", \"cipd_bin_packages/cpython\", \"cipd_bin_packages/cpython/bin\", \"cipd_bin_packages/cpython3\", \"cipd_bin_packages/cpython3/bin\"]}], \"execution_timeout_secs\": \"3600\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"test_hash\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"1200\", \"outputs\": []}}]}]}",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "trigger shards for test3.trigger shards for test3",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tasks\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"request\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3_shard_1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@task UI: test3_shard_1@https://example.swarmingserver.appspot.com/task?id=0@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]\\builder\\sdk\\tools\\test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "-ndartk-win-release-simarm_x64",
+ "foo",
+ "--bar",
+ "--copy-coredumps",
+ "--shards=2",
+ "--shard=2",
+ "--output-directory",
+ "[CLEANUP]\\tmp_tmp_2"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "test3_shard_2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_2\\logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for test3_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_2\\results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "env": {
+ "BUILDBOT_BUILDERNAME": "vm-kernel-win-release-simarm_x64-be",
+ "DART_USE_CRASHPAD": "1"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for test3_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\swarming_client\\swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]\\tmp_tmp_3",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_3\\0\\logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_3\\0\\results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\swarming_client\\swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]\\tmp_tmp_4",
+ "1"
+ ],
+ "infra_step": true,
+ "name": "test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test1_shard_2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
+ "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_4\\1\\logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_4\\1\\results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test1_shard_2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\swarming_client\\swarming",
+ "collect",
+ "-server",
+ "https://example.swarmingserver.appspot.com",
+ "-task-summary-json",
+ "/path/to/tmp/json",
+ "-task-output-stdout",
+ "json",
+ "-output-dir",
+ "[CLEANUP]\\tmp_tmp_5",
+ "0"
+ ],
+ "infra_step": true,
+ "name": "test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"0\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs\": [], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bot_id\": \"vm-123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"test3_shard_1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"outputs_ref\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolated\": \"abc123\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"namespace\": \"default-gzip\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"state\": \"COMPLETED\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"task_id\": \"0\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@task stdout+stderr: test3_shard_1@hello world!@@@",
+ "@@@STEP_LOG_END@task stdout+stderr: test3_shard_1@@@",
+ "@@@STEP_LINK@task isolated outputs: test3_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_5\\0\\logs.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read logs.json for test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]\\tmp_tmp_5\\0\\results.json",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "name": "read results.json for test3_shard_1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]\\builder\\sdk\\LATEST"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]\\builder\\sdk\\LATEST\\flaky.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test1)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (test3)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "3456abce78ef",
+ ""
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "[CACHE]\\builder\\sdk\\tools\\bots\\extend_results.dart",
+ "",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json",
+ "",
+ "[CACHE]\\builder\\sdk\\LATEST\\flaky.json",
+ "vm-kernel-win-release-simarm_x64",
+ "1357",
+ "1234567",
+ "3456abce78ef",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.get access token for default account",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "[CACHE]\\builder\\sdk\\tools\\bots\\post_results_to_pubsub.dart",
+ "--result_file",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--auth_token",
+ "extra.secret.token.should.not.be.logged",
+ "--id",
+ "8945511751514863184"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.publish results to pub/sub",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "3456abce78ef",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/revision"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload revision",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/revision@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/logs.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload logs.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/results.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload results.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/flaky.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-win-release-simarm_x64/1357/flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "",
+ "gs://dart-test-results/builders/current_flakiness/single_directory/flaky_current_vm-kernel-win-release-simarm_x64.json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil upload flaky_current_vm-kernel-win-release-simarm_x64.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/current_flakiness/single_directory/flaky_current_vm-kernel-win-release-simarm_x64.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "1357",
+ "gs://dart-test-results/builders/vm-kernel-win-release-simarm_x64/latest"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.gsutil update \"latest\" reference",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@gsutil.upload@https://storage.cloud.google.com/dart-test-results/builders/vm-kernel-win-release-simarm_x64/latest@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd.bat",
+ "ensure",
+ "-root",
+ "[CACHE]\\builder\\sdk\\bqupload",
+ "-ensure-file",
+ "infra/tools/bqupload/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/bqupload/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "upload new results.upload test results to big query",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\bqupload\\bqupload",
+ "dart-ci.results.results"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "upload new results.upload test results to big query.upload results chunk to big query",
+ "stdin": "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@2@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]\\builder\\sdk\\LATEST\\results.json",
+ "{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}\n",
+ "--logs",
+ "",
+ "--logs-only",
+ "--flaky"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "find ignored flaky test failure logs",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "infra_step": true,
+ "name": "get access token for default account"
+ },
+ {
+ "cmd": [
+ "[CACHE]\\builder\\sdk\\tools\\sdks\\dart-sdk\\bin\\dart.exe",
+ "[CACHE]\\builder\\sdk\\tools\\bots\\get_builder_status.dart",
+ "-b",
+ "vm-kernel-win-release-simarm_x64",
+ "-n",
+ "1357",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]\\builder\\sdk",
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t01\",\"time_ms\":451,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_LINE@results.json@{\"name\":\"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02\",\"configuration\":\"dartk-linux-product-x64\",\"suite\":\"co19_2\",\"test_name\":\"Language/Classes/Abstract_Instance_Members/inherited_t02\",\"time_ms\":496,\"result\":\"CompileTimeError\",\"expected\":\"CompileTimeError\",\"matches\":true,\"commit_time\":1551185312,\"commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"build_number\":\"2404\",\"builder_name\":\"vm-kernel-linux-product-x64\",\"bot_name\":\"trusty-dart-68765ebb-us-central1-b-2ls0\",\"flaky\":false,\"previous_flaky\":false,\"previous_result\":\"CompileTimeError\",\"previous_commit_hash\":\"f0042a32250a8a6193e6d07e2b6508b13f43c864\",\"previous_commit_time\":1551185312,\"previous_build_number\":2403,\"changed\":false}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/#commit=3456abce78ef@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/dart/examples/example.py b/recipe_modules/dart/examples/example.py
new file mode 100644
index 0000000..11a4ca3
--- /dev/null
+++ b/recipe_modules/dart/examples/example.py
@@ -0,0 +1,811 @@
+# Copyright 2018 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.
+
+
+from recipe_engine.post_process import (
+ DoesNotRun,
+ DropExpectation,
+ Filter,
+ MustRun,
+ StatusException,
+ StatusFailure,
+ StatusSuccess,
+ StepException,
+ StepFailure,
+)
+
+DEPS = [
+ 'dart',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/file',
+ 'recipe_engine/json',
+ 'recipe_engine/properties',
+ 'recipe_engine/platform',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'recipe_engine/swarming',
+]
+
+
+CANNED_OUTPUT_DIR = {
+ 'logs.json': '{"test":"log"}\n',
+ 'results.json': '{"name":"test1"}\n{"name":"test2"}\n',
+}
+
+
+CANNED_FLAKY_OUTPUT_DIR = {
+ 'logs.json': '{"Flaky/Test/1":"log"}\n{"Flaky/Test/2":"log"}',
+ 'results.json': '{"name":"Flaky/Test/1"}\n{"name":"Flaky/Test/2"}\n',
+}
+
+
+TRIGGER_RESULT = {
+ "results": [
+ {
+ "build": {
+ "id": "8963024236039183808",
+ "tags": [
+ "builder:analyzer-linux-release",
+ "parent_buildername:dart-sdk-linux"
+ ],
+ "url": "https://ci.chromium.org/p/dart/builds/b8963024236039183808",
+ }
+ },
+ {
+ "build": {
+ "id": "8963024236039836208",
+ "tags": [
+ "builder:analyzer-strong-linux-release",
+ "parent_buildername:dart-sdk-linux"
+ ],
+ "url": "https://ci.chromium.org/p/dart/builds/b8963024236039836208",
+ }
+ },
+ {
+ "build": {
+ "id": "8963024236039228096",
+ "tags": [
+ "builder:analyzer-analysis-server-linux",
+ "parent_buildername:dart-sdk-linux"
+ ],
+ "url": "https://ci.chromium.org/p/dart/builds/b8963024236039228096",
+ }
+ }
+ ]
+}
+
+
+TEST_MATRIX = {
+ "filesets": {
+ "test": "[]",
+ "trigger": "[]"
+ },
+ "global": {
+ "chrome": "66.0.3359.139",
+ "firefox": "61"
+ },
+ "builder_configurations": [
+ {
+ "builders": ["vm-kernel-win-release-simarm_x64",],
+ "meta": {},
+ "steps": [{
+ "name":
+ "gn",
+ "script":
+ "tools/gn.py",
+ "arguments": [
+ "--bytecode", "--gen-snapshot=${build_root}/gen_snapshot"
+ ]
+ },
+ {
+ "name": "build",
+ "script": "tools/build.py",
+ "arguments": ["--arch=x64", "runtime"]
+ },
+ {
+ "name":
+ "test1",
+ "script":
+ "tools/test.py",
+ "arguments": [
+ "foo", "-ndartk-${system}-${mode}-${arch}",
+ "language_2", "co19_2/sel", "--exclude_suite=co19"
+ ],
+ "shards":
+ 2,
+ "fileset":
+ "test"
+ },
+ {
+ "name":
+ "test2",
+ "arguments": [
+ "foo", "--bar",
+ "-ndartk-${system}-${mode}-${arch}"
+ ],
+ },
+ {
+ "name": "trigger",
+ "fileset": "trigger",
+ "trigger": ["foo-builder", "bar-builder"]
+ },
+ {
+ "name": "dart",
+ "script": "out/ReleaseX64/dart",
+ "arguments": ["--bar", "foo.dart"]
+ },
+ {
+ "name":
+ "test3",
+ "arguments": [
+ "-ndartk-${system}-${mode}-${arch}", "foo",
+ "--bar"
+ ],
+ "fileset":
+ "test",
+ "shards":
+ 2
+ }]
+ },
+ {
+ "builders": ["co19",],
+ "meta": {},
+ "steps": [{
+ "name": "co19",
+ "arguments": ["co19/nnbd", "co19_2"],
+ "fileset": "test",
+ "shards": 1
+ }]
+ },
+ {
+ "builders": ["analyzer-linux-release",],
+ "meta": {},
+ "steps": [{
+ "name": "build",
+ "script": "tools/build.py"
+ },
+ {
+ "name": "test1",
+ "script": "tools/test.py",
+ "fileset": "test",
+ "shards": 2,
+ "arguments": ["-nunittest-asserts-${mode}-${system}"]
+ },
+ {
+ "name":
+ "test2",
+ "arguments": [
+ "foo", "--bar",
+ "-ndartk-${system}-${mode}-${arch}"
+ ],
+ },
+ {
+ "name": "trigger",
+ "fileset": "trigger",
+ "trigger": ["foo-builder", "bar-builder"]
+ },
+ {
+ "name":
+ "test3",
+ "arguments": [
+ "-nanalyzer-asserts-${system}", "foo", "--bar"
+ ],
+ "fileset":
+ "test",
+ "shards":
+ 2
+ }]
+ },
+ {
+ "builders": [
+ "dart2js-strong-mac-x64-chrome",
+ "dart2js-strong-linux-x64-firefox",
+ "dart2js-strong-win-x64-chrome"
+ ],
+ "meta": {},
+ "steps": [{
+ "name":
+ "test1",
+ "script":
+ "tools/test.py",
+ "arguments": [
+ "-ndart2js-${system}-${runtime}", "foo", "--bar",
+ "-e co19, language_2"
+ ],
+ "shards":
+ 2,
+ "fileset":
+ "test"
+ },
+ {
+ "name": "custom",
+ "script": "tools/custom_thing.py",
+ "arguments": ["foo", "--bar", "--buildername"]
+ },
+ {
+ "name": "custom_runner",
+ "script": "tools/custom_test_runner.py",
+ "testRunner": True,
+ "arguments": ["foo", "--bar", "--buildername"]
+ },
+ {
+ "name":
+ "test2",
+ "arguments": [
+ "-ndart2js-${system}-${runtime}", "foo", "--bar",
+ "co19"
+ ],
+ }]
+ },
+ {
+ "builders": ["vm-kernel-mac-release-x64"],
+ "meta": {},
+ "steps": [{
+ "name": "build",
+ "script": "tools/build.py",
+ "arguments": []
+ },
+ {
+ "name": "custom",
+ "script": "out/custom_thing",
+ "arguments": ["foo", "--bar", "--buildername"]
+ }]
+ },
+ {
+ "builders": ["vm-kernel-precomp-android-release-armsimdbc64"],
+ "meta": {},
+ "steps": [{
+ "name": "android",
+ "shards": 2,
+ "fileset": "test",
+ "arguments": ["-ndartkp-android-${mode}-${arch}"]
+ }]
+ },
+ {
+ "builders": ["fuzz-linux"],
+ "steps": [{
+ "name":
+ "make a fuzz",
+ "script":
+ "out/ReleaseX64/dart",
+ "arguments": [
+ "runtime/tools/dartfuzz/dartfuzz_test.dart", "--isolates",
+ "8", "--no-show-stats", "--time", "2700"
+ ],
+ "shards":
+ 3,
+ "fileset":
+ "test"
+ }]
+ }
+ ]
+}
+
+RESULT_DATA = (
+ '{"name":"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t01"'
+ ',"configuration":"dartk-linux-product-x64","suite":"co19_2",'
+ '"test_name":"Language/Classes/Abstract_Instance_Members/inherited_t01",'
+ '"time_ms":451,"result":"CompileTimeError","expected":"CompileTimeError",'
+ '"matches":true,"commit_time":1551185312,'
+ '"commit_hash":"f0042a32250a8a6193e6d07e2b6508b13f43c864",'
+ '"build_number":"2404","builder_name":"vm-kernel-linux-product-x64",'
+ '"bot_name":"trusty-dart-68765ebb-us-central1-b-2ls0","flaky":false,'
+ '"previous_flaky":false,"previous_result":"CompileTimeError",'
+ '"previous_commit_hash":"f0042a32250a8a6193e6d07e2b6508b13f43c864",'
+ '"previous_commit_time":1551185312,"previous_build_number":2403,'
+ '"changed":false}\n' +
+ '{"name":"co19_2/Language/Classes/Abstract_Instance_Members/inherited_t02"'
+ ',"configuration":"dartk-linux-product-x64","suite":"co19_2",'
+ '"test_name":"Language/Classes/Abstract_Instance_Members/inherited_t02",'
+ '"time_ms":496,"result":"CompileTimeError","expected":"CompileTimeError",'
+ '"matches":true,"commit_time":1551185312,'
+ '"commit_hash":"f0042a32250a8a6193e6d07e2b6508b13f43c864",'
+ '"build_number":"2404","builder_name":"vm-kernel-linux-product-x64",'
+ '"bot_name":"trusty-dart-68765ebb-us-central1-b-2ls0","flaky":false,'
+ '"previous_flaky":false,"previous_result":"CompileTimeError",'
+ '"previous_commit_hash":"f0042a32250a8a6193e6d07e2b6508b13f43c864",'
+ '"previous_commit_time":1551185312,"previous_build_number":2403,'
+ '"changed":false}\n')
+
+
+def RunSteps(api):
+ api.dart.checkout('clobber' in api.properties)
+
+ build_args = ['--super-fast']
+ api.dart.build(build_args, name='can_time_out')
+
+ api.dart.kill_tasks()
+ api.dart.read_debug_log()
+
+ api.dart.test(test_data=TEST_MATRIX)
+
+ if 'parent_fileset' in api.properties:
+ api.dart.download_parent_isolate()
+
+
+def _canned_step(api, name, shards=0, local_shard=True, deflake=True):
+ step_name = '%s_shard_%s' % (name, 1) if shards > 0 else name
+ data = None
+ for i in range(1 if shards > 0 else 0, shards + 1):
+ if not data:
+ data = _canned_output_dir(api, step_name)
+ else:
+ data += _canned_output_dir(api, '%s_shard_%s' % (name, i))
+ if deflake:
+ deflaking_name = name if local_shard else '%s_shard_1' % name
+ data += _canned_output_dir(
+ api, deflaking_name, CANNED_FLAKY_OUTPUT_DIR, prefix='deflaking.')
+ if deflake:
+ data += api.step_data('deflaking.list tests to deflake (%s)' % name,
+ stdout=api.raw_io.output('Flaky/Test/1\nFlaky/Test/2'))
+
+ return data
+
+
+def _canned_output_dir(api, step_name, content=None, prefix=''):
+ content = content or CANNED_OUTPUT_DIR
+ data = api.empty_test_data()
+ for filename in ('logs.json', 'results.json'):
+ data += api.step_data('%sread %s for %s' % (prefix, filename, step_name),
+ api.file.read_text(text_content=content[filename]))
+ return data
+
+
+def GenTests(api):
+ yield api.test(
+ 'basic',
+ api.properties(shard_timeout='600'),
+ api.buildbucket.try_build(
+ build_number=1357,
+ builder='dart2js-strong-linux-x64-firefox-try',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'test1', 2, False),
+ _canned_step(api, 'test2'),
+ _canned_step(api, 'custom_runner', deflake=False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('download previous results.gsutil find latest build',
+ api.raw_io.output_text('123', name='latest')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'analyzer-linux-release',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='analyzer-linux-release',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'test1', 2, False),
+ _canned_step(api, 'test2'),
+ _canned_step(api, 'test3', 2),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(
+ 'upload testing fileset trigger',
+ stdout=api.raw_io.output('trigger_hash')),
+ api.step_data('buildbucket.put', stdout=api.json.output(TRIGGER_RESULT)),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'build-failure-in-matrix',
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='analyzer-linux-release',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('build', retcode=1),
+ api.post_process(DoesNotRun, 'test1'),
+ api.post_process(StepFailure, 'build'),
+ api.post_process(StatusFailure),
+ api.post_process(DropExpectation),
+ )
+
+ yield api.test(
+ 'basic-missing-name',
+ api.buildbucket.ci_build(
+ builder='this-name-does-not-exist-in-test-matrix',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.post_process(StatusException),
+ )
+
+ yield api.test(
+ 'basic-timeout',
+ api.buildbucket.ci_build(
+ builder='times-out',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('can_time_out', times_out_after=60 * 61 + 1),
+ api.post_process(StatusFailure),
+ )
+
+ yield api.test(
+ 'basic-failure',
+ api.buildbucket.ci_build(
+ builder='build-fail',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('can_time_out', retcode=1),
+ api.post_process(StatusFailure),
+ )
+
+ yield api.test(
+ 'failed-tests',
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'co19', 1, False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.step_data('test results', retcode=1),
+ api.post_process(StepFailure, 'test results'),
+ api.post_process(StatusFailure),
+ api.post_process(Filter('test results')),
+ )
+
+ yield api.test(
+ 'failed-to-get-test-results',
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'co19', 1, False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.step_data('test results', retcode=2),
+ api.post_process(StepException, 'test results'),
+ api.post_process(StatusException),
+ api.post_process(Filter('test results')),
+ )
+
+ yield api.test(
+ 'vm-win',
+ api.platform('win', 64),
+ api.properties(bot_id='win-dart-123'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='vm-kernel-win-release-simarm_x64',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(
+ 'upload testing fileset trigger',
+ stdout=api.raw_io.output('trigger_hash')),
+ api.step_data('buildbucket.put', stdout=api.json.output(TRIGGER_RESULT)),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'basic-mac',
+ api.platform('mac', 64),
+ api.properties(bot_id='mac-dart-123'),
+ api.buildbucket.ci_build(
+ revision='a' * 40,
+ build_number=1357,
+ builder='dart2js-strong-mac-x64-chrome-dev',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.properties(
+ clobber='True',
+ parent_fileset='isolate_hash_123',
+ parent_fileset_name='test'),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'example-mac',
+ api.platform('mac', 64),
+ api.buildbucket.ci_build(
+ builder='vm-kernel-mac-release-x64',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'example-android',
+ api.platform('linux', 64),
+ api.buildbucket.ci_build(
+ builder='vm-kernel-precomp-android-release-armsimdbc64',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'android', 2, False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.post_process(StatusSuccess),
+ )
+
+ yield api.test(
+ 'non-test-step-error-is-step-failure',
+ api.buildbucket.ci_build(
+ builder='vm-kernel-win-release-simarm_x64',
+ git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data('buildbucket.put', stdout=api.json.output(TRIGGER_RESULT)),
+ api.step_data('dart', retcode=1),
+ api.post_process(StepFailure, 'dart'),
+ api.post_process(Filter('dart')),
+ )
+
+ chunk_upload_step = ('upload new results.'
+ 'upload test results to big query.'
+ 'upload results chunk to big query')
+ yield api.test(
+ 'upload-error-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.step_data(chunk_upload_step, retcode=1),
+ api.post_process(StepException, chunk_upload_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(chunk_upload_step)),
+ )
+
+ download_step = 'download previous results.gsutil download previous results'
+ yield api.test(
+ 'download-results-error-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data('download previous results.gsutil find latest build',
+ api.raw_io.output_text("1234", name="latest")),
+ api.step_data(download_step, retcode=1),
+ api.post_process(StepException, download_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(download_step)),
+ )
+
+ deflake_step = 'deflaking.list tests to deflake (co19)'
+ yield api.test(
+ 'failed-to-get-tests-to-deflake-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(deflake_step, retcode=1),
+ api.post_process(StepException, deflake_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(deflake_step)),
+ )
+
+ update_flaky_step = 'update flakiness information'
+ yield api.test(
+ 'failed-to-update-flaky-data-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(update_flaky_step, retcode=1),
+ api.post_process(StepException, update_flaky_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(update_flaky_step)),
+ )
+
+ update_latest_step = 'upload new results.gsutil update "latest" reference'
+ yield api.test(
+ 'failed-to-update-latest-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.step_data(update_latest_step, retcode=1),
+ api.post_process(StepException, update_latest_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(update_latest_step)),
+ )
+
+ upload_step = 'upload new results.gsutil upload revision'
+ yield api.test(
+ 'failed-to-upload-is-infra-failure',
+ api.buildbucket.ci_build(
+ builder='co19', git_repo='https://dart.googlesource.com/sdk'),
+ api.step_data(upload_step, retcode=1),
+ api.post_process(StepException, upload_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(upload_step)),
+ )
+
+ publish_step = 'upload new results.publish results to pub/sub'
+ yield api.test(
+ 'failed-to-publish-is-infra-failure',
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.step_data(publish_step, retcode=1),
+ api.post_process(StepException, publish_step),
+ api.post_process(StatusException),
+ api.post_process(Filter(publish_step)),
+ )
+
+ yield api.test(
+ 'fuzz-test',
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.buildbucket.ci_build(
+ builder='fuzz-linux',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data(
+ 'make a fuzz_shard_1',
+ api.swarming.collect([
+ api.swarming.task_result(
+ id='0', name='make a fuzz_shard_1', failure=True)
+ ])),
+ api.post_process(MustRun, 'make a fuzz_shard_2'),
+ api.post_process(StepFailure, 'make a fuzz_shard_1'),
+ api.post_process(StatusFailure),
+ )
+
+ yield api.test(
+ 'fuzz-shard-timeout',
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.buildbucket.ci_build(
+ builder='fuzz-linux',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data(
+ 'make a fuzz_shard_1',
+ api.swarming.collect([
+ api.swarming.task_result(
+ id='0',
+ name='make a fuzz_shard_1',
+ state=api.swarming.TaskState.TIMED_OUT)
+ ])),
+ api.post_process(MustRun, 'make a fuzz_shard_2'),
+ api.post_process(StepException, 'make a fuzz_shard_1'),
+ api.post_process(StatusException),
+ api.post_process(DropExpectation),
+ )
+
+ yield api.test(
+ 'test-shard-failure',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ builder='analyzer-linux-release',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data(
+ 'test1_shard_1',
+ api.swarming.collect([
+ api.swarming.task_result(
+ id='0', name='test1_shard_1', failure=True)
+ ])),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(
+ 'upload testing fileset trigger',
+ stdout=api.raw_io.output('trigger_hash')),
+ api.step_data('buildbucket.put', stdout=api.json.output(TRIGGER_RESULT)),
+ api.post_process(StepException, 'test1_shard_1'),
+ api.post_process(StatusException),
+ api.post_process(DropExpectation),
+ )
+
+ yield api.test(
+ 'local-test-shard-failure',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ builder='analyzer-linux-release',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('test3_shard_2', retcode=1),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data(
+ 'upload testing fileset trigger',
+ stdout=api.raw_io.output('trigger_hash')),
+ api.step_data('buildbucket.put', stdout=api.json.output(TRIGGER_RESULT)),
+ api.post_process(StepException, 'test3_shard_2'),
+ api.post_process(StatusException),
+ api.post_process(DropExpectation),
+ )
+
+ legacy_revinfo = {
+ "sdk/tests/co19_2/src:dart/third_party/co19": {
+ "url":
+ "https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "rev":
+ "git_revision:co19_2_hash"
+ }
+ }
+ yield api.test(
+ 'co19_2-legacy',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('gclient get co19 versions',
+ api.json.output(name='revinfo', data=legacy_revinfo)),
+ _canned_step(api, 'co19', 1, False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ api.post_process(Filter().include_re(r'.*co19.*')),
+ )
+
+ yield api.test(
+ 'co19',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ _canned_step(api, 'co19', 1, False),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text(RESULT_DATA)),
+ api.post_process(StatusSuccess),
+ api.post_process(Filter().include_re(r'.*co19.*')),
+ )
+
+ yield api.test(
+ 'co19-no-revinfo',
+ api.properties(bot_id='trusty-dart-123'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ build_number=1357,
+ builder='co19',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('gclient get co19 versions',
+ api.json.output(name='revinfo', data={})),
+ api.post_process(StatusException),
+ api.post_process(Filter().include_re(r'.*co19.*')),
+ )
+
+ yield api.test(
+ 'custom-test-runner-failure-is-infra-failure',
+ api.properties(shard_timeout='600'),
+ api.buildbucket.try_build(
+ build_number=1357,
+ builder='dart2js-strong-linux-x64-firefox-try',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('custom_runner', retcode=1),
+ api.step_data(
+ 'upload testing fileset test', stdout=api.raw_io.output('test_hash')),
+ api.post_process(StepException, 'custom_runner'),
+ api.post_process(StatusException),
+ api.post_process(DropExpectation),
+ )
diff --git a/recipes.py b/recipes.py
new file mode 100755
index 0000000..c6b37ae
--- /dev/null
+++ b/recipes.py
@@ -0,0 +1,242 @@
+#!/bin/sh
+# Copyright 2019 The LUCI Authors. All rights reserved.
+# Use of this source code is governed under the Apache License, Version 2.0
+# that can be found in the LICENSE file.
+
+# We want to run python in unbuffered mode; however shebangs on linux grab the
+# entire rest of the shebang line as a single argument, leading to errors like:
+#
+# /usr/bin/env: 'python -u': No such file or directory
+#
+# This little shell hack is a triple-quoted noop in python, but in sh it
+# evaluates to re-exec'ing this script in unbuffered mode.
+# pylint: disable=pointless-string-statement
+''''exec python -u -- "$0" ${1+"$@"} # '''
+# vi: syntax=python
+"""Bootstrap script to clone and forward to the recipe engine tool.
+
+*******************
+** DO NOT MODIFY **
+*******************
+
+This is a copy of https://chromium.googlesource.com/infra/luci/recipes-py/+/master/recipes.py.
+To fix bugs, fix in the googlesource repo then run the autoroller.
+"""
+
+# pylint: disable=wrong-import-position
+import argparse
+import json
+import logging
+import os
+import subprocess
+import sys
+import urlparse
+
+from collections import namedtuple
+
+# The dependency entry for the recipe_engine in the client repo's recipes.cfg
+#
+# url (str) - the url to the engine repo we want to use.
+# revision (str) - the git revision for the engine to get.
+# branch (str) - the branch to fetch for the engine as an absolute ref (e.g.
+# refs/heads/master)
+EngineDep = namedtuple('EngineDep', 'url revision branch')
+
+
+class MalformedRecipesCfg(Exception):
+
+ def __init__(self, msg, path):
+ full_message = 'malformed recipes.cfg: %s: %r' % (msg, path)
+ super(MalformedRecipesCfg, self).__init__(full_message)
+
+
+def parse(repo_root, recipes_cfg_path):
+ """Parse is a lightweight a recipes.cfg file parser.
+
+ Args:
+ repo_root (str) - native path to the root of the repo we're trying to run
+ recipes for.
+ recipes_cfg_path (str) - native path to the recipes.cfg file to process.
+
+ Returns (as tuple):
+ engine_dep (EngineDep|None): The recipe_engine dependency, or None, if the
+ current repo IS the recipe_engine.
+ recipes_path (str) - native path to where the recipes live inside of the
+ current repo (i.e. the folder containing `recipes/` and/or
+ `recipe_modules`)
+ """
+ with open(recipes_cfg_path, 'rU') as fh:
+ pb = json.load(fh)
+
+ try:
+ if pb['api_version'] != 2:
+ raise MalformedRecipesCfg('unknown version %d' % pb['api_version'],
+ recipes_cfg_path)
+
+ # If we're running ./recipes.py from the recipe_engine repo itself, then
+ # return None to signal that there's no EngineDep.
+ repo_name = pb.get('repo_name')
+ if not repo_name:
+ repo_name = pb['project_id']
+ if repo_name == 'recipe_engine':
+ return None, pb.get('recipes_path', '')
+
+ engine = pb['deps']['recipe_engine']
+
+ if 'url' not in engine:
+ raise MalformedRecipesCfg(
+ 'Required field "url" in dependency "recipe_engine" not found',
+ recipes_cfg_path)
+
+ engine.setdefault('revision', '')
+ engine.setdefault('branch', 'refs/heads/master')
+ recipes_path = pb.get('recipes_path', '')
+
+ # TODO(iannucci): only support absolute refs
+ if not engine['branch'].startswith('refs/'):
+ engine['branch'] = 'refs/heads/' + engine['branch']
+
+ recipes_path = os.path.join(repo_root,
+ recipes_path.replace('/', os.path.sep))
+ return EngineDep(**engine), recipes_path
+ except KeyError as ex:
+ raise MalformedRecipesCfg(ex.message, recipes_cfg_path)
+
+
+_BAT = '.bat' if sys.platform.startswith(('win', 'cygwin')) else ''
+GIT = 'git' + _BAT
+VPYTHON = 'vpython' + _BAT
+CIPD = 'cipd' + _BAT
+REQUIRED_BINARIES = {GIT, VPYTHON, CIPD}
+
+
+def _is_executable(path):
+ return os.path.isfile(path) and os.access(path, os.X_OK)
+
+
+# TODO: Use shutil.which once we switch to Python3.
+def _is_on_path(basename):
+ for path in os.environ['PATH'].split(os.pathsep):
+ full_path = os.path.join(path, basename)
+ if _is_executable(full_path):
+ return True
+ return False
+
+
+def _subprocess_call(argv, **kwargs):
+ logging.info('Running %r', argv)
+ return subprocess.call(argv, **kwargs)
+
+
+def _git_check_call(argv, **kwargs):
+ argv = [GIT] + argv
+ logging.info('Running %r', argv)
+ subprocess.check_call(argv, **kwargs)
+
+
+def _git_output(argv, **kwargs):
+ argv = [GIT] + argv
+ logging.info('Running %r', argv)
+ return subprocess.check_output(argv, **kwargs)
+
+
+def parse_args(argv):
+ """This extracts a subset of the arguments that this bootstrap script cares
+ about. Currently this consists of:
+ * an override for the recipe engine in the form of `-O recipe_engine=/path`
+ * the --package option.
+ """
+ PREFIX = 'recipe_engine='
+
+ p = argparse.ArgumentParser(add_help=False)
+ p.add_argument('-O', '--project-override', action='append')
+ p.add_argument('--package', type=os.path.abspath)
+ args, _ = p.parse_known_args(argv)
+ for override in args.project_override or ():
+ if override.startswith(PREFIX):
+ return override[len(PREFIX):], args.package
+ return None, args.package
+
+
+def checkout_engine(engine_path, repo_root, recipes_cfg_path):
+ dep, recipes_path = parse(repo_root, recipes_cfg_path)
+ if dep is None:
+ # we're running from the engine repo already!
+ return os.path.join(repo_root, recipes_path)
+
+ url = dep.url
+
+ if not engine_path and url.startswith('file://'):
+ engine_path = urlparse.urlparse(url).path
+
+ if not engine_path:
+ revision = dep.revision
+ branch = dep.branch
+
+ # Ensure that we have the recipe engine cloned.
+ engine_path = os.path.join(recipes_path, '.recipe_deps', 'recipe_engine')
+
+ with open(os.devnull, 'w') as NUL:
+ # Note: this logic mirrors the logic in recipe_engine/fetch.py
+ _git_check_call(['init', engine_path], stdout=NUL)
+
+ try:
+ _git_check_call(['rev-parse', '--verify',
+ '%s^{commit}' % revision],
+ cwd=engine_path,
+ stdout=NUL,
+ stderr=NUL)
+ except subprocess.CalledProcessError:
+ _git_check_call(['fetch', url, branch],
+ cwd=engine_path,
+ stdout=NUL,
+ stderr=NUL)
+
+ try:
+ _git_check_call(['diff', '--quiet', revision], cwd=engine_path)
+ except subprocess.CalledProcessError:
+ _git_check_call(['reset', '-q', '--hard', revision], cwd=engine_path)
+
+ # If the engine has refactored/moved modules we need to clean all .pyc files
+ # or things will get squirrely.
+ _git_check_call(['clean', '-qxf'], cwd=engine_path)
+
+ return engine_path
+
+
+def main():
+ for required_binary in REQUIRED_BINARIES:
+ if not _is_on_path(required_binary):
+ return 'Required binary is not found on PATH: %s' % required_binary
+
+ if '--verbose' in sys.argv:
+ logging.getLogger().setLevel(logging.INFO)
+
+ args = sys.argv[1:]
+ engine_override, recipes_cfg_path = parse_args(args)
+
+ if recipes_cfg_path:
+ # calculate repo_root from recipes_cfg_path
+ repo_root = os.path.dirname(
+ os.path.dirname(os.path.dirname(recipes_cfg_path)))
+ else:
+ # find repo_root with git and calculate recipes_cfg_path
+ repo_root = (
+ _git_output(['rev-parse', '--show-toplevel'],
+ cwd=os.path.abspath(os.path.dirname(__file__))).strip())
+ repo_root = os.path.abspath(repo_root)
+ recipes_cfg_path = os.path.join(repo_root, 'infra', 'config', 'recipes.cfg')
+ args = ['--package', recipes_cfg_path] + args
+
+ engine_path = checkout_engine(engine_override, repo_root, recipes_cfg_path)
+
+ try:
+ return _subprocess_call(
+ [VPYTHON, '-u',
+ os.path.join(engine_path, 'recipe_engine', 'main.py')] + args)
+ except KeyboardInterrupt:
+ return 1
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/recipes/dart/chocolatey.expected/dev.json b/recipes/dart/chocolatey.expected/dev.json
new file mode 100644
index 0000000..6b04df4
--- /dev/null
+++ b/recipes/dart/chocolatey.expected/dev.json
@@ -0,0 +1,28 @@
+[
+ {
+ "cmd": [
+ "[CLEANUP]\\chocolatey\\choco",
+ "pack",
+ "version=2.0.0.51-dev-0"
+ ],
+ "cwd": "[START_DIR]\\chocolatey-packages\\dart-sdk",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco pack"
+ },
+ {
+ "cmd": [
+ "C:\\\\WINDOWS\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe",
+ "-Command",
+ "$secret = cat [CLEANUP]\\chocolatey.key; [CLEANUP]\\chocolatey\\choco push -k=\"$secret\" dart-sdk.2.0.0.51-dev-0.nupkg"
+ ],
+ "cwd": "[START_DIR]\\chocolatey-packages\\dart-sdk",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco push"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/chocolatey.expected/release.json b/recipes/dart/chocolatey.expected/release.json
new file mode 100644
index 0000000..8947afd
--- /dev/null
+++ b/recipes/dart/chocolatey.expected/release.json
@@ -0,0 +1,256 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::url]\\resources\\pycurl.py",
+ "--url",
+ "https://chocolatey.org/install.ps1",
+ "--status-json",
+ "/path/to/tmp/json",
+ "--outfile",
+ "[CLEANUP]\\install.ps1"
+ ],
+ "name": "download chocolatey installer"
+ },
+ {
+ "cmd": [
+ "C:\\\\WINDOWS\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe",
+ "[CLEANUP]\\install.ps1"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "install chocolatey"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]\\chocolatey\\choco",
+ "--version"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco --version"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]\\chocolatey\\choco",
+ "config",
+ "set",
+ "cacheLocation",
+ "[CLEANUP]\\cache"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco set package directory"
+ },
+ {
+ "cmd": [
+ "cipd.bat",
+ "ensure",
+ "-root",
+ "[START_DIR]\\cloudkms",
+ "-ensure-file",
+ "infra/tools/luci/cloudkms/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]\\resources\\gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]\\gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-ci-credentials/chocolatey.encrypted",
+ "chocolatey.encrypted"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "infra_step": true,
+ "name": "gsutil download"
+ },
+ {
+ "cmd": [
+ "[START_DIR]\\cloudkms\\cloudkms.exe",
+ "decrypt",
+ "-input",
+ "chocolatey.encrypted",
+ "-output",
+ "[CLEANUP]\\chocolatey.key",
+ "projects/dart-ci/locations/us-central1/keyRings/dart-ci/cryptoKeys/dart-ci"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "cloudkms get key"
+ },
+ {
+ "cmd": [
+ "git",
+ "clone",
+ "https://github.com/dart-lang/chocolatey-packages.git"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "checkout chocolatey-packages"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::url]\\resources\\pycurl.py",
+ "--url",
+ "https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-windows-ia32-release.zip.sha256sum",
+ "--status-json",
+ "/path/to/tmp/json",
+ "--outfile",
+ "/path/to/tmp/"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "GET https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-windows-ia32-release.zip.sha256sum"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::url]\\resources\\pycurl.py",
+ "--url",
+ "https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-windows-x64-release.zip.sha256sum",
+ "--status-json",
+ "/path/to/tmp/json",
+ "--outfile",
+ "/path/to/tmp/"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "GET https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-windows-x64-release.zip.sha256sum"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]\\chocolatey-packages\\dart-sdk\\chocolateyInstall.ps1",
+ "/path/to/tmp/"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "infra_step": true,
+ "name": "read installer",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@chocolateyInstall.ps1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]\\resources\\fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[START_DIR]\\chocolatey-packages\\dart-sdk\\chocolateyInstall.ps1"
+ ],
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "infra_step": true,
+ "name": "write installer",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@chocolateyInstall.ps1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]\\chocolatey\\choco",
+ "pack",
+ "version=1.24.3"
+ ],
+ "cwd": "[START_DIR]\\chocolatey-packages\\dart-sdk",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco pack"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]\\chocolatey\\choco",
+ "install",
+ "dart-sdk",
+ "--pre",
+ "-y",
+ "-dv",
+ "-s",
+ "."
+ ],
+ "cwd": "[START_DIR]\\chocolatey-packages\\dart-sdk",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "verify with choco install"
+ },
+ {
+ "cmd": [
+ "C:\\\\WINDOWS\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe",
+ "-Command",
+ "$secret = cat [CLEANUP]\\chocolatey.key; [CLEANUP]\\chocolatey\\choco push -k=\"$secret\" dart-sdk.1.24.3.nupkg"
+ ],
+ "cwd": "[START_DIR]\\chocolatey-packages\\dart-sdk",
+ "env": {
+ "ChocolateyBinRoot": "[CLEANUP]\\bin_root",
+ "ChocolateyInstall": "[CLEANUP]\\chocolatey"
+ },
+ "name": "choco push"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/chocolatey.py b/recipes/dart/chocolatey.py
new file mode 100644
index 0000000..1ea83ae
--- /dev/null
+++ b/recipes/dart/chocolatey.py
@@ -0,0 +1,103 @@
+# Copyright 2018 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.
+
+from recipe_engine.post_process import Filter
+
+DEPS = [
+ 'dart',
+ 'recipe_engine/context',
+ 'recipe_engine/file',
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
+ 'recipe_engine/url',
+]
+
+INSTALLER_NAME = 'install.ps1'
+INSTALLER = 'https://chocolatey.org/%s' % INSTALLER_NAME
+POWERSHELL = (
+ 'C:\\\\WINDOWS\\\\system32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe')
+CHECKSUM = ('https://storage.googleapis.com/dart-archive/'
+ 'channels/%s/release/%s/sdk/dartsdk-windows-%s-release.zip.sha256sum')
+
+def RunSteps(api):
+ package = api.properties.get('package', 'dart-sdk')
+ version = api.properties.get('version')
+ channel = 'dev' if '-dev' in version else 'stable'
+
+ installer_path = api.path['cleanup'].join(INSTALLER_NAME)
+ api.url.get_file(INSTALLER, installer_path, 'download chocolatey installer')
+
+ choco_home = api.path['cleanup'].join('chocolatey')
+ bin_root = api.path['cleanup'].join('bin_root')
+ env = {
+ 'ChocolateyInstall': choco_home,
+ 'ChocolateyBinRoot': bin_root
+ }
+ with api.context(env=env):
+ api.step('install chocolatey', [POWERSHELL, installer_path])
+
+ choco = choco_home.join('choco')
+ api.step('choco --version', [choco, '--version'])
+
+ cache = api.path['cleanup'].join('cache')
+ api.step('choco set package directory',
+ [choco, 'config', 'set', 'cacheLocation', cache])
+
+ chocolatey_key = api.dart.get_secret('chocolatey')
+
+ # todo(athom): Use git recipe module instead if bug 785362 is ever fixed.
+ api.step(
+ 'checkout chocolatey-packages',
+ ['git', 'clone', 'https://github.com/dart-lang/chocolatey-packages.git'])
+
+ checksum = api.url.get_text(CHECKSUM % (channel, version, 'ia32'),
+ default_test_data='abc *should-not-see-this')
+ checksum = checksum.output.split()[0]
+ checksum64 = api.url.get_text(CHECKSUM % (channel, version, 'x64'),
+ default_test_data='def *should-not-see-this')
+ checksum64 = checksum64.output.split()[0]
+
+ chocolatey_dir = api.path['start_dir'].join('chocolatey-packages')
+ package_dir = chocolatey_dir.join(package)
+ installer_path = package_dir.join('chocolateyInstall.ps1')
+ installer = api.file.read_text('read installer', installer_path)
+
+ installer = installer.replace('$version$', version)
+ installer = installer.replace('$channel$', channel)
+ installer = installer.replace('$checksum$', checksum)
+ installer = installer.replace('$checksum64$', checksum64)
+
+ api.file.write_text('write installer', installer_path, installer)
+
+ with api.context(cwd=package_dir):
+ if channel == 'dev':
+ # todo(athom): remove when chocolatey supports semver 2.0.0 properly
+ # 2.0.0-dev.22.0 -> 2.0.0.22-dev
+ (version, build) = version.split('-')
+ (channel, build_number, fix) = build.split('.')
+ version = "%s.%s-dev-%s" % (version, build_number, fix)
+
+ api.step('choco pack', [choco, 'pack', 'version=%s' % version])
+
+ api.step('verify with choco install', [
+ choco, 'install', package, '--pre', '-y', '-dv', '-s', '.'])
+
+ choco_push = '$secret = cat %s; %s push -k="$secret" %s.%s.nupkg' % (
+ chocolatey_key, choco, package, version)
+ api.step('choco push', [POWERSHELL, '-Command', choco_push])
+
+def GenTests(api):
+ yield api.test(
+ 'dev',
+ api.platform('win', 64),
+ api.properties.generic(version='2.0.0-dev.51.0'),
+ api.post_process(Filter('choco pack', 'choco push')),
+ )
+ yield api.test(
+ 'release',
+ api.platform('win', 64),
+ api.properties.generic(version='1.24.3'),
+ )
diff --git a/recipes/dart/docker.expected/dev.json b/recipes/dart/docker.expected/dev.json
new file mode 100644
index 0000000..c1eb6d7
--- /dev/null
+++ b/recipes/dart/docker.expected/dev.json
@@ -0,0 +1,21 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-archive/channels/dev/release/2.0.0-dev.51.0/sdk/dartsdk-linux-x64-release.zip",
+ "[CLEANUP]/dartsdk-linux-x64-release.zip"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "infra_step": true,
+ "name": "gsutil download dart sdk"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/docker.expected/release.json b/recipes/dart/docker.expected/release.json
new file mode 100644
index 0000000..ab98eac
--- /dev/null
+++ b/recipes/dart/docker.expected/release.json
@@ -0,0 +1,215 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/dart_docker",
+ "--url",
+ "https://github.com/dart-lang/dart_docker.git"
+ ],
+ "name": "git setup"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "master",
+ "--progress"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "infra_step": true,
+ "name": "git checkout"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "infra_step": true,
+ "name": "git clean"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "infra_step": true,
+ "name": "submodule sync"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/dart_docker",
+ "infra_step": true,
+ "name": "submodule update"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-linux-x64-release.zip",
+ "[CLEANUP]/dartsdk-linux-x64-release.zip"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "infra_step": true,
+ "name": "gsutil download dart sdk"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[build::zip]/resources/unzip.py"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "name": "unzip sdk",
+ "stdin": "{\"output\": \"[CLEANUP]/sdk\", \"quiet\": false, \"zip_file\": \"[CLEANUP]/dartsdk-linux-x64-release.zip\"}"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[START_DIR]/cloudkms",
+ "-ensure-file",
+ "infra/tools/luci/cloudkms/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-latest----------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-ci-credentials/dockerhub.encrypted",
+ "dockerhub.encrypted"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "infra_step": true,
+ "name": "gsutil download"
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cloudkms/cloudkms",
+ "decrypt",
+ "-input",
+ "dockerhub.encrypted",
+ "-output",
+ "[CLEANUP]/dockerhub.key",
+ "projects/dart-ci/locations/us-central1/keyRings/dart-ci/cryptoKeys/dart-ci"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "name": "cloudkms get key"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "cat [CLEANUP]/dockerhub.key | /usr/bin/docker login --username dartbot --password-stdin"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "name": "docker login"
+ },
+ {
+ "cmd": [
+ "[START_DIR]/dart_docker/build_push.sh",
+ "google",
+ "1.24.3"
+ ],
+ "env": {
+ "DOCKER_CONFIG": "[CLEANUP]/.docker"
+ },
+ "env_prefixes": {
+ "PATH": [
+ "[CLEANUP]/sdk/dart-sdk/bin"
+ ]
+ },
+ "name": "build and push"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/docker.py b/recipes/dart/docker.py
new file mode 100644
index 0000000..26e106e
--- /dev/null
+++ b/recipes/dart/docker.py
@@ -0,0 +1,62 @@
+# Copyright 2018 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.
+
+from recipe_engine.post_process import Filter
+
+DEPS = [
+ 'dart',
+ 'depot_tools/git',
+ 'depot_tools/gsutil',
+ 'recipe_engine/context',
+ 'recipe_engine/file',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'build/zip',
+]
+
+def RunSteps(api):
+ version = api.properties.get('version')
+ channel = 'dev' if '-dev' in version else 'stable'
+
+ api.git.checkout(url='https://github.com/dart-lang/dart_docker.git')
+
+ env = {
+ 'DOCKER_CONFIG': api.path['cleanup'].join('.docker'),
+ }
+ with api.context(cwd=api.path['cleanup'], env=env):
+ sdk = 'channels/%s/release/%s/sdk/dartsdk-linux-x64-release.zip' % (
+ channel, version)
+ sdk_zip = api.path['cleanup'].join('dartsdk-linux-x64-release.zip')
+ api.gsutil.download('dart-archive', sdk, sdk_zip, name='download dart sdk')
+ api.zip.unzip('unzip sdk', sdk_zip, api.path['cleanup'].join('sdk'))
+
+ dockerhub_key = api.dart.get_secret('dockerhub')
+ login = [
+ '/bin/bash',
+ '-c',
+ 'cat %s | /usr/bin/docker login --username dartbot --password-stdin'
+ % dockerhub_key]
+ api.step('docker login', login)
+
+ env_prefixes = {
+ 'PATH': [api.path['cleanup'].join('sdk').join('dart-sdk').join('bin')],
+ }
+ build_push = (api.path['start_dir']
+ .join('dart_docker')
+ .join('build_push.sh'))
+ with api.context(env=env, env_prefixes=env_prefixes):
+ api.step('build and push', [build_push, 'google', version])
+
+def GenTests(api):
+ yield api.test(
+ 'release',
+ api.properties.generic(version='1.24.3'),
+ )
+ yield api.test(
+ 'dev',
+ api.properties.generic(version='2.0.0-dev.51.0'),
+ api.post_process(Filter('gsutil download dart sdk')),
+ )
diff --git a/recipes/dart/external.expected/failure.json b/recipes/dart/external.expected/failure.json
new file mode 100644
index 0000000..662945e
--- /dev/null
+++ b/recipes/dart/external.expected/failure.json
@@ -0,0 +1,17 @@
+[
+ {
+ "cmd": [],
+ "name": "process properties",
+ "~followup_annotations": [
+ "@@@STEP_LINK@results@https://www.example.com@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"3456abce78ef\"@@@"
+ ]
+ },
+ {
+ "failure": {
+ "failure": {},
+ "humanReason": "failure"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/external.expected/success.json b/recipes/dart/external.expected/success.json
new file mode 100644
index 0000000..887a3b5
--- /dev/null
+++ b/recipes/dart/external.expected/success.json
@@ -0,0 +1,13 @@
+[
+ {
+ "cmd": [],
+ "name": "process properties",
+ "~followup_annotations": [
+ "@@@STEP_LINK@results@https://www.example.com@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"3456abce78ef\"@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/external.py b/recipes/dart/external.py
new file mode 100644
index 0000000..90efc5d
--- /dev/null
+++ b/recipes/dart/external.py
@@ -0,0 +1,41 @@
+# Copyright 2019 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.
+
+from recipe_engine.post_process import Filter
+
+DEPS = [
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
+]
+
+def RunSteps(api):
+ result = api.properties.get('result')
+ assert(result)
+ url = api.properties.get('url')
+ assert(url)
+ api.step('process properties', None)
+ api.step.active_result.presentation.links['results'] = url
+ api.step.active_result.presentation.properties['got_revision'] = (
+ api.buildbucket.gitiles_commit.id)
+ if 'success' not in result:
+ raise api.step.StepFailure(result)
+
+def GenTests(api):
+ yield api.test(
+ 'success',
+ api.properties.generic(result='success', url='https://www.example.com'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ )
+ yield api.test(
+ 'failure',
+ api.properties.generic(result='failure', url='https://www.example.com'),
+ api.buildbucket.ci_build(
+ revision='3456abce78ef',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ )
diff --git a/recipes/dart/flutter_engine.expected/continue-bisect-on-failure.json b/recipes/dart/flutter_engine.expected/continue-bisect-on-failure.json
new file mode 100644
index 0000000..e88b0af
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/continue-bisect-on-failure.json
@@ -0,0 +1,70 @@
+[
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "schedule bisect (d)",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"experimental\": \"NO\", \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"d\", \"project\": \"linear_sdk_flutter_engine\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"bisect_newer\": [\"c\"], \"bisect_older\": [\"e\"], \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"tags\": [{\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8922054662172514000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"experimental\": \"NO\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"host\": \"dart.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"id\": \"d\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"linear_sdk_flutter_engine\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"priority\": 30, @@@",
+ "@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_newer\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"c\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_older\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"e\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"recipe\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/continue-bisect-on-success.json b/recipes/dart/flutter_engine.expected/continue-bisect-on-success.json
new file mode 100644
index 0000000..b30019e
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/continue-bisect-on-success.json
@@ -0,0 +1,70 @@
+[
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "schedule bisect (b)",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"experimental\": \"NO\", \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"b\", \"project\": \"linear_sdk_flutter_engine\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"bisect_newer\": [\"a\"], \"bisect_older\": [\"c\"], \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"tags\": [{\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8922054662172514000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"experimental\": \"NO\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"host\": \"dart.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"id\": \"b\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"linear_sdk_flutter_engine\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"priority\": 30, @@@",
+ "@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_newer\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"a\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_older\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"c\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"recipe\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/do-not-start-bisect-if-previous-build-failed.json b/recipes/dart/flutter_engine.expected/do-not-start-bisect-if-previous-build-failed.json
new file mode 100644
index 0000000..52f47c5
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/do-not-start-bisect-if-previous-build-failed.json
@@ -0,0 +1,109 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmcontents",
+ "[CACHE]/builder"
+ ],
+ "cwd": "[CACHE]/builder",
+ "infra_step": true,
+ "name": "everything",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "fetch previous build",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"createTime\": {\"endTime\": \"2018-05-25T23:50:17Z\"}, \"tags\": [{\"key\": \"user_agent\", \"value\": \"luci-scheduler\"}]}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builds\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8945511751514863184\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"swarming\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"priority\": 30@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"input\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host\": \"chromium.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"status\": \"FAILURE\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"createTime\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"endTime\": \"2018-05-25T23:50:17Z\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"luci-scheduler\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8945511751514863184@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/src/third_party/dart/tools/task_kill.py"
+ ],
+ "name": "kill processes"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('everything') (retcode: 1)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/do-not-start-bisect-without-previous-build.json b/recipes/dart/flutter_engine.expected/do-not-start-bisect-without-previous-build.json
new file mode 100644
index 0000000..5eaea2a
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/do-not-start-bisect-without-previous-build.json
@@ -0,0 +1,81 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmcontents",
+ "[CACHE]/builder"
+ ],
+ "cwd": "[CACHE]/builder",
+ "infra_step": true,
+ "name": "everything",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "fetch previous build",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"createTime\": {\"endTime\": \"2018-05-25T23:50:17Z\"}, \"tags\": [{\"key\": \"user_agent\", \"value\": \"luci-scheduler\"}]}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"searchBuilds\": {}@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"createTime\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"endTime\": \"2018-05-25T23:50:17Z\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"luci-scheduler\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/src/third_party/dart/tools/task_kill.py"
+ ],
+ "name": "kill processes"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('everything') (retcode: 1)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/fan-out-on-distinct-failure.json b/recipes/dart/flutter_engine.expected/fan-out-on-distinct-failure.json
new file mode 100644
index 0000000..bb97a19
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/fan-out-on-distinct-failure.json
@@ -0,0 +1,138 @@
+[
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "schedule bisect (b)",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"experimental\": \"NO\", \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"b\", \"project\": \"linear_sdk_flutter_engine\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"bisect_newer\": [\"a\"], \"bisect_older\": [\"c\"], \"bisect_reason\": \"different failure\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"tags\": [{\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8922054662172514000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"experimental\": \"NO\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"host\": \"dart.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"id\": \"b\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"linear_sdk_flutter_engine\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"priority\": 30, @@@",
+ "@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_newer\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"a\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_older\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"c\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_reason\": \"different failure\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"recipe\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "schedule bisect (d)",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"experimental\": \"NO\", \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"d\", \"project\": \"linear_sdk_flutter_engine\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"bisect_newer\": [\"c\"], \"bisect_older\": [\"e\"], \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", \"tags\": [{\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8922054662172514001\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"experimental\": \"NO\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"host\": \"dart.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"id\": \"d\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"linear_sdk_flutter_engine\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"priority\": 30, @@@",
+ "@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_newer\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"c\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_older\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"e\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-00000000133a\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"recipe\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8922054662172514001@https://cr-buildbucket.appspot.com/build/8922054662172514001@@@"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/flutter-engine-linux.json b/recipes/dart/flutter_engine.expected/flutter-engine-linux.json
new file mode 100644
index 0000000..071472a
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/flutter-engine-linux.json
@@ -0,0 +1,7485 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmcontents",
+ "[CACHE]/builder"
+ ],
+ "cwd": "[CACHE]/builder",
+ "infra_step": true,
+ "name": "everything"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gitiles]/resources/gerrit_client.py",
+ "--json-file",
+ "/path/to/tmp/json",
+ "--url",
+ "https://dart.googlesource.com/linear_sdk_flutter_engine/+/ffffffff/commits.json",
+ "--format",
+ "text"
+ ],
+ "cwd": "[CACHE]/builder",
+ "name": "fetch ffffffff:commits.json"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'src/flutter', 'url': 'https://dart.googlesource.com/external/github.com/flutter/engine'}, {'deps_file': '.DEPS.git', 'managed': True, 'name': 'flutter', 'url': 'https://dart.googlesource.com/external/github.com/flutter/flutter'}]\ntarget_os = ['android']",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "flutter@HEAD",
+ "--revision",
+ "src/flutter@bar",
+ "--revision",
+ "src/third_party/dart@foo"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"flutter\": \"HEAD\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"src/flutter\": \"bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"src/third_party/dart\": \"foo\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"src/flutter\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"src/flutter\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"ffffffff\"@@@",
+ "@@@SET_BUILD_PROPERTY@rev_engine@\"bar\"@@@",
+ "@@@SET_BUILD_PROPERTY@rev_flutter@\"HEAD\"@@@",
+ "@@@SET_BUILD_PROPERTY@rev_sdk@\"foo\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "src/third_party/dart/tools/3xhead_flutter_hooks.sh"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "DEPOT_TOOLS_UPDATE": "0"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "3xHEAD Flutter Hooks"
+ },
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/src/third_party/dart/tools/task_kill.py"
+ ],
+ "name": "kill processes"
+ },
+ {
+ "cmd": [
+ "bash",
+ "-c",
+ "yes | $ANDROID_SDK_ROOT/tools/bin/sdkmanager --licenses"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "accept android licenses"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--full-dart-sdk"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --full-dart-sdk"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/host_debug"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "build host_debug"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build host_debug",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (2).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/host_debug",
+ "create_full_sdk"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "build host_debug create_full_sdk"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (2)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (2).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (2).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (2).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build host_debug create_full_sdk",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "postprocess_for_goma (2).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (2).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--unoptimized"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --unoptimized"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (3)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (3).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (3).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (3).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/host_debug_unopt"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "build host_debug_unopt"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (3)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (3).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (3).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (3).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build host_debug_unopt",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "postprocess_for_goma (3).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (3).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (4)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (4).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (4).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (4).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/host_debug_unopt",
+ "generate_dart_ui"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "build host_debug_unopt generate_dart_ui"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (4)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (4).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (4).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (4).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build host_debug_unopt generate_dart_ui",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "postprocess_for_goma (4).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (4).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--runtime-mode=release"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --runtime-mode=release"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (5)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (5).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (5).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (5).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/host_release"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "build host_release"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (5)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (5).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (5).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "name": "postprocess_for_goma (5).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build host_release",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "postprocess_for_goma (5).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (5).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/src/flutter/browsers"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "infra_step": true,
+ "name": "create browser cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/src/flutter/browsers",
+ "-ensure-file",
+ "dart/browsers/chrome/${platform} version:76",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:76------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/browsers/chrome/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "flutter/ci/analyze.sh"
+ ],
+ "cwd": "[CACHE]/builder/src",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "analyze dart_ui"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "flutter/testing/run_tests.sh"
+ ],
+ "cwd": "[CACHE]/builder/src",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "test engine"
+ },
+ {
+ "cmd": [
+ "dart",
+ "[CACHE]/builder/src/flutter/shell/testing/observatory/test.dart",
+ "[CACHE]/builder/src/out/host_debug/flutter_tester",
+ "[CACHE]/builder/src/flutter/shell/testing/observatory/empty_main.dart"
+ ],
+ "cwd": "[CACHE]/builder/src",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "test observatory and service protocol",
+ "timeout": 300
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--no-lto"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --no-lto"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (6)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (6).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (6).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (6).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_debug"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_debug"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (6)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (6).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (6).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (6).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_debug",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (6).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (6).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (7)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (7).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (7).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (7).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_debug",
+ ":dist"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_debug :dist"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (7)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (7).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (7).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (7).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_debug :dist",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (7).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (7).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=profile",
+ "--android-cpu=arm"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=profile --android-cpu=arm"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (8)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (8).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (8).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (8).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (8)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (8).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (8).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (8).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (8).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (8).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (9)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (9).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (9).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (9).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (9)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (9).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (9).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (9).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (9).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (9).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=release",
+ "--android-cpu=arm"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=release --android-cpu=arm"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (10)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (10).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (10).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (10).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (10)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (10).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (10).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (10).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (10).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (10).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (11)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (11).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (11).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (11).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (11)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (11).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (11).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (11).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (11).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (11).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=profile",
+ "--android-cpu=arm64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=profile --android-cpu=arm64"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (12)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (12).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (12).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (12).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile_arm64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile_arm64"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (12)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (12).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (12).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (12).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile_arm64",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (12).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (12).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (13)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (13).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (13).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (13).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile_arm64",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile_arm64 gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (13)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (13).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (13).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (13).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile_arm64 gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (13).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (13).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=release",
+ "--android-cpu=arm64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=release --android-cpu=arm64"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (14)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (14).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (14).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (14).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release_arm64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release_arm64"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (14)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (14).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (14).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (14).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release_arm64",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (14).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (14).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (15)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (15).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (15).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (15).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release_arm64",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release_arm64 gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (15)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (15).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (15).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (15).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release_arm64 gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (15).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (15).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=profile",
+ "--android-cpu=x64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=profile --android-cpu=x64"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (16)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (16).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (16).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (16).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile_x64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile_x64"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (16)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (16).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (16).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (16).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile_x64",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (16).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (16).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (17)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (17).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (17).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (17).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_profile_x64",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_profile_x64 gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (17)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (17).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (17).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (17).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_profile_x64 gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (17).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (17).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--runtime-mode=release",
+ "--android-cpu=x64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --runtime-mode=release --android-cpu=x64"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (18)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (18).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (18).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (18).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release_x64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release_x64"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (18)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (18).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (18).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (18).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release_x64",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (18).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (18).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (19)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (19).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (19).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (19).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_release_x64",
+ "gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_release_x64 gen_snapshot"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (19)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (19).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (19).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (19).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_release_x64 gen_snapshot",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (19).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (19).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--android-cpu=x64",
+ "--no-lto"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --android-cpu=x64 --no-lto"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (20)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (20).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (20).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (20).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_debug_x64"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_debug_x64"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (20)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (20).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (20).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (20).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_debug_x64",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (20).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (20).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/src/flutter/tools/gn",
+ "--android",
+ "--android-cpu=x86",
+ "--no-lto"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gn --android --android-cpu=x86 --no-lto"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma (21)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/flutter_engine_linux"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (21).goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (21).start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma (21).start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-j",
+ "80",
+ "-C",
+ "[CACHE]/builder/src/out/android_debug_x86"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "build android_debug_x86"
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma (21)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (21).goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (21).goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/flutter_engine_linux",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (21).stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--build-step-name",
+ "build android_debug_x86",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "flutter-engine-linux",
+ "--buildbot-slavename",
+ "fake-m1"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "name": "postprocess_for_goma (21).upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin:<PATH>"
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma (21).stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/flutter/bin/flutter",
+ "config",
+ "--no-analytics"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "disable flutter analytics"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/flutter/bin/flutter",
+ "precache"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter precache"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/icudtl.dat"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove icudtl.dat"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/third_party/icu/flutter/icudtl.dat",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/icudtl.dat"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy icudtl.dat"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/flutter_tester"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove flutter_tester"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/host_debug_unopt/flutter_tester",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/flutter_tester"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy flutter_tester"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/isolate_snapshot.bin"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove isolate_snapshot.bin"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/host_debug_unopt/gen/flutter/lib/snapshot/isolate_snapshot.bin",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/isolate_snapshot.bin"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy isolate_snapshot.bin"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/vm_isolate_snapshot.bin"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove vm_isolate_snapshot.bin"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/host_debug_unopt/gen/flutter/lib/snapshot/vm_isolate_snapshot.bin",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/vm_isolate_snapshot.bin"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy vm_isolate_snapshot.bin"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove frontend_server.dart.snapshot"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/host_debug_unopt/gen/frontend_server.dart.snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy frontend_server.dart.snapshot"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_profile/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-release/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-release/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_release/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot (2)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-profile/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-profile/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot (3)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_profile_arm64/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot (3)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-release/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-release/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot (4)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_release_arm64/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-arm64-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot (4)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-profile/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-profile/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot (5)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_profile_x64/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-profile/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot (5)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-release/linux-x64"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "mkdir [CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-release/linux-x64"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "remove gen_snapshot (6)"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/out/android_release_x64/clang_x64/gen_snapshot",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/android-x64-release/linux-x64/gen_snapshot"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy gen_snapshot (6)"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "if [ -L \"[CACHE]/builder/flutter/bin/cache/dart-sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/dart-sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/dart-sdk\"; fi"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "cleanup dart-sdk"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "if [ -L \"[CACHE]/builder/flutter/bin/cache/pkg\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/pkg\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/pkg\"; fi"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "cleanup pkg"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "if [ -L \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk\"; fi"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "cleanup flutter_patched_sdk"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "if [ -L \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_product\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_product\"; else rm -rf \"[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_product\"; fi"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "cleanup flutter_patched_sdk_product"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copytree",
+ "[CACHE]/builder/src/out/host_debug/dart-sdk",
+ "[CACHE]/builder/flutter/bin/cache/dart-sdk"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "copy just built dart sdk to cached location"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "symlink",
+ "[CACHE]/builder/src/out/host_debug/gen/dart-pkg",
+ "[CACHE]/builder/flutter/bin/cache/pkg"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "symlink just built pkg from dart sdk to cached location"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "symlink",
+ "[CACHE]/builder/src/out/host_debug/flutter_patched_sdk",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "make cached flutter_patched_sdk point to just built flutter_patched_sdk"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "symlink",
+ "[CACHE]/builder/src/out/host_release/flutter_patched_sdk",
+ "[CACHE]/builder/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_product"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "infra_step": true,
+ "name": "make cached flutter_patched_sdk_product point to just built release version of flutter_patched_sdk"
+ },
+ {
+ "cmd": [
+ "/bin/bash",
+ "-c",
+ "if [ -f \"[CACHE]/builder/flutter/bin/cache/flutter_tools.snapshot\" ]; then rm \"[CACHE]/builder/flutter/bin/cache/flutter_tools.snapshot\"; fi"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "cleanup"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/flutter/bin/flutter",
+ "update-packages",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter update-packages"
+ },
+ {
+ "cmd": [
+ "dart",
+ "--enable-asserts",
+ "dev/bots/analyze.dart",
+ "--dart-sdk",
+ "[CACHE]/builder/src/out/host_debug/dart-sdk"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter analyze",
+ "timeout": 1200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "add_to_app_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test add_to_app_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "build_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test build_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "framework_coverage",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test framework_coverage",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "framework_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test framework_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "hostonly_devicelab_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test hostonly_devicelab_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "tool_coverage",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test tool_coverage",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "tool_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test tool_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "dart",
+ "dev/bots/test.dart",
+ "--local-engine=host_debug",
+ "--local-engine-src-path=[CACHE]/builder/src"
+ ],
+ "cwd": "[CACHE]/builder/flutter",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CACHE]/builder/.dartServer",
+ "ANDROID_SDK_ROOT": "[CACHE]/builder/src/third_party/android_tools/sdk",
+ "CHROME_EXECUTABLE": "[CACHE]/builder/src/flutter/browsers/chrome/google-chrome",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "[CACHE]/builder/src/out/host_debug/dart-sdk/bin:<PATH>",
+ "SHARD": "web_tests",
+ "TEST_COMMIT_RANGE": "HEAD"
+ },
+ "name": "flutter test web_tests",
+ "timeout": 7200
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/src/third_party/dart/tools/task_kill.py"
+ ],
+ "name": "kill processes (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.expected/start-bisect.json b/recipes/dart/flutter_engine.expected/start-bisect.json
new file mode 100644
index 0000000..12af008
--- /dev/null
+++ b/recipes/dart/flutter_engine.expected/start-bisect.json
@@ -0,0 +1,283 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "rmcontents",
+ "[CACHE]/builder"
+ ],
+ "cwd": "[CACHE]/builder",
+ "infra_step": true,
+ "name": "everything",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "fetch previous build",
+ "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1, \"predicate\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"createTime\": {\"endTime\": \"2018-05-25T23:50:17Z\"}, \"tags\": [{\"key\": \"user_agent\", \"value\": \"luci-scheduler\"}]}}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builds\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"builder\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"createTime\": \"2018-05-25T23:50:17Z\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8945511751514863184\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"swarming\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"priority\": 30@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"input\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"host\": \"chromium.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"status\": \"SUCCESS\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"searchBuilds\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.critical,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"pageSize\": 1, @@@",
+ "@@@STEP_LOG_LINE@request@ \"predicate\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"createTime\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"endTime\": \"2018-05-25T23:50:17Z\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"luci-scheduler\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8945511751514863184@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gitiles]/resources/gerrit_client.py",
+ "--json-file",
+ "/path/to/tmp/json",
+ "--url",
+ "https://dart.googlesource.com/linear_sdk_flutter_engine/+log/2d72510e447ab60a9728aeea2362d8be2cbd7789..ffffffff",
+ "--format",
+ "json",
+ "--log-limit",
+ "0"
+ ],
+ "name": "gitiles log: 2d72510e447ab60a9728aeea2362d8be2cbd7789..ffffffff",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br />3 commits fetched@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"log\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_0.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"commit\": \"bda185dc04d062d391039867ae671ac9133e9801\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_0.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake master msg 0\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"faed5d85b02d45b884a6c84a69c198c120b36380\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree\": \"a32438c6a72030d92b00f5eb682e7745338e6668\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"1f944b71d6fcc086596ced8938eff992cbe4e326\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"a.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_1.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"commit\": \"8331c527346abecfe0ad081df241512bb4b7df50\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_1.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake master msg 1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"c50e65308b4d20210b14a612d2afb6acb3e830d9\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree\": \"97cbb78571a53287bb1f64a5679f84c396df55ac\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"5e881d213594ff0042014750f2ad397eaaeebee4\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"b.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_2.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"commit\": \"f4d35da881f8fd329a4d3e01dd78b66a502d5c49\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_master@fake_2.email.com\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"message\": \"fake master msg 2\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"73c504dc712dae16fdd38ba50db2a1c5a669cd22\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree\": \"5ae2afc02495c1adee6a3233581f73dac4f7a76a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"38952d2a55008e5afca8d49d8dd78c448d1a7c6c\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"c.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "bb",
+ "batch",
+ "-host",
+ "cr-buildbucket.appspot.com"
+ ],
+ "infra_step": true,
+ "name": "schedule bisect (f4d35da881f8fd329a4d3e01dd78b66a502d5c49)",
+ "stdin": "{\"requests\": [{\"scheduleBuild\": {\"builder\": {\"bucket\": \"ci\", \"builder\": \"flutter-engine-linux\", \"project\": \"project\"}, \"experimental\": \"NO\", \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", \"gitilesCommit\": {\"host\": \"dart.googlesource.com\", \"id\": \"f4d35da881f8fd329a4d3e01dd78b66a502d5c49\", \"project\": \"linear_sdk_flutter_engine\", \"ref\": \"refs/heads/master\"}, \"priority\": 30, \"properties\": {\"bisect_newer\": [\"8331c527346abecfe0ad081df241512bb4b7df50\"], \"bisect_older\": [], \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"}, \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", \"tags\": [{\"key\": \"user_agent\", \"value\": \"recipe\"}]}}]}",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"responses\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"id\": \"8922054662172514000\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LOG_LINE@request@{@@@",
+ "@@@STEP_LOG_LINE@request@ \"requests\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"scheduleBuild\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bucket\": \"ci\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"builder\": \"flutter-engine-linux\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"project\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"experimental\": \"NO\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"fields\": \"builder,createTime,createdBy,critical,endTime,id,input,number,output,startTime,status,updateTime\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"gitilesCommit\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"host\": \"dart.googlesource.com\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"id\": \"f4d35da881f8fd329a4d3e01dd78b66a502d5c49\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"project\": \"linear_sdk_flutter_engine\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"ref\": \"refs/heads/master\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"priority\": 30, @@@",
+ "@@@STEP_LOG_LINE@request@ \"properties\": {@@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_newer\": [@@@",
+ "@@@STEP_LOG_LINE@request@ \"8331c527346abecfe0ad081df241512bb4b7df50\"@@@",
+ "@@@STEP_LOG_LINE@request@ ], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_older\": [], @@@",
+ "@@@STEP_LOG_LINE@request@ \"bisect_reason\": \"Infra Failure: Step('everything') (retcode: 1)\"@@@",
+ "@@@STEP_LOG_LINE@request@ }, @@@",
+ "@@@STEP_LOG_LINE@request@ \"requestId\": \"8945511751514863184-00000000-0000-0000-0000-000000001337\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"tags\": [@@@",
+ "@@@STEP_LOG_LINE@request@ {@@@",
+ "@@@STEP_LOG_LINE@request@ \"key\": \"user_agent\", @@@",
+ "@@@STEP_LOG_LINE@request@ \"value\": \"recipe\"@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ }@@@",
+ "@@@STEP_LOG_LINE@request@ ]@@@",
+ "@@@STEP_LOG_LINE@request@}@@@",
+ "@@@STEP_LOG_END@request@@@",
+ "@@@STEP_LINK@8922054662172514000@https://cr-buildbucket.appspot.com/build/8922054662172514000@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/src/third_party/dart/tools/task_kill.py"
+ ],
+ "name": "kill processes"
+ },
+ {
+ "failure": {
+ "humanReason": "Infra Failure: Step('everything') (retcode: 1)"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/flutter_engine.py b/recipes/dart/flutter_engine.py
new file mode 100644
index 0000000..85516cd
--- /dev/null
+++ b/recipes/dart/flutter_engine.py
@@ -0,0 +1,559 @@
+# Copyright 2016 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.
+
+import json
+
+from recipe_engine import recipe_api
+from recipe_engine.post_process import (
+ DoesNotRunRE, DropExpectation, Filter, MustRun)
+
+from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2
+from PB.go.chromium.org.luci.buildbucket.proto import rpc as rpc_pb2
+
+
+DEPS = [
+ 'dart',
+ 'depot_tools/bot_update',
+ 'depot_tools/depot_tools',
+ 'depot_tools/gclient',
+ 'depot_tools/gitiles',
+ 'build/goma',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/context',
+ 'recipe_engine/file',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/platform',
+ 'recipe_engine/properties',
+ 'recipe_engine/python',
+ 'recipe_engine/runtime',
+ 'recipe_engine/step',
+]
+
+DART_GERRIT = 'https://dart.googlesource.com/'
+
+COMMITS_JSON = 'commits.json'
+ENGINE_REPO = 'external/github.com/flutter/engine'
+FLUTTER_REPO = 'external/github.com/flutter/flutter'
+LINEARIZED_REPO = 'linear_sdk_flutter_engine'
+SDK_REPO = 'sdk'
+
+ENGINE_REPO_URL = DART_GERRIT + ENGINE_REPO
+FLUTTER_REPO_URL = DART_GERRIT + FLUTTER_REPO
+LINEARIZED_REPO_URL = DART_GERRIT + LINEARIZED_REPO
+
+
+def KillTasks(api, checkout_dir, ok_ret='any'):
+ """Kills leftover tasks from previous runs or steps."""
+ dart_sdk_dir = checkout_dir.join('third_party', 'dart')
+ api.python('kill processes',
+ dart_sdk_dir.join('tools', 'task_kill.py'),
+ ok_ret=ok_ret)
+
+
+def Build(api, checkout_dir, config, *targets):
+ build_dir = checkout_dir.join('out/%s' % config)
+ ninja_cmd = [api.depot_tools.ninja_path, '-j', api.goma.jobs, '-C', build_dir]
+ ninja_cmd.extend(targets)
+ api.goma.build_with_goma(
+ name='build %s' % ' '.join([config] + list(targets)),
+ ninja_command=ninja_cmd)
+
+
+def RunGN(api, checkout_dir, *args):
+ gn_cmd = [checkout_dir.join('flutter/tools/gn')]
+ gn_cmd.extend(args)
+ # Flutter's gn tool needs ninja in the PATH
+ with api.depot_tools.on_path():
+ api.step('gn %s' % ' '.join(args), gn_cmd)
+
+
+def AnalyzeDartUI(api, checkout_dir):
+ with api.context(cwd=checkout_dir):
+ api.step('analyze dart_ui', ['/bin/bash', 'flutter/ci/analyze.sh'])
+
+
+def TestEngine(api, checkout_dir):
+ with api.context(cwd=checkout_dir), api.depot_tools.on_path():
+ api.step('test engine', ['/bin/bash', 'flutter/testing/run_tests.sh'])
+
+
+def BuildLinuxAndroidx86(api, checkout_dir):
+ for x86_variant in ['x64', 'x86']:
+ RunGN(api, checkout_dir, '--android', '--android-cpu=' + x86_variant,
+ '--no-lto')
+ Build(api, checkout_dir, 'android_debug_' + x86_variant)
+
+
+def BuildLinuxAndroidArm(api, checkout_dir):
+ RunGN(api, checkout_dir, '--android', '--no-lto')
+ Build(api, checkout_dir, 'android_debug')
+ Build(api, checkout_dir, 'android_debug', ':dist')
+
+ # Build engines for the runtime modes that use AOT compilation.
+ for arch in ['arm', 'arm64', 'x64']:
+ for mode in ['profile', 'release']:
+ build_dir = 'android_%s%s' % (mode, '' if arch == 'arm' else '_' + arch)
+
+ RunGN(api, checkout_dir, '--android', '--runtime-mode=' + mode,
+ '--android-cpu=' + arch)
+ # Build the default set of targets.
+ Build(api, checkout_dir, build_dir)
+ # Ensure "gen_snapshot" is always built.
+ Build(api, checkout_dir, build_dir, 'gen_snapshot')
+
+
+def BuildLinux(api, checkout_dir):
+ RunGN(api, checkout_dir, '--full-dart-sdk')
+ Build(api, checkout_dir, 'host_debug')
+ Build(api, checkout_dir, 'host_debug', 'create_full_sdk')
+ RunGN(api, checkout_dir, '--unoptimized')
+ Build(api, checkout_dir, 'host_debug_unopt')
+ # analyze step needs dart ui sources
+ Build(api, checkout_dir, 'host_debug_unopt', 'generate_dart_ui')
+ RunGN(api, checkout_dir, '--runtime-mode=release')
+ Build(api, checkout_dir, 'host_release')
+
+
+def TestObservatory(api, checkout_dir):
+ flutter_tester_path = checkout_dir.join('out/host_debug/flutter_tester')
+ empty_main_path = checkout_dir.join(
+ 'flutter/shell/testing/observatory/empty_main.dart')
+ test_path = checkout_dir.join('flutter/shell/testing/observatory/test.dart')
+ test_cmd = ['dart', test_path, flutter_tester_path, empty_main_path]
+ with api.context(cwd=checkout_dir):
+ # Timeout after 5 minutes, this step is prone to hang
+ api.step('test observatory and service protocol', test_cmd, timeout=5*60)
+
+
+def GetCheckout(api):
+ src_cfg = api.gclient.make_config()
+ src_cfg.target_os = set(['android'])
+ commits = {}
+
+ # tryjobs don't have a gitiles_commit.
+ if api.buildbucket.gitiles_commit.id:
+ commits = json.loads(api.gitiles.download_file(
+ LINEARIZED_REPO_URL,
+ COMMITS_JSON,
+ api.buildbucket.gitiles_commit.id,
+ step_test_data=lambda: api.gitiles.test_api.make_encoded_file(
+ json.dumps({ENGINE_REPO: 'bar', SDK_REPO: 'foo'}))))
+ engine_rev = commits.get(ENGINE_REPO, 'HEAD')
+ flutter_rev = commits.get(FLUTTER_REPO, 'HEAD')
+ sdk_rev = commits.get(SDK_REPO, 'HEAD')
+
+ src_cfg.revisions = {
+ 'src/flutter': engine_rev,
+ 'src/third_party/dart': sdk_rev,
+ 'flutter': flutter_rev,
+ }
+
+ soln = src_cfg.solutions.add()
+ soln.name = 'src/flutter'
+ soln.url = ENGINE_REPO_URL
+
+ soln = src_cfg.solutions.add()
+ soln.name = 'flutter'
+ soln.url = FLUTTER_REPO_URL
+
+ api.gclient.c = src_cfg
+ api.bot_update.ensure_checkout(ignore_input_commit=True,
+ update_presentation=True)
+ properties = api.step.active_result.presentation.properties
+ properties['rev_engine'] = engine_rev
+ properties['rev_flutter'] = flutter_rev
+ properties['rev_sdk'] = sdk_rev
+ properties['got_revision'] = api.buildbucket.gitiles_commit.id
+
+ api.gclient.runhooks()
+
+ with api.depot_tools.on_path(), api.context(env={'DEPOT_TOOLS_UPDATE': 0}):
+ api.step('3xHEAD Flutter Hooks',
+ ['src/third_party/dart/tools/3xhead_flutter_hooks.sh'])
+
+ return flutter_rev
+
+
+def CopyArtifacts(api, engine_src, cached_dest, file_paths):
+ # cached_dest folder might not exist: flutter update-packages downloads only
+ # artifacts that are needed by the connected devices and 3xHEAD bot
+ # does not have any devices attached.
+ api.file.ensure_directory('mkdir %s' % cached_dest, cached_dest)
+ for path in file_paths:
+ source, target = path, api.path.basename(path)
+
+ api.file.remove('remove %s' % target, cached_dest.join(target))
+ api.file.copy('copy %s' % target, engine_src.join(source),
+ cached_dest.join(target))
+
+
+def UpdateCachedEngineArtifacts(api, flutter, engine_src):
+ ICU_DATA_PATH = 'third_party/icu/flutter/icudtl.dat'
+ CopyArtifacts(api, engine_src,
+ flutter.join('bin', 'cache', 'artifacts', 'engine', 'linux-x64'),
+ [ICU_DATA_PATH,
+ 'out/host_debug_unopt/flutter_tester',
+ 'out/host_debug_unopt/gen/flutter/lib/snapshot/isolate_snapshot.bin',
+ 'out/host_debug_unopt/gen/flutter/lib/snapshot/vm_isolate_snapshot.bin',
+ 'out/host_debug_unopt/gen/frontend_server.dart.snapshot',
+ ]
+ )
+
+ # Copy over new versions of gen_snapshot for profile/release arm/arm64
+ for arch in ['arm', 'arm64', 'x64']:
+ for mode in ['profile', 'release']:
+ build_dir = 'android_%s%s' % (mode, '' if arch == 'arm' else '_' + arch)
+ CopyArtifacts(
+ api, engine_src,
+ flutter.join('bin', 'cache', 'artifacts', 'engine',
+ 'android-%s-%s' % (arch, mode), 'linux-x64'),
+ ['out/%s/clang_x64/gen_snapshot' % build_dir])
+
+ flutter_patched_sdk = flutter.join('bin', 'cache', 'artifacts', 'engine',
+ 'common', 'flutter_patched_sdk')
+ flutter_patched_sdk_product = flutter.join('bin', 'cache', 'artifacts',
+ 'engine', 'common',
+ 'flutter_patched_sdk_product')
+ dart_sdk = flutter.join('bin', 'cache', 'dart-sdk')
+ pkg = flutter.join('bin', 'cache', 'pkg')
+ # In case dart-sdk symlink was left from previous run we need to [remove] it,
+ # rather than [rmtree] because rmtree is going to remove symlink target
+ # folder. We are not able to use api.file classes for this because there is
+ # no support for symlink checks or handling of error condition.
+ api.step('cleanup dart-sdk', [
+ '/bin/bash', '-c',
+ 'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' %
+ {'dir': dart_sdk}])
+ api.step('cleanup pkg', [
+ '/bin/bash', '-c',
+ 'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' % {
+ 'dir': pkg
+ }
+ ])
+ api.step('cleanup flutter_patched_sdk', [
+ '/bin/bash', '-c',
+ 'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' %
+ {'dir': flutter_patched_sdk}])
+ api.step('cleanup flutter_patched_sdk_product', [
+ '/bin/bash', '-c',
+ 'if [ -L "%(dir)s" ]; then rm "%(dir)s"; else rm -rf "%(dir)s"; fi' %
+ {'dir': flutter_patched_sdk_product}])
+ api.file.copytree('copy just built dart sdk to cached location',
+ engine_src.join('out', 'host_debug', 'dart-sdk'), dart_sdk)
+ api.file.symlink('symlink just built pkg from dart sdk to cached location',
+ engine_src.join('out', 'host_debug', 'gen', 'dart-pkg'), pkg)
+ api.file.symlink(
+ 'make cached flutter_patched_sdk point to just built flutter_patched_sdk',
+ engine_src.join('out', 'host_debug', 'flutter_patched_sdk'),
+ flutter_patched_sdk)
+ api.file.symlink(
+ 'make cached flutter_patched_sdk_product point to just built release '
+ 'version of flutter_patched_sdk',
+ engine_src.join('out', 'host_release', 'flutter_patched_sdk'),
+ flutter_patched_sdk_product)
+
+ # In case there is a cached version of "flutter_tools.snapshot" we have to
+ # delete it.
+ flutter_tools_snapshot = flutter.join(
+ 'bin', 'cache', 'flutter_tools.snapshot')
+ api.step('cleanup', [
+ '/bin/bash', '-c', 'if [ -f "%(file)s" ]; then rm "%(file)s"; fi' %
+ {'file': flutter_tools_snapshot}])
+
+
+def TestFlutter(api, start_dir, just_built_dart_sdk):
+ engine_src = start_dir.join('src')
+ flutter = start_dir.join('flutter')
+ flutter_cmd = flutter.join('bin/flutter')
+ test_args = [
+ '--local-engine=host_debug',
+ '--local-engine-src-path=%s' % engine_src,
+ ]
+ test_cmd = [
+ 'dart', 'dev/bots/test.dart',
+ ]
+ api.step('disable flutter analytics', [
+ flutter_cmd, 'config', '--no-analytics'])
+ with api.context(cwd=flutter):
+
+ # Precache so that later flutter won't overwrite
+ # updated artifacts.
+ api.step('flutter precache', [flutter_cmd, 'precache'])
+
+ # analyze.dart and test.dart have hardcoded references to
+ # bin/cache/dart-sdk. So we overwrite bin/cache/dart-sdk and
+ # tightly-coupled frontend_server.dart.snapshot with links that point to
+ # corresponding entries from binaries generated into [engine_src]
+ UpdateCachedEngineArtifacts(api, flutter, engine_src)
+
+ api.step('flutter update-packages',
+ [flutter_cmd, 'update-packages'] + test_args)
+
+ # runs all flutter tests similar to Cirrus as described on this page:
+ # https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md
+ api.step('flutter analyze', [
+ 'dart', '--enable-asserts', 'dev/bots/analyze.dart', '--dart-sdk',
+ just_built_dart_sdk], timeout=20*60) # 20 minutes
+ shards = [
+ 'add_to_app_tests', 'build_tests', 'framework_coverage',
+ 'framework_tests', 'hostonly_devicelab_tests', 'tool_coverage',
+ 'tool_tests', 'web_tests'
+ ]
+ for shard in shards:
+ with api.context(env={
+ 'SHARD': shard,
+ }):
+ api.step('flutter test %s' % (shard),
+ test_cmd + test_args, timeout=120*60) # 2 hours
+
+
+def RunSteps(api):
+ start_dir = api.path['cache'].join('builder')
+ checkout_dir = start_dir.join('src')
+
+ try:
+ with api.context(cwd=start_dir):
+ # buildbot sets 'clobber' to the empty string which is falsey, check with
+ # 'in'
+ if 'clobber' in api.properties:
+ api.file.rmcontents('everything', start_dir)
+ flutter_rev = GetCheckout(api)
+
+ api.goma.ensure_goma()
+
+ KillTasks(api, checkout_dir)
+
+ BuildAndTest(api, start_dir, checkout_dir, flutter_rev)
+ except recipe_api.StepFailure as failure:
+ if _is_bisecting(api):
+ bisect_reason = api.properties['bisect_reason']
+ if bisect_reason == failure.reason:
+ _bisect_older(api, bisect_reason)
+ else:
+ _bisect_newer(api, bisect_reason)
+ # The build failed for a different reason, fan out to find the root
+ # cause of that failure as well.
+ _bisect_older(api, failure.reason)
+ elif api.buildbucket.gitiles_commit.id:
+ # Tryjobs don't have an input commit and can't be bisected.
+ _start_bisection(api, failure.reason)
+ raise
+ finally:
+ # TODO(aam): Go back to `ok_ret={0}` once dartbug.com/35549 is fixed
+ KillTasks(api, checkout_dir, ok_ret='any')
+ if _is_bisecting(api):
+ # The build was successful, so search newer builds to find the root cause.
+ _bisect_newer(api, api.properties['bisect_reason'])
+
+
+def BuildAndTest(api, start_dir, checkout_dir, flutter_rev):
+ run_env = {
+ 'GOMA_DIR':
+ api.goma.goma_dir,
+ # By setting 'ANALYZER_STATE_LOCATION_OVERRIDE' we force analyzer to emit
+ # its cached state into the given folder. If something goes wrong with
+ # the cache we can clobber it by requesting normal clobber via Buildbot
+ # UI.
+ 'ANALYZER_STATE_LOCATION_OVERRIDE':
+ start_dir.join('.dartServer'),
+ 'ANDROID_SDK_ROOT':
+ checkout_dir.join('third_party', 'android_tools', 'sdk')
+ }
+ with api.context(cwd=start_dir, env=run_env):
+ api.step('accept android licenses', [
+ 'bash', '-c', 'yes | $ANDROID_SDK_ROOT/tools/bin/sdkmanager --licenses'
+ ])
+
+ BuildLinux(api, checkout_dir)
+ prebuilt_dart_bin = checkout_dir.join('third_party', 'dart', 'tools',
+ 'sdks', 'dart-sdk', 'bin')
+ engine_env = {
+ 'PATH': api.path.pathsep.join((str(prebuilt_dart_bin), '%(PATH)s')),
+ }
+ just_built_dart_sdk = checkout_dir.join('out', 'host_debug', 'dart-sdk')
+
+ # The web test shards need google-chrome installed.
+ # The chrome version is the version of a package at:
+ # http://go/cipd/p/dart/browsers/chrome/linux-amd64/
+ chrome_version = '76'
+ browser_dir = api.dart.download_browser('chrome', chrome_version)
+ chrome_executable = browser_dir.join('chrome', 'google-chrome')
+ flutter_env = {
+ 'PATH':
+ api.path.pathsep.join((str(just_built_dart_sdk.join('bin')),
+ '%(PATH)s')),
+ # Prevent test.dart from using git merge-base to determine a fork point.
+ # git merge-base doesn't work without a FETCH_HEAD, which isn't
+ # available on the first run of a bot. The builder tests a single
+ # revision, so use flutter_rev.
+ 'TEST_COMMIT_RANGE':
+ flutter_rev,
+ 'CHROME_EXECUTABLE':
+ chrome_executable,
+ }
+
+ with api.step.defer_results():
+ # The context adds prebuilt dart-sdk to the path.
+ with api.context(env=engine_env):
+ AnalyzeDartUI(api, checkout_dir)
+ TestEngine(api, checkout_dir)
+ TestObservatory(api, checkout_dir)
+ BuildLinuxAndroidArm(api, checkout_dir)
+ BuildLinuxAndroidx86(api, checkout_dir)
+ # The context adds freshly-built engine's dart-sdk to the path.
+ with api.context(env=flutter_env):
+ TestFlutter(api, start_dir, just_built_dart_sdk)
+
+
+def _is_bisecting(api):
+ return 'bisect_reason' in api.properties
+
+
+def _start_bisection(api, reason):
+ current_rev = api.buildbucket.gitiles_commit.id
+
+ # Search for previous builds created by the Luci scheduler (to exclude
+ # bisection builds). The TimeRange includes all builds from start_time
+ # (defaults to 0) to end_time (exclusive). Because builds are ordered by
+ # create_time, the first result will be the previous build.
+ create_time = common_pb2.TimeRange(end_time=api.buildbucket.build.create_time)
+ builder = api.buildbucket.build.builder
+ search_predicate = rpc_pb2.BuildPredicate(
+ builder=builder,
+ create_time=create_time,
+ tags=[common_pb2.StringPair(key='user_agent', value='luci-scheduler')])
+ result = api.buildbucket.search(search_predicate, limit=1,
+ step_name='fetch previous build')
+ if not result or len(result) == 0:
+ # There is no previous build: do not bisect on new builders.
+ return
+ previous_build = result[0]
+ if previous_build.status == common_pb2.FAILURE:
+ # Do not bisect if the previous build failed.
+ # TODO(athom): Check if the failure reason is the same when
+ # api.buildbucket.search supports adding
+ # 'builds.*.summaryMarkdown' to the field mask.
+ return
+ previous_rev = previous_build.input.gitiles_commit.id
+ # We're intentionally not paging through the log to avoid bisecting an
+ # excessive number of commits.
+ commits, _ = api.gitiles.log(
+ url=LINEARIZED_REPO_URL,
+ ref='%s..%s' % (previous_rev, current_rev)
+ )
+ commits = commits[1:] # The first commit is the current_rev
+ commits = [commit['commit'] for commit in commits]
+
+ _bisect(api, commits, reason)
+
+
+def _bisect(api, commits, reason):
+ if len(commits) == 0:
+ # Nothing more to bisect.
+ return
+
+ middle_index = len(commits)//2
+ newer = commits[:middle_index]
+ middle = commits[middle_index]
+ older = commits[middle_index + 1:]
+
+ commit = api.buildbucket.gitiles_commit
+ middle_commit = common_pb2.GitilesCommit()
+ middle_commit.CopyFrom(commit)
+ middle_commit.id = middle
+ builder = api.buildbucket.build.builder
+ request = api.buildbucket.schedule_request(
+ builder=builder.builder,
+ project=builder.project,
+ bucket=builder.bucket,
+ properties={
+ 'bisect_newer': newer,
+ 'bisect_older': older,
+ 'bisect_reason': reason
+ },
+ gitiles_commit = middle_commit,
+ inherit_buildsets = False,
+ )
+ api.buildbucket.schedule([request], step_name='schedule bisect (%s)' % middle)
+
+
+def _bisect_newer(api, reason):
+ _bisect(api, list(api.properties.get('bisect_newer', [])), reason)
+
+
+def _bisect_older(api, reason):
+ _bisect(api, list(api.properties.get('bisect_older', [])), reason)
+
+
+def _test(api, name, failure=False):
+ data = api.test(
+ name,
+ api.platform('linux', 64),
+ api.buildbucket.ci_build(
+ builder='flutter-engine-linux',
+ git_repo=LINEARIZED_REPO_URL,
+ revision='f' * 8),
+ api.properties(bot_id='fake-m1', clobber=''),
+ api.runtime(is_luci=True, is_experimental=False),
+ )
+ if failure:
+ # let the first step in the recipe fail
+ data += api.step_data('everything', retcode=1)
+ return data
+
+def GenTests(api):
+ yield (_test(api, 'flutter-engine-linux')
+ + api.post_process(DoesNotRunRE, r'schedule bisect.*'))
+
+ yield (_test(api, 'start-bisect', failure=True)
+ + api.buildbucket.simulated_search_results([
+ api.buildbucket.ci_build_message(status='SUCCESS'),
+ ], step_name='fetch previous build')
+ + api.step_data(
+ 'gitiles log: 2d72510e447ab60a9728aeea2362d8be2cbd7789..ffffffff',
+ api.gitiles.make_log_test_data('master'))
+ + api.post_process(MustRun,
+ 'schedule bisect (f4d35da881f8fd329a4d3e01dd78b66a502d5c49)'))
+
+ yield (_test(api, 'do-not-start-bisect-if-previous-build-failed',
+ failure=True)
+ + api.buildbucket.simulated_search_results([
+ api.buildbucket.ci_build_message(status='FAILURE'),
+ ], step_name='fetch previous build')
+ + api.post_process(DoesNotRunRE, r'schedule bisect.*'))
+
+ yield (_test(api, 'do-not-start-bisect-without-previous-build', failure=True)
+ + api.buildbucket.simulated_search_results([],
+ step_name='fetch previous build')
+ + api.post_process(DoesNotRunRE, r'schedule bisect.*'))
+
+ yield (_test(api, 'continue-bisect-on-failure', failure=True)
+ + api.properties(
+ bisect_newer=['a', 'b', 'c'], bisect_older=['c', 'd', 'e'],
+ bisect_reason="Infra Failure: Step('everything') (retcode: 1)")
+ + api.post_process(MustRun, 'schedule bisect (d)')
+ + api.post_process(Filter('schedule bisect (d)')))
+
+ yield (_test(api, 'continue-bisect-on-success')
+ + api.properties(
+ bisect_newer=['a', 'b', 'c'], bisect_older=['c', 'd', 'e'],
+ bisect_reason="Infra Failure: Step('everything') (retcode: 1)")
+ + api.post_process(MustRun, 'schedule bisect (b)')
+ + api.post_process(Filter('schedule bisect (b)')))
+
+ yield (_test(api, 'fan-out-on-distinct-failure', failure=True)
+ + api.properties(
+ bisect_newer=['a', 'b', 'c'], bisect_older=['c', 'd', 'e'],
+ bisect_reason='different failure')
+ + api.post_process(MustRun, 'schedule bisect (b)')
+ + api.post_process(MustRun, 'schedule bisect (d)')
+ + api.post_process(Filter().include_re(r'schedule bisect \(.*\)')))
+
+ yield (_test(api, 'stop-bisect')
+ + api.properties(
+ bisect_newer=[], bisect_older=[],
+ bisect_reason='different failure')
+ + api.post_process(DoesNotRunRE, r'schedule bisect.*')
+ + api.post_process(DropExpectation))
diff --git a/recipes/dart/forward_branch.expected/base.json b/recipes/dart/forward_branch.expected/base.json
new file mode 100644
index 0000000..33f76e4
--- /dev/null
+++ b/recipes/dart/forward_branch.expected/base.json
@@ -0,0 +1,129 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--revision",
+ "sdk@2d72510e447ab60a9728aeea2362d8be2cbd7789",
+ "--refs",
+ "refs/heads/master"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/find_base_commit.dart"
+ ],
+ "name": "find base commit",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@raw_io.output_text@deadbeef@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "push",
+ "https://dart.googlesource.com/sdk.git",
+ "deadbeef:refs/heads/base"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "infra_step": true,
+ "name": "push deadbeef to refs/heads/base"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/forward_branch.py b/recipes/dart/forward_branch.py
new file mode 100644
index 0000000..b87307d
--- /dev/null
+++ b/recipes/dart/forward_branch.py
@@ -0,0 +1,62 @@
+# Copyright 2018 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.
+
+from recipe_engine import post_process
+
+
+DEPS = [
+ 'dart',
+ 'depot_tools/git',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
+ 'recipe_engine/raw_io',
+]
+
+
+def RunSteps(api):
+ clobber = 'clobber' in api.properties
+ api.dart.checkout(clobber)
+ dart = api.dart.dart_executable()
+ find_base_commit = api.path['checkout'].join(
+ 'tools', 'bots', 'find_base_commit.dart')
+ result = api.step('find base commit', [dart, find_base_commit],
+ stdout=api.raw_io.output_text(add_output_log=True))
+ commit_hash = result.stdout.strip()
+ # todo(athom): use something like api.buildbucket.gitiles_commit.ref instead
+ # The base branch is fast forwarded to the most recent commit with a complete
+ # set of test results. find_base_commit.dart is responsible for identifying
+ # that commit.
+ ref = 'refs/heads/base'
+ # Guard against the empty string here to avoid deleting the remote branch
+ assert(commit_hash)
+ api.git('push', 'https://dart.googlesource.com/sdk.git',
+ '%s:%s' % (commit_hash, ref),
+ name='push %s to %s' % (commit_hash, ref))
+
+
+def GenTests(api):
+ yield api.test(
+ 'base',
+ api.step_data('find base commit', stdout=api.raw_io.output('deadbeef')),
+ api.buildbucket.ci_build(
+ project='dart',
+ bucket='ci',
+ builder='base',
+ git_repo='https://dart.googlesource.com/a/sdk.git'),
+ )
+
+ yield api.test(
+ 'no_hash',
+ api.step_data('find base commit', stdout=api.raw_io.output(' ')),
+ api.buildbucket.ci_build(
+ project='dart',
+ bucket='ci',
+ builder='base',
+ git_repo='https://dart.googlesource.com/a/sdk.git'),
+ api.expect_exception('AssertionError'),
+ api.post_process(post_process.DropExpectation),
+ api.post_process(post_process.DoesNotRunRE, 'push.*'),
+ )
diff --git a/recipes/dart/gclient.expected/ci.json b/recipes/dart/gclient.expected/ci.json
new file mode 100644
index 0000000..51a79de
--- /dev/null
+++ b/recipes/dart/gclient.expected/ci.json
@@ -0,0 +1,99 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "config",
+ "--spec",
+ "cache_dir = None\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "sync",
+ "--verbose",
+ "--nohooks",
+ "-j8",
+ "--reset",
+ "--force",
+ "--upstream",
+ "--no-nag-max",
+ "--with_branch_heads",
+ "--with_tags",
+ "--revision",
+ "",
+ "--delete_unversioned_trees",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient sync",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk/\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"5a374dcd2e5eb762b527af3a5bab6072a4d24493\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.name",
+ "local_bot"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient recurse (git config user.name)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.email",
+ "local_bot@example.com"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient recurse (git config user.email)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/gclient.expected/try.json b/recipes/dart/gclient.expected/try.json
new file mode 100644
index 0000000..df8c6f5
--- /dev/null
+++ b/recipes/dart/gclient.expected/try.json
@@ -0,0 +1,139 @@
+[
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gerrit_client.py",
+ "changes",
+ "--host",
+ "https://chromium-review.googlesource.com",
+ "--json_file",
+ "/path/to/tmp/json",
+ "--limit",
+ "1",
+ "-p",
+ "change=456789",
+ "-o",
+ "ALL_REVISIONS",
+ "-o",
+ "DOWNLOAD_COMMANDS"
+ ],
+ "env": {
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "gerrit fetch current CL info",
+ "timeout": 600,
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"branch\": \"master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"184ebe53805e102605d11f6b143486d15c23a09c\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"_number\": \"12\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/changes/89/456789/12\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "config",
+ "--spec",
+ "cache_dir = None\nsolutions = [{'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient setup"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "sync",
+ "--verbose",
+ "--nohooks",
+ "-j8",
+ "--reset",
+ "--force",
+ "--upstream",
+ "--no-nag-max",
+ "--with_branch_heads",
+ "--with_tags",
+ "--patch-ref",
+ "https://chromium.googlesource.com/chromium/src@refs/heads/master:refs/changes/89/456789/12",
+ "--delete_unversioned_trees",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient sync",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"solutions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk/\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revision\": \"5a374dcd2e5eb762b527af3a5bab6072a4d24493\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.name",
+ "local_bot"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient recurse (git config user.name)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "recurse",
+ "git",
+ "config",
+ "user.email",
+ "local_bot@example.com"
+ ],
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient recurse (git config user.email)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/gclient.py b/recipes/dart/gclient.py
new file mode 100644
index 0000000..ea66d14
--- /dev/null
+++ b/recipes/dart/gclient.py
@@ -0,0 +1,40 @@
+# Copyright 2019 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.
+
+# Test whether a fresh checkout ('fetch dart') works.
+
+DEPS = [
+ 'depot_tools/gclient',
+ 'depot_tools/tryserver',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/properties',
+]
+
+
+def RunSteps(api):
+ repo_url = api.tryserver.gerrit_change_repo_url
+ fetch_ref = api.tryserver.gerrit_change_fetch_ref
+ target_ref = api.tryserver.gerrit_change_target_ref
+ extra_sync_flags = []
+ if repo_url and fetch_ref and target_ref:
+ # Apply the patch on the target branch if it's a CL.
+ extra_sync_flags.extend(
+ ['--patch-ref', '%s@%s:%s' % (repo_url, target_ref, fetch_ref)])
+ else:
+ # Check out the commit if it's not a CL.
+ revision = api.buildbucket.gitiles_commit.id
+ extra_sync_flags.extend(["--revision", revision])
+ # The cache directory is intentionally omitted so this recipe properly
+ # simulates a completely fresh checkout. A cache directory might make things
+ # work when they're actually broken.
+ api.gclient.set_config('dart', CACHE_DIR=None)
+ api.gclient.checkout(extra_sync_flags=extra_sync_flags)
+
+
+def GenTests(api):
+ yield api.test('ci')
+ yield api.test(
+ 'try',
+ api.properties.tryserver(),
+ )
diff --git a/recipes/dart/linearize.expected/base.json b/recipes/dart/linearize.expected/base.json
new file mode 100644
index 0000000..214a584
--- /dev/null
+++ b/recipes/dart/linearize.expected/base.json
@@ -0,0 +1,264 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gitiles]/resources/gerrit_client.py",
+ "--json-file",
+ "/path/to/tmp/json",
+ "--url",
+ "https://dart.googlesource.com/repo/+/deadbeef",
+ "--format",
+ "json"
+ ],
+ "name": "commit log: deadbeef",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"testauthor@fake.chromium.org\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test Author\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"commit\": \"f49cf6381e322b147053b74e4500af8533ac1e4c\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"email\": \"testauthor@fake.chromium.org\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test Author\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"message\": \"Subject\\n\\nMessage\\n\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"04165e9e425e4b5c7a0b18e284fc410463b04d79\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree\": \"15d8d3a3b3cccf02dd6a5de70673225ae52c500f\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"8a2c4298c6158bd5567574b74da3b8c08c615ae3\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"foo/bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_id\": \"6f0a466ac0818c64b2d8ee52fd1bd2f97f03a709\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"new_path\": \"baz/qux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[CLEANUP]",
+ "--url",
+ "https://dart.googlesource.com/a/linearized_history.git"
+ ],
+ "name": "git setup"
+ },
+ {
+ "cmd": [
+ "git",
+ "cache",
+ "populate",
+ "-c",
+ "[CACHE]/git",
+ "https://dart.googlesource.com/a/linearized_history.git"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "populate cache"
+ },
+ {
+ "cmd": [
+ "git",
+ "cache",
+ "exists",
+ "--quiet",
+ "--cache-dir",
+ "[CACHE]/git",
+ "https://dart.googlesource.com/a/linearized_history.git"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git cache"
+ },
+ {
+ "cmd": [
+ "git",
+ "remote",
+ "set-url",
+ "origin",
+ "mirror_dir"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git remote"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "master",
+ "--progress"
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "git checkout"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "git clean"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "submodule sync"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "submodule update"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/commits.json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CLEANUP]",
+ "name": "read old commits",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"another_repo\": \"deadbeef\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{\n \"another_repo\":\"deadbeef\",\n \"repo\":\"deadbeef\"\n}",
+ "[CLEANUP]/commits.json"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "update commits",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@commits.json@{@@@",
+ "@@@STEP_LOG_LINE@commits.json@ \"another_repo\":\"deadbeef\",@@@",
+ "@@@STEP_LOG_LINE@commits.json@ \"repo\":\"deadbeef\"@@@",
+ "@@@STEP_LOG_LINE@commits.json@}@@@",
+ "@@@STEP_LOG_END@commits.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "add",
+ "[CLEANUP]/commits.json"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "git add"
+ },
+ {
+ "cmd": [
+ "git",
+ "commit",
+ "--author=Test Author <testauthor@fake.chromium.org>",
+ "--date=Mon Jan 01 00:00:00 2015",
+ "-m",
+ "Subject\n\nMessage\n\nhttps://dart.googlesource.com/repo/+/deadbeef\n"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "git commit"
+ },
+ {
+ "cmd": [
+ "git",
+ "push",
+ "https://dart.googlesource.com/a/linearized_history.git",
+ "HEAD:refs/heads/master"
+ ],
+ "cwd": "[CLEANUP]",
+ "infra_step": true,
+ "name": "git push"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/linearize.py b/recipes/dart/linearize.py
new file mode 100644
index 0000000..51e16f4
--- /dev/null
+++ b/recipes/dart/linearize.py
@@ -0,0 +1,77 @@
+# Copyright 2019 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.
+
+import json
+
+
+DEPS = [
+ 'dart',
+ 'depot_tools/git',
+ 'depot_tools/gitiles',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/context',
+ 'recipe_engine/file',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+]
+
+
+COMMITS_JSON = 'commits.json'
+
+
+def RunSteps(api):
+ repo = api.properties['repo']
+ assert(repo)
+ commit = api.buildbucket.gitiles_commit
+ assert(commit)
+ commit_hash = commit.id
+
+ url = 'https://%s/%s' % (commit.host, commit.project)
+ commit_log = api.gitiles.commit_log(url, commit_hash)
+ commit_url = '%s/+/%s' % (url, commit_hash)
+ message = commit_log['message']
+ message = '%s\n%s\n' % (message, commit_url)
+ commit_author = commit_log['author']
+ author = '%s <%s>' % (commit_author['name'], commit_author['email'])
+ author_date = commit_author['time']
+
+ api.git.checkout(repo, dir_path=api.path['cleanup'], use_git_cache=True)
+ with api.context(cwd=api.path['checkout']):
+ json_path = api.path['checkout'].join(COMMITS_JSON)
+ commits = {}
+ if api.path.exists(json_path):
+ result = api.json.read('read old commits', json_path,
+ step_test_data=lambda: api.json.test_api.output({
+ 'another_repo': 'deadbeef'
+ })).json
+ commits = result.output
+
+ commits[commit.project] = commit_hash
+
+ pretty_json = json.dumps(commits, indent=2, separators=(',', ':'),
+ sort_keys=True)
+ api.file.write_text('update commits', json_path, pretty_json)
+ api.git('add', json_path)
+ api.git('commit', '--author=%s' % author, '--date=%s' % author_date,
+ '-m', message)
+ api.git('push', repo, 'HEAD:refs/heads/master')
+
+
+def GenTests(api):
+ yield api.test(
+ 'base',
+ api.properties.generic(
+ repo='https://dart.googlesource.com/a/linearized_history.git'),
+ api.buildbucket.ci_build(
+ git_repo='https://dart.googlesource.com/a/repo.git',
+ revision='deadbeef'),
+ api.step_data(
+ 'commit log: %s' % 'deadbeef',
+ api.gitiles.make_commit_test_data(
+ 'deadbeef',
+ 'Subject\n\nMessage\n',
+ new_files=['foo/bar', 'baz/qux'])),
+ api.path.exists(api.path['checkout'].join(COMMITS_JSON)),
+ )
diff --git a/recipes/dart/neo.expected/builders_analyzer-triggered.json b/recipes/dart/neo.expected/builders_analyzer-triggered.json
new file mode 100644
index 0000000..3f171d4
--- /dev/null
+++ b/recipes/dart/neo.expected/builders_analyzer-triggered.json
@@ -0,0 +1,223 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/swarming.client",
+ "--url",
+ "https://chromium.googlesource.com/infra/luci/client-py.git"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "git setup (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "master",
+ "--progress"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "git checkout (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "git clean (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "submodule sync (swarming_client)"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/swarming.client",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "submodule update (swarming_client)"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[START_DIR]/swarming.client/isolateserver.py",
+ "download",
+ "-I",
+ "isolateserver.appspot.com",
+ "--namespace",
+ "default-gzip",
+ "-sisolate_123",
+ "--target=."
+ ],
+ "cwd": "[CLEANUP]",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "downloading fileset test_name"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CLEANUP]/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-win-debug-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release-none\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test-step 1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-mdebug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-n${runtime}-foo-${mode}-${arch}-bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test-step 2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset1\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"nameoffileset\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"60.0.1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CLEANUP]/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "kill processes (2)"
+ },
+ {
+ "failure": {
+ "humanReason": "Error, could not find builder by name analyzer-triggered in test-matrix"
+ },
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json b/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json
new file mode 100644
index 0000000..ca8c687
--- /dev/null
+++ b/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json
@@ -0,0 +1,1305 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure_goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "infra_internal/goma/client/${platform} release",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "ensure_goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-release---------\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra_internal/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gerrit_client.py",
+ "changes",
+ "--host",
+ "https://dart-review.googlesource.com",
+ "--json_file",
+ "/path/to/tmp/json",
+ "--limit",
+ "1",
+ "-p",
+ "change=123456",
+ "-o",
+ "ALL_REVISIONS",
+ "-o",
+ "DOWNLOAD_COMMANDS"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "gerrit fetch current CL info",
+ "timeout": 600,
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"branch\": \"master\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"184ebe53805e102605d11f6b143486d15c23a09c\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"_number\": \"7\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ref\": \"refs/changes/56/123456/7\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@]@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
+ "--spec-path",
+ "cache_dir = '[CACHE]/git'\nsolutions = [{'custom_deps': {'sdk/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6'}, 'deps_file': 'DEPS', 'managed': False, 'name': 'sdk', 'url': 'https://dart.googlesource.com/sdk.git'}]",
+ "--patch_root",
+ "sdk",
+ "--revision_mapping_file",
+ "{}",
+ "--git-cache-dir",
+ "[CACHE]/git",
+ "--cleanup-dir",
+ "[CLEANUP]/bot_update",
+ "--output_json",
+ "/path/to/tmp/json",
+ "--patch_ref",
+ "https://dart.googlesource.com/sdk@refs/heads/master:refs/changes/56/123456/7",
+ "--revision",
+ "sdk@HEAD"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "bot_update",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@Some step text@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"sdk\": \"HEAD\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"manifest\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"properties\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"root\": \"sdk\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"directories\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "runhooks"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "gclient runhooks"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "kill processes"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CACHE]/builder/sdk/tools/bots/test_matrix.json",
+ "/path/to/tmp/json"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "read test-matrix.json",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builder_configurations\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"builders\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dart2js-win-debug-x64-firefox\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"analyzer-linux-release-none\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"meta\": {}, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"steps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Build\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/build.py\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"shards\": 1@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-e co19\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"language_2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test-step 1\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"script\": \"tools/test.py\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"arguments\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"foo\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--bar\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-mdebug\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"-n${runtime}-foo-${mode}-${arch}-bar\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"Test-step 2\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"filesets\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fileset1\": \"[]\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"nameoffileset\": \"[]\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"global\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"chrome\": \"66.0.3359.139\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"firefox\": \"60.0.1\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "remove",
+ "[CACHE]/builder/sdk/.debug.log"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "delete debug log"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/nameoffileset"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "write fileset nameoffileset to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@nameoffileset@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "{'variables': {'files': '[]'}}",
+ "[CACHE]/builder/sdk/fileset1"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "write fileset fileset1 to sdk root",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
+ "@@@STEP_LOG_END@fileset1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "getdep",
+ "-r",
+ "sdk/tools/sdks:dart/dart-sdk/${platform}"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get checked-in SDK version",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[depot_tools]/gclient.py",
+ "revinfo",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19",
+ "--filter=https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy",
+ "--output-json",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "gclient get co19 versions",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output[revinfo]@{@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19/src:dart/third_party/co19\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"sdk/tests/co19_2/src:dart/third_party/co19/legacy\": {@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"rev\": \"git_revision:co19_2_hash\", @@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ \"url\": \"https://chrome-infra-packages.appspot.com/dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@ }@@@",
+ "@@@STEP_LOG_LINE@json.output[revinfo]@}@@@",
+ "@@@STEP_LOG_END@json.output[revinfo]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/browsers"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "create browser cache"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/builder/sdk/browsers",
+ "-ensure-file",
+ "dart/browsers/firefox/${platform} version:60.0.1",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:60.0.1--\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/browsers/firefox/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "kill processes (2)"
+ },
+ {
+ "cmd": [],
+ "name": "preprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/goma/data/dart2js_win_debug_x64_firefox_try"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.goma cache directory",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "restart"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_win_debug_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@cloudtail@https://console.cloud.google.com/logs/viewer?project=goma-logs&resource=gce_instance%2Finstance_id%2Ffakevm999-m9@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "start",
+ "--cloudtail-path",
+ "cloudtail",
+ "--pid-file",
+ "[TMP_BASE]/cloudtail.pid",
+ "--cloudtail-service-account-json",
+ "/creds/service_accounts/service-account-goma-cloudtail.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "preprocess_for_goma.start cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/build.py",
+ "-ax64",
+ "-mdebug",
+ "foo",
+ "--bar",
+ "--no-start-goma",
+ "-j200"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "Build",
+ "timeout": 3000
+ },
+ {
+ "cmd": [],
+ "name": "postprocess_for_goma"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "jsonstatus",
+ "[TMP_BASE]/goma_jsonstatus.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_win_debug_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.goma_jsonstatus",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stat"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_win_debug_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.goma_stat",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/goma/client/goma_ctl.py",
+ "stop"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMACTL_CRASH_REPORT_ID_FILE": "[TMP_BASE]/crash_report_id",
+ "GOMA_CACHE_DIR": "[CACHE]/goma/data/dart2js_win_debug_x64_firefox_try",
+ "GOMA_DIR": "[CACHE]/goma/client",
+ "GOMA_DUMP_COUNTERZ_FILE": "[TMP_BASE]/goma_counterz",
+ "GOMA_DUMP_STATS_FILE": "[TMP_BASE]/goma_stats",
+ "GOMA_ENABLE_COUNTERZ": "true",
+ "GOMA_HERMETIC": "error",
+ "GOMA_SERVICE_ACCOUNT_JSON_FILE": "/creds/service_accounts/service-account-goma-client.json"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop_goma",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--",
+ "python",
+ "RECIPE_REPO[build]/scripts/slave/upload_goma_logs.py",
+ "--upload-compiler-proxy-info",
+ "--log-url-json-file",
+ "/path/to/tmp/json",
+ "--gsutil-py-path",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "--bigquery-upload",
+ "--bigquery-service-account-json",
+ "/creds/service_accounts/service-account-goma-bigquery.json",
+ "--json-status",
+ "[TMP_BASE]/goma_jsonstatus.json",
+ "--build-exit-status",
+ "0",
+ "--goma-stats-file",
+ "[TMP_BASE]/goma_stats",
+ "--goma-counterz-file",
+ "[TMP_BASE]/goma_counterz",
+ "--goma-crash-report-id-file",
+ "[TMP_BASE]/crash_report_id",
+ "--build-id",
+ "8945511751514863184",
+ "--builder-id-json",
+ "{\"bucket\": \"try\", \"builder\": \"dart2js-win-debug-x64-firefox-try\", \"project\": \"dart\"}",
+ "--is-luci",
+ "--buildbot-buildername",
+ "dart2js-win-debug-x64-firefox-try"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.upload_log",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"compiler_proxy_log\": \"https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@compiler_proxy_log@https://chromium-build-stats.appspot.com/compiler_proxy_log/2017/03/30/build11-m1/compiler_proxy.exe.BUILD11-M1.chrome-bot.log.INFO.20170329-222936.4420.gz@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_REPO[build]/scripts/tools/runit.py",
+ "--show-path",
+ "--with-third-party-lib",
+ "--",
+ "python",
+ "RECIPE_MODULE[build::goma]/resources/cloudtail_utils.py",
+ "stop",
+ "--killed-pid-file",
+ "[TMP_BASE]/cloudtail.pid"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try",
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]",
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "postprocess_for_goma.stop cloudtail",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "foo",
+ "--bar",
+ "-e co19",
+ "language_2",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_1"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "Test-step 1"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for Test-step 1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_1/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for Test-step 1",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/test.py",
+ "--progress=status",
+ "--report",
+ "--time",
+ "--silent-failures",
+ "--write-results",
+ "--write-logs",
+ "--clean-exit",
+ "foo",
+ "--bar",
+ "-mdebug",
+ "-nfirefox-foo-debug-x64-bar",
+ "--firefox=browsers\\firefox\\firefox.exe",
+ "--output-directory",
+ "[CLEANUP]/tmp_tmp_2"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "Test-step 2"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/logs.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read logs.json for Test-step 2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@logs.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CLEANUP]/tmp_tmp_2/results.json",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache",
+ "BUILDBOT_BUILDERNAME": "dart2js-win-debug-x64-firefox-try"
+ },
+ "env_suffixes": {
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "read results.json for Test-step 2",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "download previous results"
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+ "--",
+ "RECIPE_REPO[depot_tools]/gsutil.py",
+ "----",
+ "cp",
+ "gs://dart-test-results/builders/dart2js-win-debug-x64-firefox/latest",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "download previous results.gsutil find latest build",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text[latest]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "ensure-directory",
+ "--mode",
+ "0777",
+ "[CACHE]/builder/sdk/LATEST"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "download previous results.ensure LATEST dir",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "download previous results.ensure results.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@results.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "download previous results.ensure flaky.json exists",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@flaky.json@@@"
+ ]
+ },
+ {
+ "cmd": [],
+ "name": "deflaking"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (Test-step 1)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "LATEST/flaky.json",
+ "--changed",
+ "--passing",
+ "--failing",
+ "--count",
+ "50",
+ "LATEST/results.json",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "deflaking.list tests to deflake (Test-step 2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/update_flakiness.dart",
+ "-i",
+ "LATEST/flaky.json",
+ "-o",
+ "/path/to/tmp/",
+ "--build-id",
+ "8945511751514863184",
+ "--commit",
+ "",
+ ""
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "update flakiness information",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text[flaky.json]@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "show",
+ "HEAD",
+ "--format=%at",
+ "-s"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "git show"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/extend_results.dart",
+ "",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "",
+ "[CACHE]/builder/sdk/LATEST/flaky.json",
+ "dart2js-win-debug-x64-firefox-try",
+ "0",
+ "1234567",
+ "refs/changes/123456/7",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "add fields to result records"
+ },
+ {
+ "cmd": [],
+ "name": "upload new results"
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "upload new results.get access token for default account",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/post_results_to_pubsub.dart",
+ "--result_file",
+ "{\"data\":\"result data\"}\n",
+ "--auth_token",
+ "extra.secret.token.should.not.be.logged",
+ "--id",
+ "8945511751514863184"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "upload new results.publish results to pub/sub",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"data\":\"result data\"}\n",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "find new test failures",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"data\":\"result data\"}\n",
+ "--logs",
+ "",
+ "--logs-only",
+ "--changed",
+ "--failing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "find new test failures (logs)",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "tools/bots/compare_results.dart",
+ "--flakiness-data",
+ "",
+ "--human",
+ "--verbose",
+ "[CACHE]/builder/sdk/LATEST/results.json",
+ "{\"data\":\"result data\"}\n",
+ "--changed",
+ "--passing"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "find tests that began passing",
+ "~followup_annotations": [
+ "@@@STEP_LOG_END@raw_io.output_text@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "luci-auth",
+ "token",
+ "-scopes",
+ "https://www.googleapis.com/auth/cloud-platform",
+ "-lifetime",
+ "3m"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "infra_step": true,
+ "name": "get access token for default account"
+ },
+ {
+ "cmd": [
+ "[CACHE]/builder/sdk/tools/sdks/dart-sdk/bin/dart",
+ "[CACHE]/builder/sdk/tools/bots/get_builder_status.dart",
+ "-b",
+ "dart2js-win-debug-x64-firefox-try",
+ "-n",
+ "0",
+ "-a",
+ "extra.secret.token.should.not.be.logged"
+ ],
+ "cwd": "[CACHE]/builder/sdk",
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "test results",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@results.json@{\"data\":\"result data\"}@@@",
+ "@@@STEP_LOG_END@results.json@@@",
+ "@@@STEP_LINK@Test Results@https://dart-ci.firebaseapp.com/cl/123456/7@@@",
+ "@@@STEP_LINK@Documentation@https://goto.google.com/dart-status-file-free-workflow@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "[CACHE]/builder/sdk/tools/task_kill.py",
+ "--kill_browsers=True",
+ "--kill_vsbuild=True"
+ ],
+ "env": {
+ "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
+ },
+ "name": "kill processes (3)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/neo.py b/recipes/dart/neo.py
new file mode 100644
index 0000000..17a92f0
--- /dev/null
+++ b/recipes/dart/neo.py
@@ -0,0 +1,99 @@
+# Copyright 2016 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.
+
+DEPS = [
+ 'dart',
+ 'depot_tools/osx_sdk',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/context',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'build/swarming_client',
+]
+
+
+TEST_MATRIX = {
+ "filesets": {
+ "fileset1": "[]",
+ "nameoffileset": "[]"
+ },
+ "global": {
+ "chrome": "66.0.3359.139",
+ "firefox": "60.0.1"
+ },
+ "builder_configurations": [
+ {
+ "builders": [
+ "dart2js-win-debug-x64-firefox",
+ "analyzer-linux-release-none"
+ ],
+ "meta": {},
+ "steps": [{
+ "name": "Build",
+ "script": "tools/build.py",
+ "arguments": ["foo", "--bar"],
+ "shards": 1
+ }, {
+ "name": "Test-step 1",
+ "script": "tools/test.py",
+ "arguments": ["foo", "--bar", "-e co19", "language_2"],
+ }, {
+ "name": "Test-step 2",
+ "arguments": ["foo", "--bar", "-mdebug",
+ "-n${runtime}-foo-${mode}-${arch}-bar"],
+ }]
+ }
+ ]
+}
+
+
+def RunSteps(api):
+ # Override analyzer cache location to make analyzer runs hermetic.
+ env = {'ANALYZER_STATE_LOCATION_OVERRIDE':
+ api.path['cleanup'].join('analysis-cache')}
+ with api.osx_sdk('mac'), api.context(env=env):
+ _run_steps_impl(api)
+
+
+def _run_steps_impl(api):
+ # If parent_fileset is set, the bot is triggered by
+ # another builder, and we should not download the sdk.
+ # We rely on all files being in the isolate
+ if 'parent_fileset' in api.properties:
+ # todo(athom): this doesn't work on windows, see bug 785362.
+ api.swarming_client.checkout('master')
+ api.dart.download_parent_isolate()
+ else:
+ clobber = 'clobber' in api.properties
+ api.dart.checkout(clobber)
+
+ api.dart.kill_tasks()
+
+ try:
+ api.dart.test(test_data=TEST_MATRIX)
+ finally:
+ api.dart.kill_tasks()
+
+
+def GenTests(api):
+ yield api.test(
+ 'builders/dart2js-win-debug-x64-firefox-try',
+ api.buildbucket.try_build(
+ builder='dart2js-win-debug-x64-firefox-try',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.step_data('add fields to result records',
+ api.raw_io.output_text('{"data":"result data"}\n')),
+ )
+ yield api.test(
+ 'builders/analyzer-triggered',
+ api.buildbucket.ci_build(
+ builder='analyzer-triggered',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.properties.generic(
+ parent_fileset='isolate_123', parent_fileset_name='test_name'),
+ )
diff --git a/recipes/dart/package_co19.expected/basic-with-revision.json b/recipes/dart/package_co19.expected/basic-with-revision.json
new file mode 100644
index 0000000..7ade516
--- /dev/null
+++ b/recipes/dart/package_co19.expected/basic-with-revision.json
@@ -0,0 +1,116 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/co19",
+ "--url",
+ "https://dart.googlesource.com/co19"
+ ],
+ "name": "git setup"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "abcdefgh",
+ "--progress"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git checkout"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git clean"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule sync"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule update"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "create",
+ "-pkg-def",
+ "{\"data\": [{\"dir\": \".\", \"exclude\": []}], \"install_mode\": \"copy\", \"package\": \"dart/third_party/co19\", \"root\": \"[START_DIR]/co19\"}",
+ "-hash-algo",
+ "sha256",
+ "-tag",
+ "git_revision:deadbeef",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "name": "create dart/third_party/co19",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"40-chars-fake-of-the-package-instance_id\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@40-chars-fake-of-the-package-instance_id@https://chrome-infra-packages.appspot.com/p/dart/third_party/co19/+/40-chars-fake-of-the-package-instance_id@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/package_co19.expected/basic-with-variant.json b/recipes/dart/package_co19.expected/basic-with-variant.json
new file mode 100644
index 0000000..171bd1e
--- /dev/null
+++ b/recipes/dart/package_co19.expected/basic-with-variant.json
@@ -0,0 +1,116 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/co19",
+ "--url",
+ "https://dart.googlesource.com/co19"
+ ],
+ "name": "git setup"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "abcdefgh",
+ "--progress"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git checkout"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git clean"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule sync"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule update"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "create",
+ "-pkg-def",
+ "{\"data\": [{\"dir\": \".\", \"exclude\": []}], \"install_mode\": \"copy\", \"package\": \"dart/third_party/co19/legacy\", \"root\": \"[START_DIR]/co19\"}",
+ "-hash-algo",
+ "sha256",
+ "-tag",
+ "git_revision:deadbeef",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "name": "create dart/third_party/co19/legacy",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"40-chars-fake-of-the-package-instance_id\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/third_party/co19/legacy\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@40-chars-fake-of-the-package-instance_id@https://chrome-infra-packages.appspot.com/p/dart/third_party/co19/legacy/+/40-chars-fake-of-the-package-instance_id@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/package_co19.expected/basic.json b/recipes/dart/package_co19.expected/basic.json
new file mode 100644
index 0000000..2636652
--- /dev/null
+++ b/recipes/dart/package_co19.expected/basic.json
@@ -0,0 +1,116 @@
+[
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[depot_tools::git]/resources/git_setup.py",
+ "--path",
+ "[START_DIR]/co19",
+ "--url",
+ "https://dart.googlesource.com/co19"
+ ],
+ "name": "git setup"
+ },
+ {
+ "cmd": [
+ "git",
+ "fetch",
+ "origin",
+ "HEAD",
+ "--progress"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "env": {
+ "PATH": "RECIPE_REPO[depot_tools]:<PATH>"
+ },
+ "infra_step": true,
+ "name": "git fetch"
+ },
+ {
+ "cmd": [
+ "git",
+ "checkout",
+ "-f",
+ "FETCH_HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git checkout"
+ },
+ {
+ "cmd": [
+ "git",
+ "rev-parse",
+ "HEAD"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "read revision",
+ "~followup_annotations": [
+ "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+ "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "git",
+ "clean",
+ "-f",
+ "-d",
+ "-x"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "git clean"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "sync"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule sync"
+ },
+ {
+ "cmd": [
+ "git",
+ "submodule",
+ "update",
+ "--init",
+ "--recursive"
+ ],
+ "cwd": "[START_DIR]/co19",
+ "infra_step": true,
+ "name": "submodule update"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "create",
+ "-pkg-def",
+ "{\"data\": [{\"dir\": \".\", \"exclude\": []}], \"install_mode\": \"copy\", \"package\": \"dart/third_party/co19\", \"root\": \"[START_DIR]/co19\"}",
+ "-hash-algo",
+ "sha256",
+ "-tag",
+ "git_revision:deadbeef",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "name": "create dart/third_party/co19",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"40-chars-fake-of-the-package-instance_id\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"dart/third_party/co19\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@",
+ "@@@STEP_LINK@40-chars-fake-of-the-package-instance_id@https://chrome-infra-packages.appspot.com/p/dart/third_party/co19/+/40-chars-fake-of-the-package-instance_id@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipes/dart/package_co19.py b/recipes/dart/package_co19.py
new file mode 100644
index 0000000..ffd9e39
--- /dev/null
+++ b/recipes/dart/package_co19.py
@@ -0,0 +1,59 @@
+# Copyright 2019 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.
+
+from recipe_engine.post_process import Filter
+
+
+DEPS = [
+ 'depot_tools/git',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/cipd',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/step',
+]
+
+
+def RunSteps(api):
+ revision = api.buildbucket.gitiles_commit.id or 'HEAD'
+ variant = api.properties.get('variant')
+ got_revision = api.git.checkout(url='https://dart.googlesource.com/co19',
+ ref=revision, set_got_revision=True)
+ co19_path = api.path['checkout']
+ package_name = 'dart/third_party/co19'
+ if variant:
+ package_name += '/' + variant
+ pkg = api.cipd.PackageDefinition(package_name, co19_path, 'copy')
+ pkg.add_dir(co19_path)
+ api.cipd.create_from_pkg(pkg, tags={'git_revision': got_revision})
+
+
+def GenTests(api):
+ yield api.test(
+ 'basic',
+ api.buildbucket.ci_build(
+ builder='co19',
+ revision='',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ )
+
+ yield api.test(
+ 'basic-with-revision',
+ api.buildbucket.ci_build(
+ builder='co19',
+ revision='abcdefgh',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ )
+
+ yield api.test(
+ 'basic-with-variant',
+ api.buildbucket.ci_build(
+ builder='co19',
+ revision='abcdefgh',
+ git_repo='https://dart.googlesource.com/sdk',
+ project='dart'),
+ api.properties(variant='legacy'),
+ )