Move testing task request creation into separate module
This makes the testing module a more readable size, and removes
dependencies from fuchsia/build recipe onto the testing module, which
is conceptually cleaner.
Also remove several tests from the testing recipe module example, since
they're not needed for coverage.
Bug: 41486
Change-Id: I7e3a93c5d0cf20a391869d1c3114f2b65e27678b
diff --git a/recipe_modules/build/examples/full.py b/recipe_modules/build/examples/full.py
index 6f6fc84..28807fe 100644
--- a/recipe_modules/build/examples/full.py
+++ b/recipe_modules/build/examples/full.py
@@ -24,7 +24,7 @@
'fuchsia/experimental',
'fuchsia/fuchsia',
'fuchsia/jiri',
- 'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'recipe_engine/buildbucket',
'recipe_engine/cipd',
@@ -245,7 +245,7 @@
# artifacts has to be configured before calling shard_requests().
api.artifacts.gcs_bucket = gcs_bucket
api.artifacts.uuid = 'uuid'
- shard_requests = api.testing.shard_requests(
+ shard_requests = api.testing_requests.shard_requests(
build_artifacts,
api.buildbucket.build,
0,
@@ -490,16 +490,16 @@
properties=dict(build_generated_sources=True),
)
- download_orchestration_inputs = api.testing.shards_step_data(
+ download_orchestration_inputs = api.testing_requests.shards_step_data(
step_name='download test orchestration inputs.load test shards',
shards=[
api.testsharder.shard(
name='QEMU',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
- ]) + api.testing.task_requests_step_data(
- [api.testing.task_request_jsonish(legacy_qemu=True)],
+ ]) + api.testing_requests.task_requests_step_data(
+ [api.testing_requests.task_request_jsonish(legacy_qemu=True)],
'download test orchestration inputs.load task requests',
)
diff --git a/recipe_modules/testing/__init__.py b/recipe_modules/testing/__init__.py
index c64ac94..dbbe755 100644
--- a/recipe_modules/testing/__init__.py
+++ b/recipe_modules/testing/__init__.py
@@ -1,9 +1,9 @@
+# Copyright 2019 The Fuchsia 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 = [
- 'fuchsia/artifacts',
- 'fuchsia/build',
'fuchsia/buildbucket_util',
- 'fuchsia/cloudkms',
- 'fuchsia/experimental',
'fuchsia/gsutil',
'fuchsia/minfs',
'fuchsia/emu',
@@ -11,13 +11,11 @@
'fuchsia/swarming_retry',
'fuchsia/symbolize',
'fuchsia/tar',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'fuchsia/upload',
- 'fuchsia/zbi',
'recipe_engine/buildbucket',
- 'recipe_engine/cipd',
'recipe_engine/context',
- 'recipe_engine/isolated',
'recipe_engine/json',
'recipe_engine/file',
'recipe_engine/path',
diff --git a/recipe_modules/testing/api.py b/recipe_modules/testing/api.py
index 2e7f7c3..2d2a506 100644
--- a/recipe_modules/testing/api.py
+++ b/recipe_modules/testing/api.py
@@ -3,7 +3,6 @@
# found in the LICENSE file.
import collections
-import copy
import attr
@@ -15,42 +14,14 @@
# List of available targets.
TARGETS = ['x64', 'arm64']
-# The PCI address to use for the block device to contain test results.
-TEST_FS_PCI_ADDR = '06.0'
-
-# The path in the BootFS manifest that we want runcmds to show up at.
-RUNCMDS_BOOTFS_PATH = 'infra/runcmds'
-
-SECRETSHIM_CIPD_VERSION = 'git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645'
-
# Name of BigQuery project and table for uploading artifacts.
BIGQUERY_PROJECT = 'fuchsia-infra'
BIGQUERY_ARTIFACTS_DATASET = 'artifacts'
-
-# Image and manifest names produced by the build.
-IMAGES_JSON = 'images.json'
-STORAGE_FULL = 'storage-full'
-
-TEST_RESULTS_ARCHIVE_NAME = 'out.tar'
-TEST_RESULTS_MINFS_NAME = 'output.fs'
-SERIAL_LOG_NAME = 'serial.txt'
-SYSLOG_NAME = 'syslog.txt'
TEST_SUMMARY_JSON = 'summary.json'
KERNEL_LOG = 'kernel_log.txt'
COVARGS_LOG_LEVEL = 'debug'
COVARGS_OUTPUT_JSON = 'covargs-output.json'
-# The log level to use for botanist invocations in test tasks. Can be one of
-# "fatal", "error", "warning", "info", "debug", or "trace", where "trace" is
-# the most verbose, and fatal is the least.
-BOTANIST_LOG_LEVEL = 'debug'
-
-# The path to the botanist config for devices preprovisioned into containers.
-BOTANIST_DEVICE_CONFIG = '/etc/botanist/config.json'
-
-# System path at which authorized SSH keys are stored.
-AUTHORIZED_KEY_PATH = 'data/ssh/authorized_keys'
-
@attr.s
class FuchsiaTestResults(object):
@@ -234,7 +205,7 @@
# Check serial log for failure messages
# TODO(9936): Replace with running binary tool once created.
fail_strings = ['DEVICE SUSPEND TIMED OUT', 'ASSERT FAILED']
- log_path = self.output_dir.join(SERIAL_LOG_NAME)
+ log_path = self.output_dir.join(self._api.testing_requests.SERIAL_LOG_NAME)
self._api.path.mock_add_paths(log_path)
if self._api.path.exists(log_path):
self._check_log_for_failures(log_path, fail_strings)
@@ -343,7 +314,8 @@
attempt.test_results_archive = None
for relative_path, absolute_path in sorted(result.outputs.iteritems()):
if relative_path in [
- TEST_RESULTS_ARCHIVE_NAME, TEST_RESULTS_MINFS_NAME
+ self._api.testing_requests.TEST_RESULTS_ARCHIVE_NAME,
+ self._api.testing_requests.TEST_RESULTS_MINFS_NAME
]:
attempt.test_results_archive = absolute_path
@@ -403,7 +375,8 @@
# Check serial log for failure messages
# TODO(9936): Replace with running binary tool once created.
fail_strings = ['DEVICE SUSPEND TIMED OUT', 'ASSERT FAILED']
- log_path = attempt.result.output_dir.join(SERIAL_LOG_NAME)
+ log_path = attempt.result.output_dir.join(
+ self._api.testing_requests.SERIAL_LOG_NAME)
self._api.path.mock_add_paths(log_path)
if self._api.path.exists(log_path):
log_name = self._api.path.basename(log_path)
@@ -515,7 +488,10 @@
passed_tests_step.presentation.step_text = ''.join(
'\n' + test_name for test_name in passed_tests)
- for log_name in [SYSLOG_NAME, SERIAL_LOG_NAME]:
+ for log_name in [
+ self._api.testing_requests.SYSLOG_NAME,
+ self._api.testing_requests.SERIAL_LOG_NAME
+ ]:
if log_name in attempt.result.outputs:
self._present_output_file(
name=log_name, path=attempt.result.outputs[log_name], step=step)
@@ -545,233 +521,6 @@
return Task(*args, api=api, **kwargs)
-class _TaskRequester(object):
- """Creates requests for swarming tasks that run tests."""
-
- def __init__(self, api, buildbucket_build, per_test_timeout_secs, pool,
- swarming_expiration_timeout_secs, swarming_io_timeout_secs,
- timeout_secs, use_runtests):
- self._api = api
- self._buildbucket_build = buildbucket_build
- self._per_test_timeout_secs = per_test_timeout_secs
- self._pool = pool
- self._swarming_expiration_timeout_secs = swarming_expiration_timeout_secs
- self._swarming_io_timeout_secs = swarming_io_timeout_secs
- self._timeout_secs = timeout_secs
- self._use_runtests = use_runtests
-
- def request(self, shard, build_artifacts):
- # Copy the build_artifacts object to be modified for each shard.
- build_artifacts = copy.deepcopy(build_artifacts)
-
- if self._api.testing._uses_legacy_qemu(shard):
- task_request = self._api.testing._construct_legacy_qemu_task_request(
- task_name=shard.name,
- pool=self._pool,
- build_artifacts=build_artifacts,
- timeout_secs=self._timeout_secs,
- swarming_io_timeout_secs=self._swarming_io_timeout_secs,
- swarming_expiration_timeout_secs=(
- self._swarming_expiration_timeout_secs),
- # TODO(IN-654): Add support for secret_bytes.
- secret_bytes='',
- qemu_type=shard.device_type,
- shard=shard,
- )
- else:
- task_request = self._construct_test_task_request(
- build_artifacts=build_artifacts, shard=shard)
-
- return self._api.build.ShardTaskRequest(shard, task_request)
-
- def _construct_test_task_request(self, build_artifacts, shard):
- """Constructs a Swarming task request to run a shard of Fuchsia tests.
-
- Args:
- build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
- shard (api.testsharder.Shard): A shard of tests.
- timeout_secs (int): The amount of seconds to wait for the tests to execute
- before giving up.
-
- Returns:
- An api.swarming.TaskRequest representing the swarming task request.
- """
- # To freely archive files from the build directory, the source, and those we
- # dynamically create, we create a tree of symlinks in a fresh directory and
- # isolate that. This solves the problems of (a) finding a root directory
- # that works for all artifacts, (b) being able to create files in that
- # directory without fear of collision, and (c) not having to isolate
- # extraneous files.
- isolate_tree = self._api.file.symlink_tree(
- root=self._api.path.mkdtemp('isolate'))
-
- test_manifest = 'tests.json'
- self._api.file.write_json(
- 'write test manifest',
- isolate_tree.root.join(test_manifest),
- [test.render_to_jsonish() for test in shard.tests],
- indent=2)
-
- cmd = []
- outputs = []
- ensure_file = self._api.cipd.EnsureFile()
- dimensions = {'pool': self._pool}
- test_bot_cpu = 'x64'
- is_emu_type = self._api.emu.is_emulator_type(shard.device_type)
-
- # This command spins up a metadata server that allows its subcommands to
- # automagically authenticate with LUCI auth, provided the sub-exec'ed tool
- # was written in go or dart and respectively makes use of the standard
- # cloud.google.com/go/compute/metadata or
- # github.com/dart-lang/googleapis_auth authentication libraries. Such
- # libraries look for a metadata server under environment variables
- # like $GCE_METADATA_HOST, which LUCI emulates.
- if shard.service_account:
- # TODO(fxbug.dev/37142): Find a way to use the version that LUCI is
- # currently using, instead of 'latest'.
- ensure_file.add_package('infra/tools/luci-auth/${platform}', 'latest')
- cmd.extend(['./luci-auth', 'context', '--'])
-
- if is_emu_type:
- dimensions.update(os='Debian', cpu=build_artifacts.target, kvm='1')
- # To take advantage of KVM, we execute QEMU-arm tasks on arm hardware.
- test_bot_cpu = build_artifacts.target
- else:
- dimensions.update(shard.dimensions)
-
- if shard.targets_fuchsia:
- botanist_cmd = [
- './botanist',
- '-level', BOTANIST_LOG_LEVEL,
- 'run',
- '-images', IMAGES_JSON,
- '-timeout', '%ds' % self._timeout_secs,
- '-syslog', SYSLOG_NAME,
- '-serial-log', SERIAL_LOG_NAME,
- ] # yapf: disable
- outputs.append(SYSLOG_NAME)
- outputs.append(SERIAL_LOG_NAME)
-
- # TODO(fxbug.dev/40840): Once we can scope the proxy server to a
- # an individual task, we can make free use of it in the emulator case.
- if not is_emu_type:
- botanist_cmd.extend([
- # For container networking and authentication reasons, we access GCS
- # via a proxy server running on the controller.
- '-repo', self._api.artifacts.package_repo_url(host='$GCS_PROXY_HOST'),
- '-blobs', self._api.artifacts.package_blob_url(host='$GCS_PROXY_HOST'),
- ]) # yapf: disable
-
- config = BOTANIST_DEVICE_CONFIG
- if self._api.emu.is_emulator_type(shard.device_type):
- config = './qemu.json'
- botanist_cmd.extend(
- ['-ssh', build_artifacts.DEFAULT_ISOLATED_LAYOUT.private_key])
- qemu_config = [{
- 'type': shard.device_type.lower(),
- 'path': './%s/bin' % shard.device_type.lower(),
- 'target': build_artifacts.target,
- 'cpu': 8,
- 'memory': 8192,
- 'kvm': True,
- }]
-
- if shard.device_type == 'AEMU':
- self._api.emu.add_aemu_to_ensure_file(ensure_file, subdir='aemu/bin')
- elif shard.device_type == 'QEMU':
- self._api.emu.add_qemu_to_ensure_file(ensure_file, subdir='qemu')
-
- self._api.file.write_json(
- 'write qemu config',
- isolate_tree.root.join('qemu.json'),
- qemu_config,
- indent=2)
- elif shard.netboot:
- botanist_cmd.append('-netboot')
-
- botanist_cmd.extend(['-config', config])
-
- cmd.extend(botanist_cmd)
-
- cmd.extend([
- './testrunner',
- '-archive',
- TEST_RESULTS_ARCHIVE_NAME,
- ])
- if self._use_runtests:
- cmd.append('-use-runtests')
- if self._per_test_timeout_secs:
- cmd.extend(['-per-test-timeout', '%ds' % self._per_test_timeout_secs])
- cmd.append(test_manifest)
-
- outputs.append(TEST_RESULTS_ARCHIVE_NAME)
-
- isolated_hash = self._api.testing._isolate_build_artifacts(
- isolate_tree, build_artifacts, shard=shard, test_bot_cpu=test_bot_cpu)
-
- env_name = '%s-%s' % (shard.device_type or shard.os, build_artifacts.target)
- tags = {'test_environment_name': [env_name]}
-
- request = (self._api.swarming.task_request().
- with_name(shard.name).
- with_service_account(shard.service_account).
- with_tags(tags)
- ) #yapf: disable
- return request.with_slice(0, request[0].
- with_command(cmd).
- with_isolated(isolated_hash).
- with_dimensions(**dimensions).
- with_expiration_secs(self._swarming_expiration_timeout_secs).
- with_io_timeout_secs(self._swarming_io_timeout_secs).
- with_execution_timeout_secs(self._timeout_secs).
- with_outputs(outputs).
- with_cipd_ensure_file(ensure_file).
- with_env_vars(**self._test_task_env_vars(shard, build_artifacts))
- ) #yapf: disable
-
- def _test_task_env_vars(self, shard, build_artifacts):
- """Returns the environment variables to be set for the test task.
-
- Returns:
- A dict mapping string env var names to string values.
- """
- build = self._buildbucket_build
- commit = build.input.gitiles_commit
- llvm_symbolizer = self._api.path.basename(build_artifacts.llvm_symbolizer)
- env_vars = dict(
- # `${ISOLATED_OUTDIR}` is a magic string that Swarming will replace
- # with a temporary directory into which files will be automatically
- # collected upon exit of a task.
- FUCHSIA_TEST_OUTDIR='${ISOLATED_OUTDIR}',
- BUILDBUCKET_ID=str(build.id),
- BUILD_BOARD=build_artifacts.board,
- BUILD_TYPE=build_artifacts.build_type,
- BUILD_PRODUCT=build_artifacts.product,
- BUILD_TARGET=build_artifacts.target,
- BUILDBUCKET_BUCKET=build.builder.bucket,
-
- # Used for symbolization:
- ASAN_SYMBOLIZER_PATH=llvm_symbolizer,
- UBSAN_SYMBOLIZER_PATH=llvm_symbolizer,
- LSAN_SYMBOLIZER_PATH=llvm_symbolizer,
-
- # Used by the catapult converter
- BUILD_CREATE_TIME=str(build.create_time.seconds),
- BUILDER_NAME=build.builder.builder,
- FUCHSIA_DEVICE_TYPE=shard.device_type,
- INPUT_COMMIT_HOST=commit.host,
- INPUT_COMMIT_PROJECT=commit.project,
- INPUT_COMMIT_REF=commit.ref,
- )
- # For some reason, empty string environment variables sent to the swarming
- # API get interpreted as null and rejected. So don't bother sending them to
- # avoid breaking the task request.
- # TODO(olivernewman): Figure out whether this logic should be moved into
- # the upstream swarming module (or obviated by fixing the "" -> null
- # behavior).
- return {k: v for k, v in env_vars.iteritems() if v}
-
-
class _ShardedTestRunner(object):
"""Handles running and analyzing tests that have been split into shards."""
@@ -833,88 +582,6 @@
super(FuchsiaTestApi, self).__init__(*args, **kwargs)
self._test_runner = None
- def deprecated_shard_requests(self,
- build_artifacts,
- test_cmds,
- device_type,
- pool,
- timeout_secs,
- pave,
- requires_secrets=False,
- swarming_expiration_timeout_secs=18000,
- swarming_io_timeout_secs=5 * 60):
- """Returns a swarming task request for testing in the deprecated way.
-
- Args:
- build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
- test_cmds (list[str]): Command to have Fuchsia run on boot.
- pool (str): Swarming pool from which the test task will be drawn.
- timeout_secs (int): The amount of seconds to wait for the tests to execute
- before giving up.
- pave (bool): Whether to pave the image to disk. Ignored if device_type ==
- 'QEMU'.
- requires_secrets (bool): Whether tests require plaintext secrets; ignored
- if device_type != 'QEMU'.
- swarming_expiration_timeout_secs (int): Maximum run time for the swarming
- task, once scheduled (enforced by swarming).
- swarming_io_timeout_secs (int): The swarming task will be killed if it does
- not produce any output for this long.
-
- Returns:
- A list of a single ShardTaskRequest.
- """
- assert test_cmds
- assert device_type
-
- self.m.minfs.minfs_path = build_artifacts.minfs
- self.m.zbi.zbi_path = build_artifacts.zbi
-
- # Copy build_artifacts because we modify its contents below.
- build_artifacts = copy.deepcopy(build_artifacts)
- self._install_runcmds_files(
- build_artifacts,
- device_type=device_type,
- pave=pave,
- test_cmds=test_cmds,
- )
-
- if self.m.emu.is_emulator_type(device_type):
- secret_bytes = ''
- if requires_secrets:
- secret_bytes = self.m.json.dumps(self._decrypt_secrets(build_artifacts))
- task = self._construct_legacy_qemu_task_request(
- task_name='all tests',
- build_artifacts=build_artifacts,
- pool=pool,
- timeout_secs=timeout_secs,
- swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
- swarming_io_timeout_secs=swarming_io_timeout_secs,
- secret_bytes=secret_bytes,
- qemu_type=device_type,
- )
- else:
- task = self._construct_device_task_request(
- task_name='all tests',
- device_type=device_type,
- build_artifacts=build_artifacts,
- pool=pool,
- pave=pave,
- timeout_secs=timeout_secs,
- swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
- swarming_io_timeout_secs=swarming_io_timeout_secs,
- )
- # In the deprecated testing code paths, shards are not used, but it makes
- # other code simpler to have a valid shard here.
- dummy_shard = self.m.testsharder.Shard('dummy', (), {})
- return [self.m.build.ShardTaskRequest(dummy_shard, task)]
-
- def deprecated_test_cmds(self, spec):
- runtests_cmd_parts = ['runtests', '-o', self.results_dir_on_target]
- if spec.test.per_test_timeout_secs:
- runtests_cmd_parts.extend(['-i', '%d' % spec.test.per_test_timeout_secs])
- runtests_cmd_parts.append(spec.test.runtests_args)
- return [' '.join(runtests_cmd_parts)]
-
def _analyze_test_results(self, test_results, presentation=None):
"""Analyzes test results represented by FuchsiaTestResults objects
@@ -982,7 +649,7 @@
self.m.step('covargs', cmd)
# TODO: move this into gsutil module/deduplicate this with other GCS logic
- dst = 'builds/%s/coverage' % self.m.buildbucket.build_id
+ dst = 'builds/%s/coverage' % self.m.buildbucket_util.id
step_result = self.m.gsutil.rsync(
name='upload coverage',
src=output_dir,
@@ -998,99 +665,6 @@
step_result.presentation.links['index.html'] = self.m.gsutil._http_url(
gcs_bucket, self.m.gsutil.join(dst, 'index.html'), True)
- def _isolate_build_artifacts(self,
- isolate_tree,
- build_artifacts,
- shard=None,
- test_bot_cpu='x64',
- legacy_qemu=False):
- """Populates a tree with build artifacts and isolates it.
-
- Specifically, the following is linked into or created within the tree:
- - The images in the build are linked in and manifest of them is created
- in the root, if targeting a fuchsia device;
- - The Linux/Mac tests in the shard and their runtime dependencies.
-
- Args:
- isolate_tree (api.file.SymlinkTree): A tree into which artifacts may be
- linked.
- build (FuchsiaBuildResults): The result of a fuchsia build.
- shard (api.testsharder.Shard|None): A test shard.
- test_bot_cpu (str|None): The host cpu of the bot running the test task.
- legacy_qemu (bool): Whether to only isolate the images needed to run QEMU
- alone.
-
- Returns:
- The isolated hash that may be used to reference and download the
- artifacts.
- """
-
- def register_link(relpath):
- """Prepares a symlink of a relative path within the build directory to the tree."""
- isolate_tree.register_link(
- target=build_artifacts.fuchsia_build_dir.join(relpath),
- linkname=isolate_tree.root.join(relpath),
- )
-
- # TODO(IN-931): Remove `shard is None` condition once device and QEMU
- # codepaths are passing shard and using _construct_test_task_request().
- no_shard = shard is None
- if no_shard or shard.targets_fuchsia:
- image_list = build_artifacts.images.values()
- # In the case of an emulated target, we restrict what we isolate to the
- # bare essentials to avoid the needless downloading of several gigabytes
- # of images on the other end.
- is_emulated_target = (
- (no_shard and legacy_qemu) or
- (shard and self.m.emu.is_emulator_type(shard.device_type))
- ) # yapf: disable
- if is_emulated_target:
- image_list = [
- img for img in image_list
- if img['name'] in ['qemu-kernel', 'zircon-a', 'storage-full']
- ] # yapf: disable
- image_manifest_path = isolate_tree.root.join(IMAGES_JSON)
- self.m.file.write_json(
- 'write image manifest', image_manifest_path, image_list, indent=2)
- for image in image_list:
- register_link(image['path'])
-
- if shard:
- for test in shard.tests:
- if test.os in ['linux', 'mac']:
- register_link(test.path)
- for dep in shard.deps:
- register_link(dep)
-
- # If targeting QEMU we include a private key corresponding to an authorized
- # key already in the boot image; this is needed as we do not pave QEMU.
- if shard and self.m.emu.is_emulator_type(shard.device_type):
- isolate_tree.register_link(
- target=build_artifacts.private_key,
- linkname=isolate_tree.root.join(
- build_artifacts.DEFAULT_ISOLATED_LAYOUT.private_key,),
- )
-
- for tool in [
- build_artifacts.botanist(test_bot_cpu),
- build_artifacts.testrunner(test_bot_cpu),
- build_artifacts.llvm_symbolizer,
- build_artifacts.bootserver,
- ]:
- tool_name = self.m.path.basename(tool)
- isolate_tree.register_link(
- target=tool, linkname=isolate_tree.root.join(tool_name))
-
- isolate_tree.create_links('create tree of build artifacts')
- isolated = self.m.isolated.isolated(isolate_tree.root)
- isolated.add_dir(isolate_tree.root)
- return isolated.archive('isolate build artifacts')
-
- @property
- def results_dir_on_target(self):
- """The directory on target to which target test results will be written."""
- return '/tmp/infra-test-output'
-
@property
def results_dir_on_host(self):
"""The directory on host to which host and target test results will be written.
@@ -1101,229 +675,6 @@
"""
return self.m.path['cleanup'].join('test_results')
- def _create_runcmds_script(self, device_type, test_cmds, output_path):
- """Creates a script for running tests on boot."""
- # The device topological path is the toplogical path to the block device
- # which will contain test output.
- device_topological_path = '/dev/sys/pci/00:%s/virtio-block/block' % (
- TEST_FS_PCI_ADDR)
-
- # Script that mounts the block device to contain test output and runs tests,
- # dropping test output into the block device.
- results_dir = self.results_dir_on_target
- runcmds = [
- 'mkdir %s' % results_dir,
- ]
- if self.m.emu.is_emulator_type(device_type):
- runcmds.extend([
- # Wait until the MinFS test image shows up (max <timeout> ms).
- 'waitfor class=block topo=%s timeout=60000' % device_topological_path,
- 'mount %s %s' % (device_topological_path, results_dir),
- ] + test_cmds + [
- 'umount %s' % results_dir,
- 'dm poweroff',
- ])
- else:
- runcmds.extend(test_cmds)
- runcmds_bytes = []
- for line in runcmds:
- if isinstance(line, unicode):
- runcmds_bytes.append(line.encode('utf-8'))
- elif isinstance(line, str):
- runcmds_bytes.append(line)
- else: # pragma: no cover
- assert False, 'line is not unicode or a str: %s, %s' % (line,
- type(line))
- self.m.file.write_text('write runcmds', output_path,
- '\n'.join(runcmds_bytes))
-
- def _construct_legacy_qemu_task_request(self,
- task_name,
- build_artifacts,
- pool,
- timeout_secs,
- swarming_expiration_timeout_secs,
- swarming_io_timeout_secs,
- secret_bytes,
- qemu_type,
- shard=None):
- """Constructs a Swarming task request which runs Fuchsia tests inside QEMU.
-
- Expects the build and artifacts to be at the same place they were at
- the end of the build.
-
- Args:
- build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
- pool (str): Swarming pool from which the test task will be drawn.
- timeout_secs (int): The amount of seconds to wait for the tests to execute
- before giving up.
- secret_bytes (str): secret bytes to pass to the QEMU task.
- qemu_type (str): type of qemu, either QEMU or AEMU.
- shard (api.testsharder.Shard|None): The shard associated with the task or
- None if it's not a shard.
-
- Returns:
- An api.swarming.TaskRequest representing the swarming task request.
- """
- # To freely archive files from the build directory, the source, and those we
- # dynamically create, we create a tree of symlinks in a fresh directory and
- # isolate that. This solves the problems of (a) finding a root directory
- # that works for all artifacts, (b) being able to create files in that
- # directory without fear of collision, and (c) not having to isolate
- # extraneous files.
- isolate_tree = self.m.file.symlink_tree(root=self.m.path.mkdtemp('isolate'))
-
- # As part of running tests, we'll send a MinFS image over to another machine
- # which will be declared as a block device in QEMU, at which point
- # Fuchsia will mount it and write test output to. We choose 3.5G for the
- # MinFS image arbitrarily, as it appears it can hold our test output
- # comfortably without going overboard on size.
- #
- minfs_image_path = isolate_tree.root.join(TEST_RESULTS_MINFS_NAME)
- self.m.minfs.create(minfs_image_path, '3584M', name='create test image')
-
- ensure_file = self.m.cipd.EnsureFile()
-
- botanist_cmd = [
- './botanist',
- '-level', BOTANIST_LOG_LEVEL,
- 'qemu',
- '-type', '%s' % qemu_type.lower(),
- '-qemu-dir', './%s/bin' % qemu_type.lower(),
- '-images', IMAGES_JSON,
- '-arch', build_artifacts.target,
- '-minfs', TEST_RESULTS_MINFS_NAME,
- '-pci-addr', TEST_FS_PCI_ADDR,
- '-use-kvm'
- ] # yapf: disable
-
- if secret_bytes:
- # Wrap botanist command with secretshim which starts the secrets server
- # before running the following command.
- botanist_cmd = ['./secretshim'] + botanist_cmd
- ensure_file.add_package('fuchsia/infra/secretshim/${platform}',
- SECRETSHIM_CIPD_VERSION)
-
- if [v for v in ['asan', 'profile'] if v in build_artifacts.variants]:
- botanist_cmd.extend([
- '-cpu',
- str(8),
- '-memory',
- str(8192),
- ])
-
- # storage-full not being present signifies the exclusion of the system
- # partition, which means `boot` (i.e. running on boot) must be used instead
- # of `system` (i.e., running after the system partition is mounted).
- storage_free_build = STORAGE_FULL not in build_artifacts.images
- arg_key = 'zircon.autorun.%s' % ('boot' if storage_free_build else 'system')
- botanist_cmd.append('%s=/boot/bin/sh+/boot/%s' %
- (arg_key, self._get_runcmds_path_per_shard(shard)))
-
- isolated_hash = self._isolate_build_artifacts(
- isolate_tree,
- build_artifacts,
- # To take advantage of KVM, we execute QEMU-arm tasks on arm hardware.
- test_bot_cpu=build_artifacts.target,
- legacy_qemu=True,
- )
-
- if qemu_type == 'AEMU':
- self.m.emu.add_aemu_to_ensure_file(ensure_file, subdir='aemu/bin')
- elif qemu_type == 'QEMU':
- self.m.emu.add_qemu_to_ensure_file(ensure_file, subdir='qemu')
-
- env_name = '%s-%s' % (qemu_type, build_artifacts.target)
- tags = {
- # consumed by google3 results uploader
- 'test_environment_name': [env_name],
- # consumed by this recipe module
- 'uses_legacy_qemu': ['true']
- }
- request = self.m.swarming.task_request().with_name(task_name).with_tags(
- tags)
- return (request.with_slice(0, request[0].
- with_command(botanist_cmd).
- with_isolated(isolated_hash).
- with_dimensions(pool=pool, os='Debian', cpu=build_artifacts.target, kvm='1').
- with_io_timeout_secs(swarming_io_timeout_secs).
- with_execution_timeout_secs(timeout_secs).
- with_expiration_secs(swarming_expiration_timeout_secs).
- with_secret_bytes(secret_bytes).
- with_outputs([TEST_RESULTS_MINFS_NAME]).
- with_cipd_ensure_file(ensure_file)
- )) #yapf: disable
-
- def _construct_device_task_request(self, task_name, device_type,
- build_artifacts, pool, pave, timeout_secs,
- swarming_expiration_timeout_secs,
- swarming_io_timeout_secs):
- """Constructs a Swarming task request to run Fuchsia tests on a device.
-
- Expects the build and artifacts to be at the same place they were at
- the end of the build.
-
- Args:
- build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
- pool (str): Swarming pool from which the test task will be drawn.
- pave (bool): Whether or not the build artifacts should be paved.
- timeout_secs (int): The amount of seconds to wait for the tests to execute
- before giving up.
-
- Returns:
- An api.swarming.TaskRequest representing the swarming task request.
- """
- # Construct the botanist command.
- botanist_cmd = [
- './botanist',
- '-level', BOTANIST_LOG_LEVEL,
- 'zedboot',
- '-config', BOTANIST_DEVICE_CONFIG,
- '-images', IMAGES_JSON,
- '-results-dir', self.results_dir_on_target,
- '-out', TEST_RESULTS_ARCHIVE_NAME,
- '-serial-log', SERIAL_LOG_NAME,
- ] # yapf: disable
-
- if not pave:
- botanist_cmd.append('-netboot')
-
- # storage-full not being present signifies the exclusion of the system
- # partition, which means `boot` (i.e. running on boot) must be used instead
- # of `system` (i.e., running after the system partition is mounted).
- storage_free_build = STORAGE_FULL not in build_artifacts.images
- arg_key = 'zircon.autorun.%s' % ('boot' if storage_free_build else 'system')
- botanist_cmd.append('%s=/boot/bin/sh+/boot/%s' %
- (arg_key, RUNCMDS_BOOTFS_PATH))
-
- # To freely archive files from the build directory, the source, and those we
- # dynamically create, we create a tree of symlinks in a fresh directory and
- # isolate that. This solves the problems of (a) finding a root directory
- # that works for all artifacts, (b) being able to create files in that
- # directory without fear of collision, and (c) not having to isolate
- # extraneous files.
- isolate_tree = self.m.file.symlink_tree(root=self.m.path.mkdtemp('isolate'))
- isolated_hash = self._isolate_build_artifacts(isolate_tree, build_artifacts)
-
- dimensions = {
- 'pool': pool,
- 'device_type': device_type,
- }
-
- env_name = '%s-%s' % (device_type, build_artifacts.target)
- tags = {'test_environment_name': [env_name]}
- request = self.m.swarming.task_request().with_name(task_name).with_tags(
- tags)
- return (request.with_slice(0, request[0].
- with_command(botanist_cmd).
- with_isolated(isolated_hash).
- with_dimensions(**dimensions).
- with_expiration_secs(swarming_expiration_timeout_secs).
- with_io_timeout_secs(swarming_io_timeout_secs).
- with_execution_timeout_secs(timeout_secs).
- with_outputs([TEST_RESULTS_ARCHIVE_NAME, SERIAL_LOG_NAME])
- )) #yapf: disable
-
def _extract_test_results_archive(self,
step_name,
archive_path,
@@ -1357,43 +708,6 @@
directory=self.m.raw_io.output_dir(leak_to=leak_to),
).raw_io.output_dir
- def _decrypt_secrets(self, build_artifacts):
- """Decrypts the secrets included in the build.
-
- Args:
- build (FuchsiaBuildResults): The build for which secret specs were
- generated.
-
- Returns:
- The dictionary that maps secret spec name to the corresponding plaintext.
- """
- self.m.cloudkms.ensure()
-
- secret_spec_dir = build_artifacts.secret_specs
- secrets_map = {}
- with self.m.step.nest('process secret specs'):
- secret_spec_files = self.m.file.listdir('list', secret_spec_dir)
- for secret_spec_file in secret_spec_files:
- basename = self.m.path.basename(secret_spec_file)
- # Skip the 'ciphertext' subdirectory.
- if basename == 'ciphertext':
- continue
-
- secret_name, _ = basename.split('.json', 1)
- secret_spec = self.m.json.read('read spec for %s' % secret_name,
- secret_spec_file).json.output
-
- # For each test spec file <name>.json in this directory, there is an
- # associated ciphertext file at ciphertext/<name>.ciphertext.
- ciphertext_file = secret_spec_dir.join('ciphertext',
- '%s.ciphertext' % secret_name)
-
- key_path = secret_spec['cloudkms_key_path']
- secrets_map[secret_name] = self.m.cloudkms.decrypt(
- 'decrypt secret for %s' % secret_name, key_path, ciphertext_file,
- self.m.raw_io.output()).raw_io.output
- return secrets_map
-
def deprecated_test(self, *args, **kwargs):
"""Tests a Fuchsia build on the specified device with retries.
@@ -1534,14 +848,15 @@
# was returned in, to a Path object pointing to its location on the
# local disk. For each of the above tasks, there should be exactly
# one output.
- if SERIAL_LOG_NAME in task_result.outputs:
- serial_log = task_result.outputs.pop(SERIAL_LOG_NAME)
+ serial_log_name = self.m.testing_requests.SERIAL_LOG_NAME
+ if serial_log_name in task_result.outputs:
+ serial_log = task_result.outputs.pop(serial_log_name)
serial_log_contents = self.m.file.read_text(
'read serial.txt', serial_log, test_data=[])
serial_presentation = (
presentation or self.m.step.active_result.presentation)
- serial_presentation.logs[SERIAL_LOG_NAME] = (
+ serial_presentation.logs[serial_log_name] = (
serial_log_contents.splitlines())
assert len(task_result.outputs) == 1, 'len(%s) != 1' % repr(
task_result.outputs)
@@ -1588,58 +903,6 @@
return launch, collect, process
- def shard_requests(
- self,
- build_artifacts,
- buildbucket_build,
- per_test_timeout_secs,
- pool,
- swarming_expiration_timeout_secs,
- swarming_io_timeout_secs,
- use_runtests,
- # TODO(garymm): Remove default value.
- # We should always get this from a spec.
- timeout_secs=40 * 60):
- """Returns a _ShardTaskRequest for each shard in build_artifact.shards.
-
- Args:
- build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
- buildbucket_build (build_pb2.Build): The buildbucket build that is going
- to orchestrate testing.
- per_test_timeout_secs (int): Any test that executes for longer than this
- will be considered failed.
- pool (str): The Swarming pool to schedule test tasks in.
- use_runtests (bool): Whether to use runtests (or else run_test_component)
- when executing tests on target.
- timeout_secs (int): The amount of seconds to wait for the tests to execute
- before giving up.
- """
-
- self.m.minfs.minfs_path = build_artifacts.minfs
- self.m.zbi.zbi_path = build_artifacts.zbi
- # This modifies the build artifacts so must be done before calling
- # task_requester.request().
- self._install_runcmds_files(
- build_artifacts,
- test_in_shards=True,
- per_test_timeout_secs=per_test_timeout_secs,
- in_place=True)
- task_requester = _TaskRequester(
- self.m,
- buildbucket_build=buildbucket_build,
- per_test_timeout_secs=per_test_timeout_secs,
- pool=pool,
- swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
- swarming_io_timeout_secs=swarming_io_timeout_secs,
- timeout_secs=timeout_secs,
- use_runtests=use_runtests,
- )
- shard_requests = []
- for s in build_artifacts.shards:
- with self.m.step.nest('shard %s' % s.name):
- shard_requests.append(task_requester.request(s, build_artifacts))
- return shard_requests
-
def test_in_shards(self, collect_timeout_secs, debug_symbol_gcs_bucket,
max_attempts, orchestration_inputs):
"""Tests a Fuchsia build by sharding.
@@ -1755,108 +1018,3 @@
else:
status = self.m.step.EXCEPTION
presentation.status = status
-
- def _create_test_list(self, shard):
- test_locations = []
- for test in shard.tests:
- test_locations.append(test.path)
- test_list_path = self.m.path['cleanup'].join('tests-%s' %
- self._normalize(shard.name))
- self.m.file.write_text(
- name='write test list',
- dest=test_list_path,
- text_data='\n'.join(test_locations) + '\n',
- )
- return test_list_path
-
- def _normalize(self, name):
- return name.replace(' ', '_').replace('(', '').replace(')', '')
-
- def _get_runcmds_path_per_shard(self, shard=None):
- if not shard:
- return RUNCMDS_BOOTFS_PATH
- return '%s-%s' % (RUNCMDS_BOOTFS_PATH, self._normalize(shard.name))
-
- def _uses_legacy_qemu(self, shard):
- return (not self.m.experimental.ssh_into_qemu and
- self.m.emu.is_emulator_type(shard.device_type))
-
- def _install_runcmds_files(self,
- build_artifacts,
- test_in_shards=False,
- per_test_timeout_secs=None,
- device_type=None,
- pave=False,
- test_cmds=None,
- in_place=False):
- """Creates the files used to invoke runtests on boot.
-
- This is only necessary for QEMU shards, which are the only shards that
- use runcmds, and the non-sharding codepath.
- """
- self.m.zbi.zbi_path = build_artifacts.zbi
-
- manifest = {}
- zbi_name = 'zircon-a'
- new_zbi_filename = None
- new_zbi_path = None
- if test_in_shards:
- # if testing in shards, zbi file should be modified once for all shards in
- # place before uploading through artifactory.
- assert in_place
- needs_key = False
- for shard in build_artifacts.shards:
- if self.m.emu.is_emulator_type(shard.device_type):
- if self._uses_legacy_qemu(shard):
- test_list_path = self._create_test_list(shard)
- runtests_file_bootfs_path = 'infra/shard-%s.run' % self._normalize(
- shard.name)
- runcmds_path = self.m.path['cleanup'].join(
- 'runcmds-%s' % self._normalize(shard.name))
- runtests_cmd_parts = [
- 'runtests', '-o', self.results_dir_on_target, '-f',
- '/boot/%s' % runtests_file_bootfs_path
- ]
- if per_test_timeout_secs:
- runtests_cmd_parts.extend(['-i', '%d' % per_test_timeout_secs])
- self._create_runcmds_script(
- device_type=shard.device_type,
- test_cmds=[' '.join(runtests_cmd_parts)],
- output_path=runcmds_path,
- )
- manifest[self._get_runcmds_path_per_shard(shard)] = runcmds_path
- manifest[runtests_file_bootfs_path] = test_list_path
- else:
- needs_key = True
- if needs_key:
- manifest[AUTHORIZED_KEY_PATH] = build_artifacts.authorized_key
-
- else:
- assert device_type and test_cmds
- if not in_place:
- new_zbi_filename = 'test-infra.zbi'
- new_zbi_path = build_artifacts.fuchsia_build_dir.join(new_zbi_filename)
- if not self.m.emu.is_emulator_type(device_type):
- zbi_name = next(
- (image['name']
- for image in build_artifacts.images.values()
- if '--boot' in image.get(
- 'bootserver_%s' % ('netboot' if not pave else 'pave'), [])),
- None)
- assert zbi_name, 'Could not find kernel image to boot.'
- runcmds_path = self.m.path['cleanup'].join('runcmds')
- self._create_runcmds_script(device_type, test_cmds, runcmds_path)
- manifest[RUNCMDS_BOOTFS_PATH] = runcmds_path
-
- # Inject the runcmds script and/or authorized key into the bootfs image.
- if manifest and zbi_name in build_artifacts.images:
- self.m.zbi.copy_and_extend(
- step_name='create zbi',
- input_image=build_artifacts.fuchsia_build_dir.join(
- build_artifacts.images[zbi_name]['path']),
- output_image=new_zbi_path or build_artifacts.fuchsia_build_dir.join(
- build_artifacts.images[zbi_name]['path']),
- manifest=manifest,
- )
- if new_zbi_filename:
- build_artifacts.images[zbi_name]['path'] = new_zbi_filename
diff --git a/recipe_modules/testing/examples/full.expected/aemu.json b/recipe_modules/testing/examples/full.expected/aemu.json
deleted file mode 100644
index fb4bac1..0000000
--- a/recipe_modules/testing/examples/full.expected/aemu.json
+++ /dev/null
@@ -1,1040 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"AEMU\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"AEMU\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/hello\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/goodbye\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"dimensions\": {\n \"device_type\": \"AEMU\"\n }\n }, \n \"tests\": [\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n ], \n \"name\": \"AEMU\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"AEMU\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"AEMU\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "data/ssh/authorized_keys=[CLEANUP]/build-artifacts_tmp_1/authorized_key"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "shard AEMU"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n]",
- "[CLEANUP]/isolate_tmp_3/tests.json"
- ],
- "infra_step": true,
- "name": "shard AEMU.write test manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@tests.json@[@@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }, @@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }@@@",
- "@@@STEP_LOG_LINE@tests.json@]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"target\": \"x64\", \n \"kvm\": true, \n \"memory\": 8192, \n \"path\": \"./aemu/bin\", \n \"type\": \"aemu\", \n \"cpu\": 8\n }\n]",
- "[CLEANUP]/isolate_tmp_3/qemu.json"
- ],
- "infra_step": true,
- "name": "shard AEMU.write qemu config",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@qemu.json@[@@@",
- "@@@STEP_LOG_LINE@qemu.json@ {@@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"kvm\": true, @@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"memory\": 8192, @@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"path\": \"./aemu/bin\", @@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"type\": \"aemu\", @@@",
- "@@@STEP_LOG_LINE@qemu.json@ \"cpu\": 8@@@",
- "@@@STEP_LOG_LINE@qemu.json@ }@@@",
- "@@@STEP_LOG_LINE@qemu.json@]@@@",
- "@@@STEP_LOG_END@qemu.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard AEMU.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/isolate_tmp_3/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard AEMU.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard AEMU.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.AEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.AEMU (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.AEMU (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"AEMU\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:AEMU-x64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/third_party/aemu/${platform}\", \"path\": \"aemu/bin\", \"version\": \"git_revision:058240c99e7a1b0782798a2e536f2be75b5f08cf\"}]}, \"command\": [\"./botanist\", \"-level\", \"debug\", \"run\", \"-images\", \"images.json\", \"-timeout\", \"0s\", \"-syslog\", \"syslog.txt\", \"-serial-log\", \"serial.txt\", \"-ssh\", \"private_key\", \"-config\", \"./qemu.json\", \"./testrunner\", \"-archive\", \"out.tar\", \"tests.json\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [{\"key\": \"BUILD_PRODUCT\", \"value\": \"products/core.gni\"}, {\"key\": \"FUCHSIA_TEST_OUTDIR\", \"value\": \"${ISOLATED_OUTDIR}\"}, {\"key\": \"INPUT_COMMIT_HOST\", \"value\": \"fuchsia.googlesource.com\"}, {\"key\": \"LSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"BUILDBUCKET_BUCKET\", \"value\": \"ci\"}, {\"key\": \"BUILD_TARGET\", \"value\": \"x64\"}, {\"key\": \"ASAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"UBSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"INPUT_COMMIT_PROJECT\", \"value\": \"fuchsia\"}, {\"key\": \"BUILDER_NAME\", \"value\": \"builder\"}, {\"key\": \"INPUT_COMMIT_REF\", \"value\": \"refs/heads/master\"}, {\"key\": \"FUCHSIA_DEVICE_TYPE\", \"value\": \"AEMU\"}, {\"key\": \"BUILDBUCKET_ID\", \"value\": \"8945511751514863184\"}, {\"key\": \"BUILD_BOARD\", \"value\": \"boards/x64.gni\"}, {\"key\": \"BUILD_CREATE_TIME\", \"value\": \"1527292217\"}, {\"key\": \"BUILD_TYPE\", \"value\": \"release\"}], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"syslog.txt\", \"serial.txt\", \"out.tar\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.AEMU (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"AEMU\"@@@",
- "@@@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: AEMU@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"AEMU\", @@@",
- "@@@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: AEMU@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: AEMU@@@",
- "@@@STEP_LINK@task isolated outputs: AEMU@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.AEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.AEMU.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.AEMU.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "-C",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>/path/to/hello<br/>/path/to/goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.AEMU.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.AEMU.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload AEMU test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload AEMU test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/AEMU"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.upload AEMU to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@AEMU@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/AEMU@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log AEMU:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log AEMU:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/isolated_tests_device.json b/recipe_modules/testing/examples/full.expected/isolated_tests_device.json
deleted file mode 100644
index e0b78773..0000000
--- a/recipe_modules/testing/examples/full.expected/isolated_tests_device.json
+++ /dev/null
@@ -1,771 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@json.output (invalid)@@@",
- "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
- "@@@STEP_LOG_END@json.output (exception)@@@"
- ]
- },
- {
- "cmd": [],
- "name": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nruntests -o /tmp/infra-test-output ",
- "[CLEANUP]/runcmds"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output @@@",
- "@@@STEP_LOG_END@runcmds@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds=[CLEANUP]/runcmds"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "write image manifest",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_3/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_3/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "create tree of build artifacts"
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts (2)",
- "~followup_annotations": [
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests"
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@passed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:Intel NUC Kit NUC6i3SYK-x64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"command\": [\"./botanist\", \"-level\", \"debug\", \"zedboot\", \"-config\", \"/etc/botanist/config.json\", \"-images\", \"images.json\", \"-results-dir\", \"/tmp/infra-test-output\", \"-out\", \"out.tar\", \"-serial-log\", \"serial.txt\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"pool\", \"value\": \"fuchsia.tests\"}, {\"key\": \"device_type\", \"value\": \"Intel NUC Kit NUC6i3SYK\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"out.tar\", \"serial.txt\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"output_dir\": \"output_dir\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/1/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/1/out.tar",
- "-C",
- "[CLEANUP]/test_results/target/1"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/1/out.tar"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests./path/to/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests./path/to/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/summary.json"
- ],
- "infra_step": true,
- "name": "upload test test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload test test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4",
- "gs://fuchsia_infra/builds/8945511751514863184/test"
- ],
- "infra_step": true,
- "name": "upload test test results.upload test to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@test@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/test@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log test:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log test:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/isolated_tests_device_arm64.json b/recipe_modules/testing/examples/full.expected/isolated_tests_device_arm64.json
deleted file mode 100644
index 290d7f2..0000000
--- a/recipe_modules/testing/examples/full.expected/isolated_tests_device_arm64.json
+++ /dev/null
@@ -1,771 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@json.output (invalid)@@@",
- "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
- "@@@STEP_LOG_END@json.output (exception)@@@"
- ]
- },
- {
- "cmd": [],
- "name": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"arm64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nruntests -o /tmp/infra-test-output ",
- "[CLEANUP]/runcmds"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output @@@",
- "@@@STEP_LOG_END@runcmds@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds=[CLEANUP]/runcmds"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "write image manifest",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_3/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_3/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "create tree of build artifacts"
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts (2)",
- "~followup_annotations": [
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests"
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@passed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:Khadas Vim2 Max-arm64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"command\": [\"./botanist\", \"-level\", \"debug\", \"zedboot\", \"-config\", \"/etc/botanist/config.json\", \"-images\", \"images.json\", \"-results-dir\", \"/tmp/infra-test-output\", \"-out\", \"out.tar\", \"-serial-log\", \"serial.txt\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"pool\", \"value\": \"fuchsia.tests\"}, {\"key\": \"device_type\", \"value\": \"Khadas Vim2 Max\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"out.tar\", \"serial.txt\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"output_dir\": \"output_dir\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/1/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/1/out.tar",
- "-C",
- "[CLEANUP]/test_results/target/1"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/1/out.tar"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests./path/to/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests./path/to/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/summary.json"
- ],
- "infra_step": true,
- "name": "upload test test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"output_file\": \"hello.out\", \"name\": \"/path/to/hello\", \"result\": \"PASS\"}, {\"output_file\": \"goodbye.out\", \"name\": \"/path/to/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload test test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4",
- "gs://fuchsia_infra/builds/8945511751514863184/test"
- ],
- "infra_step": true,
- "name": "upload test test results.upload test to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@test@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/test@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log test:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log test:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/isolated_tests_x64_with_secrets.json b/recipe_modules/testing/examples/full.expected/isolated_tests_x64_with_secrets.json
deleted file mode 100644
index ee86fa6..0000000
--- a/recipe_modules/testing/examples/full.expected/isolated_tests_x64_with_secrets.json
+++ /dev/null
@@ -1,807 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@json.output (invalid)@@@",
- "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
- "@@@STEP_LOG_END@json.output (exception)@@@"
- ]
- },
- {
- "cmd": [],
- "name": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -i 1 \numount /tmp/infra-test-output\ndm poweroff",
- "[CLEANUP]/runcmds"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
- "@@@STEP_LOG_LINE@runcmds@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output -i 1 @@@",
- "@@@STEP_LOG_LINE@runcmds@umount /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@dm poweroff@@@",
- "@@@STEP_LOG_END@runcmds@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds=[CLEANUP]/runcmds"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "ensure cloudkms"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "ensure cloudkms.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/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": [],
- "name": "process secret specs"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "listdir",
- "[CLEANUP]/build-artifacts_tmp_1/secret_specs"
- ],
- "infra_step": true,
- "name": "process secret specs.list",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@listdir@[CLEANUP]/build-artifacts_tmp_1/secret_specs/auth-token.json@@@",
- "@@@STEP_LOG_LINE@listdir@[CLEANUP]/build-artifacts_tmp_1/secret_specs/ciphertext@@@",
- "@@@STEP_LOG_END@listdir@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/secret_specs/auth-token.json",
- "/path/to/tmp/json"
- ],
- "name": "process secret specs.read spec for auth-token",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"cloudkms_key_path\": \"key-path\"@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "[START_DIR]/cipd/cloudkms/cloudkms",
- "decrypt",
- "-input",
- "[CLEANUP]/build-artifacts_tmp_1/secret_specs/ciphertext/auth-token.ciphertext",
- "-output",
- "/path/to/tmp/",
- "key-path"
- ],
- "name": "process secret specs.decrypt secret for auth-token",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/isolate_tmp_3/output.fs@3584M",
- "create"
- ],
- "name": "create test image"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "write image manifest",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_3/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "create tree of build artifacts"
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts (2)",
- "~followup_annotations": [
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests"
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@passed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/infra/secretshim/${platform}\", \"path\": \".\", \"version\": \"git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645\"}, {\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./secretshim\", \"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"], \"secret_bytes\": \"eyJhdXRoLXRva2VuIjogIiJ9\"}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"output_dir\": \"output_dir\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output.fs\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/1/output.fs",
- "cp",
- "::",
- "[CLEANUP]/test_results/target/1"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/1/output.fs"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.remove output.fs",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests.fuchsia-pkg://fuchsia.com/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests.fuchsia-pkg://fuchsia.com/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/summary.json"
- ],
- "infra_step": true,
- "name": "upload test test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload test test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4",
- "gs://fuchsia_infra/builds/8945511751514863184/test"
- ],
- "infra_step": true,
- "name": "upload test test results.upload test to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@test@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/test@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log test:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log test:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/retry_after_failure.json b/recipe_modules/testing/examples/full.expected/retry_after_failure.json
deleted file mode 100644
index 39eab00..0000000
--- a/recipe_modules/testing/examples/full.expected/retry_after_failure.json
+++ /dev/null
@@ -1,998 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@json.output (invalid)@@@",
- "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
- "@@@STEP_LOG_END@json.output (exception)@@@"
- ]
- },
- {
- "cmd": [],
- "name": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output \numount /tmp/infra-test-output\ndm poweroff",
- "[CLEANUP]/runcmds"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
- "@@@STEP_LOG_LINE@runcmds@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output @@@",
- "@@@STEP_LOG_LINE@runcmds@umount /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@dm poweroff@@@",
- "@@@STEP_LOG_END@runcmds@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds=[CLEANUP]/runcmds"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "ensure cloudkms"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "ensure cloudkms.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/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": [],
- "name": "process secret specs"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "listdir",
- "[CLEANUP]/build-artifacts_tmp_1/secret_specs"
- ],
- "infra_step": true,
- "name": "process secret specs.list",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@listdir@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/isolate_tmp_3/output.fs@3584M",
- "create"
- ],
- "name": "create test image"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "write image manifest",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_3/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "create tree of build artifacts"
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts (2)",
- "~followup_annotations": [
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests"
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@2 test(s) failed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"FAIL\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"FAIL\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/infra/secretshim/${platform}\", \"path\": \".\", \"version\": \"git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645\"}, {\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./secretshim\", \"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"], \"secret_bytes\": \"e30=\"}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"1\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"output_dir\": \"output_dir\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output.fs\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/1/output.fs",
- "cp",
- "::",
- "[CLEANUP]/test_results/target/1"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/1/output.fs"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.remove output.fs",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.failed: fuchsia-pkg://fuchsia.com/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.failed: fuchsia-pkg://fuchsia.com/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@passed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/swarming_client/swarming",
- "spawn-tasks",
- "-server",
- "https://example.swarmingserver.appspot.com",
- "-json-input",
- "{\"requests\": [{\"name\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/infra/secretshim/${platform}\", \"path\": \".\", \"version\": \"git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645\"}, {\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./secretshim\", \"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"], \"secret_bytes\": \"e30=\"}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"2\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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\": \"2\"@@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/2/out.tar",
- "cp",
- "::",
- "[CLEANUP]/test_results/target/2"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/2/out.tar"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests.fuchsia-pkg://fuchsia.com/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests.fuchsia-pkg://fuchsia.com/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/summary.json"
- ],
- "infra_step": true,
- "name": "upload test test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload test test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4",
- "gs://fuchsia_infra/builds/8945511751514863184/test"
- ],
- "infra_step": true,
- "name": "upload test test results.upload test to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@test@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/test@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log test:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log test:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/retry_after_timeout.json b/recipe_modules/testing/examples/full.expected/retry_after_timeout.json
deleted file mode 100644
index f140deb..0000000
--- a/recipe_modules/testing/examples/full.expected/retry_after_timeout.json
+++ /dev/null
@@ -1,889 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@json.output (invalid)@@@",
- "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
- "@@@STEP_LOG_END@json.output (exception)@@@"
- ]
- },
- {
- "cmd": [],
- "name": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"build_type\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"build_type\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output \numount /tmp/infra-test-output\ndm poweroff",
- "[CLEANUP]/runcmds"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
- "@@@STEP_LOG_LINE@runcmds@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output @@@",
- "@@@STEP_LOG_LINE@runcmds@umount /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds@dm poweroff@@@",
- "@@@STEP_LOG_END@runcmds@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds=[CLEANUP]/runcmds"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "ensure cloudkms"
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/cloudkms",
- "-ensure-file",
- "infra/tools/luci/cloudkms/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "ensure cloudkms.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/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": [],
- "name": "process secret specs"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "listdir",
- "[CLEANUP]/build-artifacts_tmp_1/secret_specs"
- ],
- "infra_step": true,
- "name": "process secret specs.list",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_END@listdir@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/isolate_tmp_3/output.fs@3584M",
- "create"
- ],
- "name": "create test image"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "write image manifest",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_3/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "create tree of build artifacts"
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts (2)",
- "~followup_annotations": [
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests"
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@timed out@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/infra/secretshim/${platform}\", \"path\": \".\", \"version\": \"git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645\"}, {\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./secretshim\", \"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"], \"secret_bytes\": \"e30=\"}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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\": \"TIMED_OUT\", @@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 0.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_FAILURE@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 0.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_TEXT@passed@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LINK@test outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/swarming_client/swarming",
- "spawn-tasks",
- "-server",
- "https://example.swarmingserver.appspot.com",
- "-json-input",
- "{\"requests\": [{\"name\": \"all tests\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/infra/secretshim/${platform}\", \"path\": \".\", \"version\": \"git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645\"}, {\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./secretshim\", \"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"], \"secret_bytes\": \"e30=\"}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.trigger 1 task",
- "~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\": \"all tests\"@@@",
- "@@@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: all tests@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"2\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"output\": \"hello world!\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"outputs\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@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\": \"2\"@@@",
- "@@@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: test@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: test@@@",
- "@@@STEP_LINK@task isolated outputs: test@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.task results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.task results.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/2/out.tar",
- "cp",
- "::",
- "[CLEANUP]/test_results/target/2"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.extract results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/2/out.tar"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/build-artifacts_tmp_1/tests.json",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "run tests.attempt 1.read tests.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@tests.json@[{\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \"path\": \"/path/to/hello\", \"os\": \"fuchsia\", \"name\": \"hello\", \"label\": \"//a/b/c:hello_test(//toolchain)\"}}, {\"test\": {\"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"path\": \"/path/to/goodbye\", \"os\": \"fuchsia\", \"name\": \"goodbye\", \"label\": \"//a/b/c:goodbye_test(//toolchain)\"}}]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests.fuchsia-pkg://fuchsia.com/hello",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@hello@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "run tests.attempt 1.all test results.all passed tests.fuchsia-pkg://fuchsia.com/goodbye",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@stdio@goodbye@@@",
- "@@@STEP_LOG_END@stdio@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/summary.json"
- ],
- "infra_step": true,
- "name": "upload test test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload test test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload test test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4",
- "gs://fuchsia_infra/builds/8945511751514863184/test"
- ],
- "infra_step": true,
- "name": "upload test test results.upload test to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@test@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/test@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log test:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log test:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/set_test_task_env_vars.json b/recipe_modules/testing/examples/full.expected/set_test_task_env_vars.json
deleted file mode 100644
index d0dba98..0000000
--- a/recipe_modules/testing/examples/full.expected/set_test_task_env_vars.json
+++ /dev/null
@@ -1,1013 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/hello\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/goodbye\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"arm64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"dimensions\": {\n \"device_type\": \"Khadas Vim2 Max\"\n }\n }, \n \"tests\": [\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n ], \n \"name\": \"Vim2\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "shard Vim2"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n]",
- "[CLEANUP]/isolate_tmp_3/tests.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write test manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@tests.json@[@@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }, @@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }@@@",
- "@@@STEP_LOG_LINE@tests.json@]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_3/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard Vim2.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard Vim2.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"Vim2\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:Khadas Vim2 Max-arm64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"command\": [\"./botanist\", \"-level\", \"debug\", \"run\", \"-images\", \"images.json\", \"-timeout\", \"0s\", \"-syslog\", \"syslog.txt\", \"-serial-log\", \"serial.txt\", \"-repo\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/8945511751514863184/repository\", \"-blobs\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/blobs\", \"-config\", \"/etc/botanist/config.json\", \"./testrunner\", \"-archive\", \"out.tar\", \"tests.json\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"pool\", \"value\": \"fuchsia.tests\"}, {\"key\": \"device_type\", \"value\": \"Khadas Vim2 Max\"}], \"env\": [{\"key\": \"BUILD_PRODUCT\", \"value\": \"products/core.gni\"}, {\"key\": \"FUCHSIA_TEST_OUTDIR\", \"value\": \"${ISOLATED_OUTDIR}\"}, {\"key\": \"INPUT_COMMIT_HOST\", \"value\": \"fuchsia.googlesource.com\"}, {\"key\": \"LSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"BUILDBUCKET_BUCKET\", \"value\": \"ci\"}, {\"key\": \"BUILD_TARGET\", \"value\": \"arm64\"}, {\"key\": \"ASAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"UBSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"INPUT_COMMIT_PROJECT\", \"value\": \"fuchsia\"}, {\"key\": \"BUILDER_NAME\", \"value\": \"builder\"}, {\"key\": \"INPUT_COMMIT_REF\", \"value\": \"refs/heads/master\"}, {\"key\": \"FUCHSIA_DEVICE_TYPE\", \"value\": \"Khadas Vim2 Max\"}, {\"key\": \"BUILDBUCKET_ID\", \"value\": \"8945511751514863184\"}, {\"key\": \"BUILD_BOARD\", \"value\": \"boards/x64.gni\"}, {\"key\": \"BUILD_CREATE_TIME\", \"value\": \"1527292217\"}, {\"key\": \"BUILD_TYPE\", \"value\": \"release\"}], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"syslog.txt\", \"serial.txt\", \"out.tar\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"Vim2\"@@@",
- "@@@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: Vim2@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@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: Vim2@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: Vim2@@@",
- "@@@STEP_LINK@task isolated outputs: Vim2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "-C",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>hello<br/>goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/Vim2"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.upload Vim2 to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@Vim2@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/Vim2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log Vim2:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log Vim2:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/test_with_Linux_shard.json b/recipe_modules/testing/examples/full.expected/test_with_Linux_shard.json
deleted file mode 100644
index 3558f37..0000000
--- a/recipe_modules/testing/examples/full.expected/test_with_Linux_shard.json
+++ /dev/null
@@ -1,953 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"Linux\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Linux\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"dimensions\": {\n \"os\": \"Linux\"\n }\n }, \n \"tests\": [\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n ], \n \"name\": \"Linux\", \n \"deps\": [\n \"/path/to/dep\"\n ]\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"Linux\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"Linux\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"/path/to/dep\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ ]@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/dep\": [\"/path/to/dep\"], \"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "shard Linux"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
- "[CLEANUP]/isolate_tmp_3/tests.json"
- ],
- "infra_step": true,
- "name": "shard Linux.write test manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@tests.json@[@@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }@@@",
- "@@@STEP_LOG_LINE@tests.json@]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/dep\": [\"/path/to/dep\"], \"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard Linux.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard Linux.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Linux (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Linux (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Linux (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"Linux\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:Linux-x64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"command\": [\"./testrunner\", \"-archive\", \"out.tar\", \"tests.json\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"os\", \"value\": \"Linux\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [{\"key\": \"BUILD_PRODUCT\", \"value\": \"products/core.gni\"}, {\"key\": \"FUCHSIA_TEST_OUTDIR\", \"value\": \"${ISOLATED_OUTDIR}\"}, {\"key\": \"BUILDBUCKET_ID\", \"value\": \"8945511751514863184\"}, {\"key\": \"LSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"BUILDBUCKET_BUCKET\", \"value\": \"ci\"}, {\"key\": \"BUILD_TARGET\", \"value\": \"x64\"}, {\"key\": \"ASAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"UBSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"INPUT_COMMIT_PROJECT\", \"value\": \"fuchsia\"}, {\"key\": \"BUILDER_NAME\", \"value\": \"builder\"}, {\"key\": \"INPUT_COMMIT_REF\", \"value\": \"refs/heads/master\"}, {\"key\": \"INPUT_COMMIT_HOST\", \"value\": \"fuchsia.googlesource.com\"}, {\"key\": \"BUILD_BOARD\", \"value\": \"boards/x64.gni\"}, {\"key\": \"BUILD_CREATE_TIME\", \"value\": \"1527292217\"}, {\"key\": \"BUILD_TYPE\", \"value\": \"release\"}], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"out.tar\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Linux (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"Linux\"@@@",
- "@@@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: Linux@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Linux\", @@@",
- "@@@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: Linux@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: Linux@@@",
- "@@@STEP_LINK@task isolated outputs: Linux@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Linux",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Linux.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Linux.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Linux.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Linux.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Linux.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "-C",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Linux.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Linux.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Linux (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Linux (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Linux (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Linux (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Linux",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Linux.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Linux.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>hello<br/>goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Linux.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Linux.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload Linux test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload Linux test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload Linux test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload Linux test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/Linux"
- ],
- "infra_step": true,
- "name": "upload Linux test results.upload Linux to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@Linux@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/Linux@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log Linux:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log Linux:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/test_with_shards_arm64.json b/recipe_modules/testing/examples/full.expected/test_with_shards_arm64.json
deleted file mode 100644
index 7768f43..0000000
--- a/recipe_modules/testing/examples/full.expected/test_with_shards_arm64.json
+++ /dev/null
@@ -1,990 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": true, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"service_account\": \"my-service-account@example.com\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"arm64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"netboot\": true, \n \"dimensions\": {\n \"device_type\": \"Khadas Vim2 Max\"\n }, \n \"service_account\": \"my-service-account@example.com\"\n }, \n \"tests\": [\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n ], \n \"name\": \"Vim2\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"netboot\": true, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"service_account\": \"my-service-account@example.com\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "shard Vim2"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
- "[CLEANUP]/isolate_tmp_3/tests.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write test manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@tests.json@[@@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }@@@",
- "@@@STEP_LOG_LINE@tests.json@]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_3/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard Vim2.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard Vim2.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"Vim2\", \"priority\": \"200\", \"service_account\": \"my-service-account@example.com\", \"tags\": [\"test_environment_name:Khadas Vim2 Max-arm64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci-auth/${platform}\", \"path\": \".\", \"version\": \"latest\"}]}, \"command\": [\"./luci-auth\", \"context\", \"--\", \"./botanist\", \"-level\", \"debug\", \"run\", \"-images\", \"images.json\", \"-timeout\", \"0s\", \"-syslog\", \"syslog.txt\", \"-serial-log\", \"serial.txt\", \"-repo\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/8945511751514863184/repository\", \"-blobs\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/blobs\", \"-netboot\", \"-config\", \"/etc/botanist/config.json\", \"./testrunner\", \"-archive\", \"out.tar\", \"tests.json\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"pool\", \"value\": \"fuchsia.tests\"}, {\"key\": \"device_type\", \"value\": \"Khadas Vim2 Max\"}], \"env\": [{\"key\": \"BUILD_PRODUCT\", \"value\": \"products/core.gni\"}, {\"key\": \"FUCHSIA_TEST_OUTDIR\", \"value\": \"${ISOLATED_OUTDIR}\"}, {\"key\": \"INPUT_COMMIT_HOST\", \"value\": \"fuchsia.googlesource.com\"}, {\"key\": \"LSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"BUILDBUCKET_BUCKET\", \"value\": \"ci\"}, {\"key\": \"BUILD_TARGET\", \"value\": \"arm64\"}, {\"key\": \"ASAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"UBSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"INPUT_COMMIT_PROJECT\", \"value\": \"fuchsia\"}, {\"key\": \"BUILDER_NAME\", \"value\": \"builder\"}, {\"key\": \"INPUT_COMMIT_REF\", \"value\": \"refs/heads/master\"}, {\"key\": \"FUCHSIA_DEVICE_TYPE\", \"value\": \"Khadas Vim2 Max\"}, {\"key\": \"BUILDBUCKET_ID\", \"value\": \"8945511751514863184\"}, {\"key\": \"BUILD_BOARD\", \"value\": \"boards/x64.gni\"}, {\"key\": \"BUILD_CREATE_TIME\", \"value\": \"1527292217\"}, {\"key\": \"BUILD_TYPE\", \"value\": \"release\"}], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"syslog.txt\", \"serial.txt\", \"out.tar\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"Vim2\"@@@",
- "@@@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: Vim2@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@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: Vim2@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: Vim2@@@",
- "@@@STEP_LINK@task isolated outputs: Vim2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "-C",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>hello<br/>goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/Vim2"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.upload Vim2 to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@Vim2@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/Vim2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log Vim2:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log Vim2:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/test_with_shards_arm64_with_runtests.json b/recipe_modules/testing/examples/full.expected/test_with_shards_arm64_with_runtests.json
deleted file mode 100644
index 88f8ac2..0000000
--- a/recipe_modules/testing/examples/full.expected/test_with_shards_arm64_with_runtests.json
+++ /dev/null
@@ -1,990 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": true, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"service_account\": \"my-service-account@example.com\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"arm64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"arm64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"netboot\": true, \n \"dimensions\": {\n \"device_type\": \"Khadas Vim2 Max\"\n }, \n \"service_account\": \"my-service-account@example.com\"\n }, \n \"tests\": [\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n ], \n \"name\": \"Vim2\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"netboot\": true, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"Khadas Vim2 Max\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"service_account\": \"my-service-account@example.com\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"Vim2\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "shard Vim2"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"test\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
- "[CLEANUP]/isolate_tmp_3/tests.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write test manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@tests.json@[@@@",
- "@@@STEP_LOG_LINE@tests.json@ {@@@",
- "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"name\": \"test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
- "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
- "@@@STEP_LOG_LINE@tests.json@ }@@@",
- "@@@STEP_LOG_LINE@tests.json@]@@@",
- "@@@STEP_LOG_END@tests.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard Vim2.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_3/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard Vim2.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard Vim2.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"Vim2\", \"priority\": \"200\", \"service_account\": \"my-service-account@example.com\", \"tags\": [\"test_environment_name:Khadas Vim2 Max-arm64\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"infra/tools/luci-auth/${platform}\", \"path\": \".\", \"version\": \"latest\"}]}, \"command\": [\"./luci-auth\", \"context\", \"--\", \"./botanist\", \"-level\", \"debug\", \"run\", \"-images\", \"images.json\", \"-timeout\", \"0s\", \"-syslog\", \"syslog.txt\", \"-serial-log\", \"serial.txt\", \"-repo\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/8945511751514863184/repository\", \"-blobs\", \"http://$GCS_PROXY_HOST/fuchsia-artifacts/blobs\", \"-netboot\", \"-config\", \"/etc/botanist/config.json\", \"./testrunner\", \"-archive\", \"out.tar\", \"-use-runtests\", \"tests.json\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"pool\", \"value\": \"fuchsia.tests\"}, {\"key\": \"device_type\", \"value\": \"Khadas Vim2 Max\"}], \"env\": [{\"key\": \"BUILD_PRODUCT\", \"value\": \"products/core.gni\"}, {\"key\": \"FUCHSIA_TEST_OUTDIR\", \"value\": \"${ISOLATED_OUTDIR}\"}, {\"key\": \"INPUT_COMMIT_HOST\", \"value\": \"fuchsia.googlesource.com\"}, {\"key\": \"LSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"BUILDBUCKET_BUCKET\", \"value\": \"ci\"}, {\"key\": \"BUILD_TARGET\", \"value\": \"arm64\"}, {\"key\": \"ASAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"UBSAN_SYMBOLIZER_PATH\", \"value\": \"llvm-symbolizer\"}, {\"key\": \"INPUT_COMMIT_PROJECT\", \"value\": \"fuchsia\"}, {\"key\": \"BUILDER_NAME\", \"value\": \"builder\"}, {\"key\": \"INPUT_COMMIT_REF\", \"value\": \"refs/heads/master\"}, {\"key\": \"FUCHSIA_DEVICE_TYPE\", \"value\": \"Khadas Vim2 Max\"}, {\"key\": \"BUILDBUCKET_ID\", \"value\": \"8945511751514863184\"}, {\"key\": \"BUILD_BOARD\", \"value\": \"boards/x64.gni\"}, {\"key\": \"BUILD_CREATE_TIME\", \"value\": \"1527292217\"}, {\"key\": \"BUILD_TYPE\", \"value\": \"release\"}], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"syslog.txt\", \"serial.txt\", \"out.tar\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.Vim2 (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"Vim2\"@@@",
- "@@@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: Vim2@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"Vim2\", @@@",
- "@@@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: Vim2@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: Vim2@@@",
- "@@@STEP_LINK@task isolated outputs: Vim2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/bsdtar",
- "-ensure-file",
- "fuchsia/tools/bsdtar/${platform} latest",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.ensure bsdtar.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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\": \"fuchsia/tools/bsdtar/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": [
- "[START_DIR]/cipd/bsdtar/bsdtar",
- "--extract",
- "--verbose",
- "-f",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "-C",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.Vim2.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.Vim2 (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/hello:hello(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.Vim2.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>hello<br/>goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.Vim2.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//path/to/hello:hello(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//path/to/goodbye:goodbye(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload Vim2 test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/Vim2"
- ],
- "infra_step": true,
- "name": "upload Vim2 test results.upload Vim2 to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@Vim2@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/Vim2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log Vim2:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log Vim2:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_aemu.json b/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_aemu.json
deleted file mode 100644
index a3528b4..0000000
--- a/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_aemu.json
+++ /dev/null
@@ -1,998 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"AEMU\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"AEMU\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/hello\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/goodbye\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"dimensions\": {\n \"device_type\": \"AEMU\"\n }\n }, \n \"tests\": [\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n ], \n \"name\": \"AEMU\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"AEMU\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"AEMU\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "/path/to/hello\n/path/to/goodbye\n",
- "[CLEANUP]/tests-AEMU"
- ],
- "infra_step": true,
- "name": "write test list",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@tests-AEMU@/path/to/hello@@@",
- "@@@STEP_LOG_LINE@tests-AEMU@/path/to/goodbye@@@",
- "@@@STEP_LOG_END@tests-AEMU@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -f /boot/infra/shard-AEMU.run -i 1\numount /tmp/infra-test-output\ndm poweroff",
- "[CLEANUP]/runcmds-AEMU"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds-AEMU@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-AEMU@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
- "@@@STEP_LOG_LINE@runcmds-AEMU@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-AEMU@runtests -o /tmp/infra-test-output -f /boot/infra/shard-AEMU.run -i 1@@@",
- "@@@STEP_LOG_LINE@runcmds-AEMU@umount /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-AEMU@dm poweroff@@@",
- "@@@STEP_LOG_END@runcmds-AEMU@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds-AEMU=[CLEANUP]/runcmds-AEMU",
- "--entry",
- "infra/shard-AEMU.run=[CLEANUP]/tests-AEMU"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "shard AEMU"
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/isolate_tmp_3/output.fs@3584M",
- "create"
- ],
- "name": "shard AEMU.create test image",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard AEMU.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard AEMU.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard AEMU.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.AEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.AEMU (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.AEMU (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"AEMU\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:AEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/third_party/aemu/${platform}\", \"path\": \"aemu/bin\", \"version\": \"git_revision:058240c99e7a1b0782798a2e536f2be75b5f08cf\"}]}, \"command\": [\"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"aemu\", \"-qemu-dir\", \"./aemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds-AEMU\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.AEMU (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"AEMU\"@@@",
- "@@@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: AEMU@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"AEMU\", @@@",
- "@@@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: AEMU@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: AEMU@@@",
- "@@@STEP_LINK@task isolated outputs: AEMU@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.AEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.AEMU.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "cp",
- "::",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.AEMU.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.AEMU (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.AEMU.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>fuchsia-pkg://fuchsia.com/hello<br/>fuchsia-pkg://fuchsia.com/goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.AEMU.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.AEMU.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload AEMU test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload AEMU test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/AEMU"
- ],
- "infra_step": true,
- "name": "upload AEMU test results.upload AEMU to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@AEMU@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/AEMU@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log AEMU:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log AEMU:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_qemu.json b/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_qemu.json
deleted file mode 100644
index 1569ca1..0000000
--- a/recipe_modules/testing/examples/full.expected/without_experiment_ssh_into_qemu.json
+++ /dev/null
@@ -1,998 +0,0 @@
-[
- {
- "cmd": [],
- "name": "download build artifacts"
- },
- {
- "cmd": [],
- "name": "download build artifacts.ensure isolated",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/isolated_client",
- "-ensure-file",
- "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "download build artifacts.ensure isolated.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:305\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
- "download",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-isolated",
- "abc",
- "-output-dir",
- "[CLEANUP]/build-artifacts_tmp_1"
- ],
- "infra_step": true,
- "name": "download build artifacts.download build_artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/args.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/images.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.read images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
- "[CLEANUP]/build-artifacts_tmp_1/shards.json",
- "/path/to/tmp/json"
- ],
- "name": "download build artifacts.load test shards",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@json.output@[@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"deps\": [], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"QEMU\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"QEMU\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/hello\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }, @@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"os\": \"fuchsia\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/goodbye\"@@@",
- "@@@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": "isolate build artifacts"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"variants\": [], \n \"product\": \"products/core.gni\", \n \"target\": \"x64\", \n \"board\": \"boards/x64.gni\", \n \"build_type\": \"release\"\n}",
- "[START_DIR]/args.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write args.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@args.json@{@@@",
- "@@@STEP_LOG_LINE@args.json@ \"variants\": [], @@@",
- "@@@STEP_LOG_LINE@args.json@ \"product\": \"products/core.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"target\": \"x64\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"board\": \"boards/x64.gni\", @@@",
- "@@@STEP_LOG_LINE@args.json@ \"build_type\": \"release\"@@@",
- "@@@STEP_LOG_LINE@args.json@}@@@",
- "@@@STEP_LOG_END@args.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\n \"netboot\": {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n \"zircon-a\": {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n}",
- "[START_DIR]/images.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write images.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@{@@@",
- "@@@STEP_LOG_LINE@images.json@ \"netboot\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ], @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
- "@@@STEP_LOG_LINE@images.json@ }, @@@",
- "@@@STEP_LOG_LINE@images.json@ \"zircon-a\": {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@}@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"environment\": {\n \"dimensions\": {\n \"device_type\": \"QEMU\"\n }\n }, \n \"tests\": [\n {\n \"name\": \"hello\", \n \"install_path\": \"/path/to/hello\", \n \"label\": \"//a/b/c:hello_test(//toolchain)\", \n \"path\": \"/path/to/hello\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", \n \"os\": \"fuchsia\"\n }, \n {\n \"name\": \"goodbye\", \n \"install_path\": \"/path/to/goodbye\", \n \"label\": \"//a/b/c:goodbye_test(//toolchain)\", \n \"path\": \"/path/to/goodbye\", \n \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", \n \"os\": \"fuchsia\"\n }\n ], \n \"name\": \"QEMU\", \n \"deps\": []\n }\n]",
- "[START_DIR]/shards.json"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.write shards.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@shards.json@[@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"environment\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"dimensions\": {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"device_type\": \"QEMU\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }, @@@",
- "@@@STEP_LOG_LINE@shards.json@ {@@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"install_path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"path\": \"/path/to/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"package_url\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"os\": \"fuchsia\"@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@ ], @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"name\": \"QEMU\", @@@",
- "@@@STEP_LOG_LINE@shards.json@ \"deps\": []@@@",
- "@@@STEP_LOG_LINE@shards.json@ }@@@",
- "@@@STEP_LOG_LINE@shards.json@]@@@",
- "@@@STEP_LOG_END@shards.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/arm64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/arm64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/arm64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/authorized_key\": [\"[CLEANUP]/build_artifacts_tmp_2/authorized_key\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/build_artifacts_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/covargs\": [\"[CLEANUP]/build_artifacts_tmp_2/covargs\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/ids.txt\": [\"[CLEANUP]/build_artifacts_tmp_2/ids.txt\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_cov\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_cov\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm_profdata\": [\"[CLEANUP]/build_artifacts_tmp_2/llvm_profdata\"], \"[CLEANUP]/build-artifacts_tmp_1/minfs\": [\"[CLEANUP]/build_artifacts_tmp_2/minfs\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/build_artifacts_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/symbolize_tool\": [\"[CLEANUP]/build_artifacts_tmp_2/symbolize_tool\"], \"[CLEANUP]/build-artifacts_tmp_1/tests.json\": [\"[CLEANUP]/build_artifacts_tmp_2/tests.json\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/build_artifacts_tmp_2/x64/testrunner\"], \"[CLEANUP]/build-artifacts_tmp_1/zbi\": [\"[CLEANUP]/build_artifacts_tmp_2/zbi\"], \"[START_DIR]/args.json\": [\"[CLEANUP]/build_artifacts_tmp_2/args.json\"], \"[START_DIR]/images.json\": [\"[CLEANUP]/build_artifacts_tmp_2/images.json\"], \"[START_DIR]/shards.json\": [\"[CLEANUP]/build_artifacts_tmp_2/shards.json\"]}"
- ],
- "infra_step": true,
- "name": "isolate build artifacts.create_links",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/build_artifacts_tmp_2:."
- ],
- "infra_step": true,
- "name": "isolate build artifacts.isolate",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "/path/to/hello\n/path/to/goodbye\n",
- "[CLEANUP]/tests-QEMU"
- ],
- "infra_step": true,
- "name": "write test list",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@tests-QEMU@/path/to/hello@@@",
- "@@@STEP_LOG_LINE@tests-QEMU@/path/to/goodbye@@@",
- "@@@STEP_LOG_END@tests-QEMU@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -f /boot/infra/shard-QEMU.run -i 1\numount /tmp/infra-test-output\ndm poweroff",
- "[CLEANUP]/runcmds-QEMU"
- ],
- "infra_step": true,
- "name": "write runcmds",
- "~followup_annotations": [
- "@@@STEP_LOG_LINE@runcmds-QEMU@mkdir /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-QEMU@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
- "@@@STEP_LOG_LINE@runcmds-QEMU@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-QEMU@runtests -o /tmp/infra-test-output -f /boot/infra/shard-QEMU.run -i 1@@@",
- "@@@STEP_LOG_LINE@runcmds-QEMU@umount /tmp/infra-test-output@@@",
- "@@@STEP_LOG_LINE@runcmds-QEMU@dm poweroff@@@",
- "@@@STEP_LOG_END@runcmds-QEMU@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/zbi",
- "--output",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
- "--entry",
- "infra/runcmds-QEMU=[CLEANUP]/runcmds-QEMU",
- "--entry",
- "infra/shard-QEMU.run=[CLEANUP]/tests-QEMU"
- ],
- "name": "create zbi"
- },
- {
- "cmd": [],
- "name": "shard QEMU"
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/isolate_tmp_3/output.fs@3584M",
- "create"
- ],
- "name": "shard QEMU.create test image",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
- "[CLEANUP]/isolate_tmp_3/images.json"
- ],
- "infra_step": true,
- "name": "shard QEMU.write image manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@images.json@[@@@",
- "@@@STEP_LOG_LINE@images.json@ {@@@",
- "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
- "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
- "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
- "@@@STEP_LOG_LINE@images.json@ ]@@@",
- "@@@STEP_LOG_LINE@images.json@ }@@@",
- "@@@STEP_LOG_LINE@images.json@]@@@",
- "@@@STEP_LOG_END@images.json@@@"
- ]
- },
- {
- "cmd": [
- "python",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
- "--link-json",
- "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_3/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_3/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_3/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_3/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_3/testrunner\"]}"
- ],
- "infra_step": true,
- "name": "shard QEMU.create tree of build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[CACHE]/isolated_client/isolated",
- "archive",
- "-verbose",
- "-isolate-server",
- "https://example.isolateserver.appspot.com",
- "-namespace",
- "default-gzip",
- "-dump-hash",
- "/path/to/tmp/",
- "-dirs",
- "[CLEANUP]/isolate_tmp_3:."
- ],
- "infra_step": true,
- "name": "shard QEMU.isolate build artifacts",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect"
- },
- {
- "cmd": [],
- "name": "launch/collect.0",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_SUMMARY_TEXT@1 launched, 1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.QEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.launch.QEMU (attempt 0).ensure swarming",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/swarming_client",
- "-ensure-file",
- "infra/tools/luci/swarming/${platform} git_revision:67b11ada44a625008a2db5cb49ad453494b16ba1",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.QEMU (attempt 0).ensure swarming.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@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:67b\", @@@",
- "@@@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\": \"QEMU\", \"priority\": \"200\", \"service_account\": \"\", \"tags\": [\"test_environment_name:QEMU-x64\", \"uses_legacy_qemu:true\"], \"task_slices\": [{\"expiration_secs\": \"0\", \"properties\": {\"cipd_input\": {\"packages\": [{\"package_name\": \"fuchsia/third_party/qemu/${platform}\", \"path\": \"qemu\", \"version\": \"git_revision:533bf2563d0213a7e002d9fcde75519d30ffa70f\"}]}, \"command\": [\"./botanist\", \"-level\", \"debug\", \"qemu\", \"-type\", \"qemu\", \"-qemu-dir\", \"./qemu/bin\", \"-images\", \"images.json\", \"-arch\", \"x64\", \"-minfs\", \"output.fs\", \"-pci-addr\", \"06.0\", \"-use-kvm\", \"zircon.autorun.boot=/boot/bin/sh+/boot/infra/runcmds-QEMU\"], \"containment\": {\"containment_type\": \"NONE\", \"limit_processes\": \"0\", \"limit_total_committed_memory\": \"0\", \"lower_priority\": false}, \"dimensions\": [{\"key\": \"kvm\", \"value\": \"1\"}, {\"key\": \"os\", \"value\": \"Debian\"}, {\"key\": \"cpu\", \"value\": \"x64\"}, {\"key\": \"pool\", \"value\": \"fuchsia.tests\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"0\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"inputs_ref\": {\"isolated\": \"[dummy hash]\", \"isolatedserver\": \"https://example.isolateserver.appspot.com\", \"namespace\": \"default-gzip\"}, \"io_timeout_secs\": \"0\", \"outputs\": [\"output.fs\"]}}]}]}",
- "-json-output",
- "/path/to/tmp/json",
- "-cancel-extra-tasks"
- ],
- "infra_step": true,
- "name": "launch/collect.0.launch.QEMU (attempt 0).trigger",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@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\": \"QEMU\"@@@",
- "@@@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: QEMU@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]/swarming_tmp_4",
- "0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.collect",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@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@ \"syslog.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"serial.txt\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"out.tar\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"benchmark.catapult_json\"@@@",
- "@@@STEP_LOG_LINE@json.output@ ], @@@",
- "@@@STEP_LOG_LINE@json.output@ \"results\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"duration\": 62.35, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"exit_code\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"name\": \"QEMU\", @@@",
- "@@@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: QEMU@hello world!@@@",
- "@@@STEP_LOG_END@task stdout+stderr: QEMU@@@",
- "@@@STEP_LINK@task isolated outputs: QEMU@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.QEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/symbolize_tool",
- "-llvm-symbolizer-restart-interval",
- "2",
- "-level",
- "debug",
- "-symbol-server",
- "debug-symbols",
- "-symbol-cache",
- "[CACHE]/symbol",
- "-llvm-symbolizer",
- "[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.QEMU.symbolize logs",
- "stdin": "hello world!",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output[symbolizer-output.json]@{}@@@",
- "@@@STEP_LOG_END@json.output[symbolizer-output.json]@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.QEMU.check log serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.QEMU.check log serial.txt.read",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@5@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [
- "[CLEANUP]/build-artifacts_tmp_1/minfs",
- "[CLEANUP]/swarming_tmp_4/0/out.tar",
- "cp",
- "::",
- "[CLEANUP]/test_results/0"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.QEMU.extract",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "remove",
- "[CLEANUP]/swarming_tmp_4/0/out.tar"
- ],
- "infra_step": true,
- "name": "launch/collect.0.process results.QEMU.remove out.tar",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.process results.always pass",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.QEMU (attempt 0)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "launch/collect.0.passed tasks.QEMU (attempt 0).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.QEMU (attempt 0).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "launch/collect.0.passed tasks.QEMU (attempt 0).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@1 passed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.QEMU",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.QEMU.attempt 0 (pass)",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@summary.json@{@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"outputs\": {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"goodbye-txt\": \"goodbye.txt\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"tests\": [@@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:hello_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/hello\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"hello.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }, @@@",
- "@@@STEP_LOG_LINE@summary.json@ {@@@",
- "@@@STEP_LOG_LINE@summary.json@ \"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"output_file\": \"goodbye.out\", @@@",
- "@@@STEP_LOG_LINE@summary.json@ \"result\": \"PASS\"@@@",
- "@@@STEP_LOG_LINE@summary.json@ }@@@",
- "@@@STEP_LOG_LINE@summary.json@ ]@@@",
- "@@@STEP_LOG_LINE@summary.json@}@@@",
- "@@@STEP_LOG_END@summary.json@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_LINE@symbolized log@blah@@@",
- "@@@STEP_LOG_END@symbolized log@@@",
- "@@@STEP_LOG_LINE@goodbye-txt@goodbye@@@",
- "@@@STEP_LOG_END@goodbye-txt@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@",
- "@@@STEP_LINK@swarming task@https://example.swarmingserver.appspot.com/task?id=0@@@",
- "@@@STEP_LINK@task outputs@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
- ]
- },
- {
- "cmd": [],
- "name": "passes.QEMU.attempt 0 (pass).all passed tests",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_TEXT@<br/>fuchsia-pkg://fuchsia.com/hello<br/>fuchsia-pkg://fuchsia.com/goodbye@@@",
- "@@@STEP_SUMMARY_TEXT@2 passed tests@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/syslog.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.QEMU.attempt 0 (pass).read syslog.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@syslog.txt@extra log contents@@@",
- "@@@STEP_LOG_END@syslog.txt@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "passes.QEMU.attempt 0 (pass).read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "cmd": [],
- "name": "flakes",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 flaked@@@"
- ]
- },
- {
- "cmd": [],
- "name": "failures",
- "~followup_annotations": [
- "@@@STEP_SUMMARY_TEXT@0 failed@@@"
- ]
- },
- {
- "cmd": [],
- "name": "all tasks passed"
- },
- {
- "cmd": [],
- "name": "upload QEMU test results",
- "~followup_annotations": [
- "@@@STEP_LINK@go/fuchsia-result-store/bid:8945511751514863184@https://goto.google.com/fuchsia-result-store/bid:8945511751514863184@@@"
- ]
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}",
- "[CLEANUP]/swarming_tmp_4/0/summary.json"
- ],
- "infra_step": true,
- "name": "upload QEMU test results.write summary.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@summary.json@{\"outputs\": {\"goodbye-txt\": \"goodbye.txt\"}, \"tests\": [{\"gn_label\": \"//a/b/c:hello_test(//toolchain)\", \"output_file\": \"hello.out\", \"name\": \"fuchsia-pkg://fuchsia.com/hello\", \"result\": \"PASS\"}, {\"gn_label\": \"//a/b/c:goodbye_test(//toolchain)\", \"output_file\": \"goodbye.out\", \"name\": \"fuchsia-pkg://fuchsia.com/goodbye\", \"result\": \"PASS\"}]}@@@",
- "@@@STEP_LOG_END@summary.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "upload QEMU test results.ensure gsutil",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd/gsutil",
- "-ensure-file",
- "infra/gsutil version:4.41",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "upload QEMU test results.ensure gsutil.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-version:4.41----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/gsutil\"@@@",
- "@@@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",
- "-vpython-spec",
- "RECIPE_MODULE[fuchsia::gsutil]/resources/gsutil.vpython",
- "-u",
- "[START_DIR]/cipd/gsutil/gsutil",
- "-o",
- "GSUtil:software_update_check_period=0",
- "-m",
- "rsync",
- "-r",
- "[CLEANUP]/swarming_tmp_4/0",
- "gs://fuchsia_infra/builds/8945511751514863184/QEMU"
- ],
- "infra_step": true,
- "name": "upload QEMU test results.upload QEMU to fuchsia_infra",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LINK@QEMU@https://console.cloud.google.com/storage/browser/fuchsia_infra/builds/8945511751514863184/QEMU@@@"
- ]
- },
- {
- "cmd": [],
- "name": "check log QEMU:serial.txt"
- },
- {
- "cmd": [
- "vpython",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/swarming_tmp_4/0/serial.txt",
- "/path/to/tmp/"
- ],
- "infra_step": true,
- "name": "check log QEMU:serial.txt.read serial.txt",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@",
- "@@@STEP_LOG_LINE@serial.txt@extra log contents@@@",
- "@@@STEP_LOG_END@serial.txt@@@"
- ]
- },
- {
- "name": "$result"
- }
-]
\ No newline at end of file
diff --git a/recipe_modules/testing/examples/full.py b/recipe_modules/testing/examples/full.py
index 4a1e236..9177d84 100644
--- a/recipe_modules/testing/examples/full.py
+++ b/recipe_modules/testing/examples/full.py
@@ -13,6 +13,7 @@
'fuchsia/experimental',
'fuchsia/fuchsia',
'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'recipe_engine/buildbucket',
'recipe_engine/isolated',
@@ -116,7 +117,7 @@
)
if test_in_shards:
- shard_requests = api.testing.shard_requests(
+ shard_requests = api.testing_requests.shard_requests(
build_artifacts,
api.buildbucket.build,
spec.test.per_test_timeout_secs,
@@ -135,9 +136,9 @@
orchestration_inputs=orchestration_inputs,
max_attempts=spec.test.max_attempts)
else:
- shard_requests = api.testing.deprecated_shard_requests(
+ shard_requests = api.testing_requests.deprecated_shard_requests(
build_artifacts,
- api.testing.deprecated_test_cmds(spec),
+ api.testing_requests.deprecated_test_cmds(test_spec),
test_spec.device_type,
test_spec.pool,
test_spec.timeout_secs,
@@ -197,14 +198,6 @@
# Test cases for running Fuchsia tests as a swarming task.
yield api.testing.test(
- 'isolated_tests_x64_with_secrets',
- properties={
- 'requires_secrets': True,
- 'per_test_timeout_secs': 1,
- },
- )
-
- yield api.testing.test(
'isolated_tests_no_json',
status='failure',
# Test a missing summary.json file. Clear the default steps and manage
@@ -216,15 +209,9 @@
api.swarming.task_result(
id='1', name='test', outputs=['out.tar']),
]),
- api.testing.args_test_data(),
+ api.testing_requests.args_test_data(),
])
yield api.testing.test(
- 'isolated_tests_device',
- properties={
- 'device_type': 'Intel NUC Kit NUC6i3SYK',
- },
- )
- yield api.testing.test(
'isolated_test_device_no_pave',
properties={
'device_type': 'Intel NUC Kit NUC6i3SYK',
@@ -232,15 +219,6 @@
},
)
yield api.testing.test(
- 'isolated_tests_device_arm64',
- properties={
- 'device_type': 'Khadas Vim2 Max',
- },
- steps=[
- api.testing.args_test_data('arm64'),
- ],
- )
- yield api.testing.test(
'isolated_tests_test_failure',
expect_failure=True, # Failure steps injected below.
steps=[
@@ -267,6 +245,7 @@
api.step_data('run tests.attempt 1.task results.symbolize logs',
api.raw_io.stream_output('bt1\nbt2\n')),
])
+ # TODO(garymm): Remove retries to simplify this test.
yield api.testing.test(
'isolated_tests_no_resource',
status='infra_failure',
@@ -321,52 +300,6 @@
),
],
)
- yield api.testing.test(
- 'retry_after_failure',
- steps=[
- api.testing.task_step_data(
- [
- api.swarming.task_result(
- id='2',
- name='test',
- outputs=['out.tar'],
- ),
- ],
- iteration=1,
- ),
- api.testing.tests_json_data(iteration=1),
- api.testing.test_step_data(failure=True, iteration=0),
- api.testing.test_step_data(failure=False, iteration=1),
- ])
- yield api.testing.test(
- 'retry_after_timeout',
- steps=[
- api.testing.task_step_data(
- [
- api.swarming.task_result(
- id='1',
- name='test',
- state=api.swarming.TaskState.TIMED_OUT,
- outputs=[],
- ),
- ],
- iteration=0,
- ),
- api.testing.task_step_data(
- [
- api.swarming.task_result(
- id='2',
- name='test',
- outputs=['out.tar'],
- ),
- ],
- iteration=1,
- ),
- api.testing.tests_json_data(iteration=1),
- api.testing.test_step_data(failure=False, iteration=1),
- ],
- clear_default_steps=True,
- )
# Test case for generating test coverage
yield api.testing.test(
'upload_test_coverage',
@@ -374,12 +307,13 @@
'gcs_bucket': 'fuchsia-build',
},
steps=[
- api.testing.args_test_data('x64', ['profile']),
+ api.testing_requests.args_test_data('x64', ['profile']),
])
# Test case for ASan.
yield api.testing.test(
- 'asan_tests', steps=[
- api.testing.args_test_data('x64', ['asan']),
+ 'asan_tests',
+ steps=[
+ api.testing_requests.args_test_data('x64', ['asan']),
])
# Test cases for testing in shards.
@@ -405,12 +339,13 @@
step_data += api.testing.task_retry_step_data(results, iteration=iteration)
return step_data
+ # TODO(garymm): Remove retries to simplify this test.
yield api.testing.test(
'sharded_kernel_panic',
expect_failure=True, # Failure step injected below.
properties={'test_in_shards': True},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='Vim2',
tests=[
@@ -446,12 +381,13 @@
],
)
+ # TODO(garymm): Remove retries to simplify this test.
yield api.testing.test(
'sharded_failure_string',
expect_failure=True, # Failure step injected below.
properties={'test_in_shards': True},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='Vim2',
tests=[
@@ -506,59 +442,6 @@
'test_in_shards': True,
}))
yield (api.testing.test(
- 'test_with_shards_arm64',
- clear_default_steps=True,
- properties={
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='Vim2',
- tests=[
- api.testsharder.test(
- name='test',
- label='//path/to/test:test(//toolchain)',
- os='linux',
- path='/path/to/test',
- )
- ],
- dimensions=dict(device_type='Khadas Vim2 Max'),
- service_account='my-service-account@example.com',
- netboot=True,
- ),
- ]),
- test_task_data('Vim2'),
- api.testing.args_test_data('arm64'),
- ]))
- yield (api.testing.test(
- 'test_with_shards_arm64_with_runtests',
- clear_default_steps=True,
- properties={
- 'test_in_shards': True,
- 'use_runtests': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='Vim2',
- tests=[
- api.testsharder.test(
- name='test',
- label='//path/to/test:test(//toolchain)',
- os='linux',
- path='/path/to/test',
- )
- ],
- dimensions=dict(device_type='Khadas Vim2 Max'),
- service_account='my-service-account@example.com',
- netboot=True,
- ),
- ]),
- test_task_data('Vim2'),
- api.testing.args_test_data('arm64'),
- ]))
- yield (api.testing.test(
'test_with_shards_arm64_serial_failure',
status='failure',
clear_default_steps=True,
@@ -566,7 +449,7 @@
'test_in_shards': True,
},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='Vim2',
tests=[
@@ -581,35 +464,10 @@
),
]),
test_task_data('Vim2'),
- api.testing.args_test_data('arm64'),
+ api.testing_requests.args_test_data('arm64'),
api.step_data('check log Vim2:serial.txt.read serial.txt',
api.raw_io.output_text('...DEVICE SUSPEND TIMED OUT\n'))
]))
- yield api.testing.test(
- 'test_with_Linux_shard',
- clear_default_steps=True,
- properties={
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='Linux',
- tests=[
- api.testsharder.test(
- name='test',
- label='//path/to/test:test(//toolchain)',
- os='linux',
- path='/path/to/test',
- deps=['/path/to/dep'],
- )
- ],
- dimensions=dict(os='Linux'),
- ),
- ]),
- test_task_data('Linux'),
- api.testing.args_test_data(),
- ])
# fuchsia-0000 passes the first time.
# fuchsia-0001 has tests that always fail.
@@ -625,10 +483,10 @@
'per_test_timeout_secs': 1,
},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='fuchsia-0000',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
api.testsharder.shard(
@@ -645,7 +503,7 @@
),
api.testsharder.shard(
name='fuchsia-0002',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
api.testsharder.shard(
@@ -712,7 +570,7 @@
shard_name='fuchsia-0003', qemu=False, failure=True, iteration=0),
api.testing.test_step_data(
shard_name='fuchsia-0003', qemu=False, iteration=1),
- api.testing.args_test_data(),
+ api.testing_requests.args_test_data(),
]) # yapf: disable
yield api.testing.test(
@@ -724,10 +582,10 @@
'per_test_timeout_secs': 1,
},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='multiplied:fuchsia-0000',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
]),
@@ -740,9 +598,11 @@
], iteration=0),
api.testing.test_step_data(
shard_name='multiplied:fuchsia-0000', failure=True, iteration=0),
- api.testing.args_test_data(),
+ api.testing_requests.args_test_data(),
]) # yapf: disable
+ # TODO(garymm): combine this with another test. Just set collect_timeout_secs on some
+ # other test's properties to get the same coverage.
yield api.testing.test(
'fail_then_timeout',
status='failure',
@@ -752,10 +612,10 @@
'collect_timeout_secs': 2,
},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='fuchsia-0000',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
]),
@@ -776,67 +636,10 @@
], iteration=1),
api.testing.test_step_data(
shard_name='fuchsia-0000', iteration=0, failure=True),
- api.testing.args_test_data(),
+ api.testing_requests.args_test_data(),
]) # yapf: disable
- yield (api.testing.test(
- 'without_experiment_ssh_into_qemu',
- clear_default_steps=True,
- properties={
- 'experimental.ssh_into_qemu': False,
- 'per_test_timeout_secs': 1,
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='QEMU',
- tests=api.testing.default_tests(),
- dimensions=dict(device_type='QEMU'),
- ),
- ]),
- test_task_data('QEMU'),
- api.testing.args_test_data('x64'),
- ]))
-
- yield (api.testing.test(
- 'without_experiment_ssh_into_aemu',
- clear_default_steps=True,
- properties={
- 'experimental.ssh_into_qemu': False,
- 'per_test_timeout_secs': 1,
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='AEMU',
- tests=api.testing.default_tests(),
- dimensions=dict(device_type='AEMU'),
- ),
- ]),
- test_task_data('AEMU'),
- api.testing.args_test_data('x64'),
- ]))
-
- yield (api.testing.test(
- 'aemu',
- clear_default_steps=True,
- properties={
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='AEMU',
- tests=api.testing.default_tests(),
- dimensions=dict(device_type='AEMU'),
- ),
- ]),
- test_task_data('AEMU'),
- api.testing.args_test_data('x64'),
- ]))
-
+ # TODO(garymm): combine this with another test.
yield (api.testing.test(
'upload_to_catapult',
clear_default_steps=True,
@@ -845,36 +648,18 @@
'upload_to_catapult': True,
},
steps=[
- api.testing.shards_step_data(shards=[
+ api.testing_requests.shards_step_data(shards=[
api.testsharder.shard(
name='QEMU',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
]),
test_task_data('QEMU'),
- api.testing.args_test_data('arm64'),
+ api.testing_requests.args_test_data('arm64'),
]))
yield api.testing.test(
- 'set_test_task_env_vars',
- clear_default_steps=True,
- properties={
- 'test_in_shards': True,
- },
- steps=[
- api.testing.shards_step_data(shards=[
- api.testsharder.shard(
- name='Vim2',
- tests=api.testing.default_tests(),
- dimensions=dict(device_type='Khadas Vim2 Max'),
- ),
- ]),
- test_task_data('Vim2'),
- api.testing.args_test_data('arm64'),
- ])
-
- yield api.testing.test(
'async',
# TODO(garymm): remove requires_secrets.
# It's only here to minimize diffs during an unrelated change.
diff --git a/recipe_modules/testing/test_api.py b/recipe_modules/testing/test_api.py
index 12c7591..3098d83 100644
--- a/recipe_modules/testing/test_api.py
+++ b/recipe_modules/testing/test_api.py
@@ -50,11 +50,8 @@
if not clear_default_steps:
# Don't add these if the test is expected to raise an exception;
# the recipes engine will complain that these steps aren't consumed.
- requires_secrets = properties.get('requires_secrets', False)
on_device = properties.get('device_type', 'QEMU') != 'QEMU'
- if requires_secrets:
- extra_steps.extend(self.secrets_step_data())
if not expect_failure:
outputs = ['out.tar', 'serial.txt'] if on_device else ['output.fs']
task_result = self.m.swarming.task_result(
@@ -65,7 +62,7 @@
self.task_step_data([task_result], enable_retries=enable_retries))
extra_steps.append(self.tests_json_data(enable_retries=enable_retries))
extra_steps.append(self.test_step_data(enable_retries=enable_retries))
- extra_steps.append(self.args_test_data())
+ extra_steps.append(self.m.testing_requests.args_test_data())
# Assemble the return value.
if status is None:
@@ -74,12 +71,11 @@
status = 'failure'
ret = self.m.status_check.test(name, status=status)
+ ret += self.m.properties(**properties)
git_repo = 'https://fuchsia.googlesource.com/fuchsia'
if tryjob:
- ret += self.m.properties.tryserver(**properties)
ret += self.m.buildbucket.try_build(project='fuchsia', git_repo=git_repo)
else:
- ret += self.m.properties(**properties)
ret += self.m.buildbucket.ci_build(project='fuchsia', git_repo=git_repo)
for s in extra_steps:
@@ -89,34 +85,6 @@
ret += s
return ret
- def args_test_data(self, target='x64', variants=None):
- args = self.m.json.output({
- 'board': 'boards/x64.gni',
- 'build_type': 'release',
- 'product': 'products/core.gni',
- 'target': target,
- 'variants': variants if variants else [],
- })
- return self.step_data('download build artifacts.read args.json', args)
-
- def shards_step_data(self,
- shards,
- step_name='download build artifacts.load test shards'):
- """Returns mock step data for test shards.
-
- This should be used by any test which calls api.fuchsia.test*() and expects
- to shard tests.
-
- Args:
- shards (seq[api.testsharder.Shard]): A set of example shards which should
- be used as step data for the result of invoking the testsharder.
- step_name (str): name to use for step data
-
- Returns:
- RecipeTestApi.step_data for the extract_results step.
- """
- return self.m.testsharder.execute(step_name=step_name, shards=shards)
-
def task_requests_step_data(self, task_requests, step_name):
"""Returns mock step data for swarming task requests.
@@ -192,39 +160,6 @@
# pylint: enable=unused-argument
- def _example_tests_json(self):
- return [
- {
- 'test': {
- 'name': 'hello',
- 'label': '//a/b/c:hello_test(//toolchain)',
- 'os': 'fuchsia',
- 'path': '/path/to/hello',
- 'package_url': 'fuchsia-pkg://fuchsia.com/hello',
- }
- },
- {
- 'test': {
- 'name': 'goodbye',
- 'label': '//a/b/c:goodbye_test(//toolchain)',
- 'os': 'fuchsia',
- 'path': '/path/to/goodbye',
- 'package_url': 'fuchsia-pkg://fuchsia.com/goodbye',
- }
- },
- ]
-
- def default_tests(self):
- """Returns mock step data for the output of testsharder.
-
- Returns:
- list(testsharder.Test)
- """
- return [
- self.m.testsharder.test(**t['test'])
- for t in self._example_tests_json()
- ]
-
def test_step_data(
self,
failure=False,
@@ -244,7 +179,7 @@
shard_name (str): name of the shard for step name
iteration (int): iteration of launch/collect step for step name
tests_json (seq(dict)): The tests.json to mock. Defaults to
- `self._example_tests_json()`.
+ `testing_requests.EXAMPLE_TESTS_JSON`.
qemu (bool): Whether the tests are being run on QEMU.
Returns:
@@ -266,7 +201,7 @@
}
summary_tests = []
if tests_json is None:
- tests_json = self._example_tests_json()
+ tests_json = self.m.testing_requests.EXAMPLE_TESTS_JSON
for item in tests_json:
test = item['test']
name = test['name']
@@ -303,34 +238,5 @@
if enable_retries:
step_name = 'run tests.attempt %d.%s' % (iteration, step_name)
if tests is None:
- tests = self._example_tests_json()
+ tests = self.m.testing_requests.EXAMPLE_TESTS_JSON
return self.step_data(step_name, self.m.file.read_json(tests))
-
- def secrets_step_data(self):
- """Returns mock step data for the secrets pipeline.
-
- This should be used by any test which calls api.fuchsia.test() with
- requires_secrets is set to True.
-
- Returns:
- list(RecipeTestApi.step_data) for the steps around secrets decryption.
- """
- step_data = []
- secret_name = 'auth-token'
- step_data.append(
- self.step_data(
- 'process secret specs.list',
- self.m.file.listdir([
- '%s.json' % secret_name,
- 'ciphertext' # the 'ciphertext' subdir, which will be skipped.
- ])))
- step_data.append(
- self.step_data('process secret specs.read spec for %s' % secret_name,
- self.m.json.output({
- 'cloudkms_key_path': 'key-path',
- })))
- step_data.append(
- self.step_data(
- 'process secret specs.decrypt secret for %s' % secret_name,
- self.m.raw_io.output_text('plaintext')))
- return step_data
diff --git a/recipe_modules/testing_requests/__init__.py b/recipe_modules/testing_requests/__init__.py
new file mode 100644
index 0000000..e2ab3e4
--- /dev/null
+++ b/recipe_modules/testing_requests/__init__.py
@@ -0,0 +1,23 @@
+# Copyright 2019 The Fuchsia 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 = [
+ 'fuchsia/artifacts',
+ 'fuchsia/build',
+ 'fuchsia/cloudkms',
+ 'fuchsia/emu',
+ 'fuchsia/experimental',
+ 'fuchsia/minfs',
+ 'fuchsia/testsharder',
+ 'fuchsia/zbi',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/cipd',
+ 'recipe_engine/file',
+ 'recipe_engine/isolated',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'recipe_engine/swarming',
+]
diff --git a/recipe_modules/testing_requests/api.py b/recipe_modules/testing_requests/api.py
new file mode 100644
index 0000000..f4bd8f0
--- /dev/null
+++ b/recipe_modules/testing_requests/api.py
@@ -0,0 +1,854 @@
+# Copyright 2019 The Fuchsia 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 copy
+
+from recipe_engine import recipe_api
+
+# System path at which authorized SSH keys are stored.
+AUTHORIZED_KEY_PATH = 'data/ssh/authorized_keys'
+# The path to the botanist config on the host.
+BOTANIST_DEVICE_CONFIG = '/etc/botanist/config.json'
+# The log level to use for botanist invocations in test tasks. Can be one of
+# "fatal", "error", "warning", "info", "debug", or "trace", where "trace" is
+# the most verbose, and fatal is the least.
+BOTANIST_LOG_LEVEL = 'debug'
+# Name of image manifest produced by the build.
+IMAGES_JSON = 'images.json'
+# The path in the BootFS manifest that we want runcmds to show up at.
+RUNCMDS_BOOTFS_PATH = 'infra/runcmds'
+
+SECRETSHIM_CIPD_VERSION = 'git_revision:63ab3ac613fceb52ac49b63b43fce841a2585645'
+STORAGE_FULL = 'storage-full'
+
+# The PCI address to use for the block device to contain test results.
+TEST_FS_PCI_ADDR = '06.0'
+
+
+class _TaskRequester(object):
+ """Creates requests for swarming tasks that run tests."""
+
+ def __init__(self, api, buildbucket_build, per_test_timeout_secs, pool,
+ swarming_expiration_timeout_secs, swarming_io_timeout_secs,
+ timeout_secs, use_runtests):
+ self._api = api
+ self._buildbucket_build = buildbucket_build
+ self._per_test_timeout_secs = per_test_timeout_secs
+ self._pool = pool
+ self._swarming_expiration_timeout_secs = swarming_expiration_timeout_secs
+ self._swarming_io_timeout_secs = swarming_io_timeout_secs
+ self._timeout_secs = timeout_secs
+ self._use_runtests = use_runtests
+
+ def request(self, shard, build_artifacts):
+ # Copy the build_artifacts object to be modified for each shard.
+ build_artifacts = copy.deepcopy(build_artifacts)
+
+ if self._api.testing_requests._uses_legacy_qemu(shard):
+ task_request = self._api.testing_requests._construct_legacy_qemu_task_request(
+ task_name=shard.name,
+ pool=self._pool,
+ build_artifacts=build_artifacts,
+ timeout_secs=self._timeout_secs,
+ swarming_io_timeout_secs=self._swarming_io_timeout_secs,
+ swarming_expiration_timeout_secs=(
+ self._swarming_expiration_timeout_secs),
+ # secret_bytes is only supported in the deprecated testing code path.
+ secret_bytes='',
+ qemu_type=shard.device_type,
+ shard=shard,
+ )
+ else:
+ task_request = self._construct_test_task_request(
+ build_artifacts=build_artifacts, shard=shard)
+
+ return self._api.build.ShardTaskRequest(shard, task_request)
+
+ def _construct_test_task_request(self, build_artifacts, shard):
+ """Constructs a Swarming task request to run a shard of Fuchsia tests.
+
+ Args:
+ build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
+ shard (api.testsharder.Shard): A shard of tests.
+ timeout_secs (int): The amount of seconds to wait for the tests to execute
+ before giving up.
+
+ Returns:
+ An api.swarming.TaskRequest representing the swarming task request.
+ """
+ # To freely archive files from the build directory, the source, and those we
+ # dynamically create, we create a tree of symlinks in a fresh directory and
+ # isolate that. This solves the problems of (a) finding a root directory
+ # that works for all artifacts, (b) being able to create files in that
+ # directory without fear of collision, and (c) not having to isolate
+ # extraneous files.
+ isolate_tree = self._api.file.symlink_tree(
+ root=self._api.path.mkdtemp('isolate'))
+
+ test_manifest = 'tests.json'
+ self._api.file.write_json(
+ 'write test manifest',
+ isolate_tree.root.join(test_manifest),
+ [test.render_to_jsonish() for test in shard.tests],
+ indent=2)
+
+ cmd = []
+ outputs = []
+ ensure_file = self._api.cipd.EnsureFile()
+ dimensions = {'pool': self._pool}
+ test_bot_cpu = 'x64'
+ is_emu_type = self._api.emu.is_emulator_type(shard.device_type)
+
+ # This command spins up a metadata server that allows its subcommands to
+ # automagically authenticate with LUCI auth, provided the sub-exec'ed tool
+ # was written in go or dart and respectively makes use of the standard
+ # cloud.google.com/go/compute/metadata or
+ # github.com/dart-lang/googleapis_auth authentication libraries. Such
+ # libraries look for a metadata server under environment variables
+ # like $GCE_METADATA_HOST, which LUCI emulates.
+ if shard.service_account:
+ # TODO(fxbug.dev/37142): Find a way to use the version that LUCI is
+ # currently using, instead of 'latest'.
+ ensure_file.add_package('infra/tools/luci-auth/${platform}', 'latest')
+ cmd.extend(['./luci-auth', 'context', '--'])
+
+ if is_emu_type:
+ dimensions.update(os='Debian', cpu=build_artifacts.target, kvm='1')
+ # To take advantage of KVM, we execute QEMU-arm tasks on arm hardware.
+ test_bot_cpu = build_artifacts.target
+ else:
+ dimensions.update(shard.dimensions)
+
+ if shard.targets_fuchsia:
+ botanist_cmd = [
+ './botanist',
+ '-level', BOTANIST_LOG_LEVEL,
+ 'run',
+ '-images', IMAGES_JSON,
+ '-timeout', '%ds' % self._timeout_secs,
+ '-syslog', self._api.testing_requests.SYSLOG_NAME,
+ '-serial-log', self._api.testing_requests.SERIAL_LOG_NAME,
+ ] # yapf: disable
+ outputs.append(self._api.testing_requests.SYSLOG_NAME)
+ outputs.append(self._api.testing_requests.SERIAL_LOG_NAME)
+
+ # TODO(fxbug.dev/40840): Once we can scope the proxy server to a
+ # an individual task, we can make free use of it in the emulator case.
+ if not is_emu_type:
+ botanist_cmd.extend([
+ # For container networking and authentication reasons, we access GCS
+ # via a proxy server running on the controller.
+ '-repo', self._api.artifacts.package_repo_url(host='$GCS_PROXY_HOST'),
+ '-blobs', self._api.artifacts.package_blob_url(host='$GCS_PROXY_HOST'),
+ ]) # yapf: disable
+
+ config = BOTANIST_DEVICE_CONFIG
+ if self._api.emu.is_emulator_type(shard.device_type):
+ config = './qemu.json'
+ botanist_cmd.extend(
+ ['-ssh', build_artifacts.DEFAULT_ISOLATED_LAYOUT.private_key])
+ qemu_config = [{
+ 'type': shard.device_type.lower(),
+ 'path': './%s/bin' % shard.device_type.lower(),
+ 'target': build_artifacts.target,
+ 'cpu': 8,
+ 'memory': 8192,
+ 'kvm': True,
+ }]
+
+ if shard.device_type == 'AEMU':
+ self._api.emu.add_aemu_to_ensure_file(ensure_file, subdir='aemu/bin')
+ elif shard.device_type == 'QEMU':
+ self._api.emu.add_qemu_to_ensure_file(ensure_file, subdir='qemu')
+
+ self._api.file.write_json(
+ 'write qemu config',
+ isolate_tree.root.join('qemu.json'),
+ qemu_config,
+ indent=2)
+ elif shard.netboot:
+ botanist_cmd.append('-netboot')
+
+ botanist_cmd.extend(['-config', config])
+
+ cmd.extend(botanist_cmd)
+
+ cmd.extend([
+ './testrunner',
+ '-archive',
+ self._api.testing_requests.TEST_RESULTS_ARCHIVE_NAME,
+ ])
+ if self._use_runtests:
+ cmd.append('-use-runtests')
+ if self._per_test_timeout_secs:
+ cmd.extend(['-per-test-timeout', '%ds' % self._per_test_timeout_secs])
+ cmd.append(test_manifest)
+
+ outputs.append(self._api.testing_requests.TEST_RESULTS_ARCHIVE_NAME)
+
+ isolated_hash = self._api.testing_requests._isolate_build_artifacts(
+ isolate_tree, build_artifacts, shard=shard, test_bot_cpu=test_bot_cpu)
+
+ env_name = '%s-%s' % (shard.device_type or shard.os, build_artifacts.target)
+ tags = {'test_environment_name': [env_name]}
+
+ request = (self._api.swarming.task_request().
+ with_name(shard.name).
+ with_service_account(shard.service_account).
+ with_tags(tags)
+ ) #yapf: disable
+ return request.with_slice(0, request[0].
+ with_command(cmd).
+ with_isolated(isolated_hash).
+ with_dimensions(**dimensions).
+ with_expiration_secs(self._swarming_expiration_timeout_secs).
+ with_io_timeout_secs(self._swarming_io_timeout_secs).
+ with_execution_timeout_secs(self._timeout_secs).
+ with_outputs(outputs).
+ with_cipd_ensure_file(ensure_file).
+ with_env_vars(**self._test_task_env_vars(shard, build_artifacts))
+ ) #yapf: disable
+
+ def _test_task_env_vars(self, shard, build_artifacts):
+ """Returns the environment variables to be set for the test task.
+
+ Returns:
+ A dict mapping string env var names to string values.
+ """
+ build = self._buildbucket_build
+ commit = build.input.gitiles_commit
+ llvm_symbolizer = self._api.path.basename(build_artifacts.llvm_symbolizer)
+ env_vars = dict(
+ # `${ISOLATED_OUTDIR}` is a magic string that Swarming will replace
+ # with a temporary directory into which files will be automatically
+ # collected upon exit of a task.
+ FUCHSIA_TEST_OUTDIR='${ISOLATED_OUTDIR}',
+ BUILDBUCKET_ID=str(build.id),
+ BUILD_BOARD=build_artifacts.board,
+ BUILD_TYPE=build_artifacts.build_type,
+ BUILD_PRODUCT=build_artifacts.product,
+ BUILD_TARGET=build_artifacts.target,
+ BUILDBUCKET_BUCKET=build.builder.bucket,
+
+ # Used for symbolization:
+ ASAN_SYMBOLIZER_PATH=llvm_symbolizer,
+ UBSAN_SYMBOLIZER_PATH=llvm_symbolizer,
+ LSAN_SYMBOLIZER_PATH=llvm_symbolizer,
+
+ # Used by the catapult converter
+ BUILD_CREATE_TIME=str(build.create_time.seconds),
+ BUILDER_NAME=build.builder.builder,
+ FUCHSIA_DEVICE_TYPE=shard.device_type,
+ INPUT_COMMIT_HOST=commit.host,
+ INPUT_COMMIT_PROJECT=commit.project,
+ INPUT_COMMIT_REF=commit.ref,
+ )
+ # For some reason, empty string environment variables sent to the swarming
+ # API get interpreted as null and rejected. So don't bother sending them to
+ # avoid breaking the task request.
+ # TODO(olivernewman): Figure out whether this logic should be moved into
+ # the upstream swarming module (or obviated by fixing the "" -> null
+ # behavior).
+ return {k: v for k, v in env_vars.iteritems() if v}
+
+
+class TestingRequestsApi(recipe_api.RecipeApi):
+ """APIs for constructing Swarming task requests to test Fuchsia."""
+
+ SERIAL_LOG_NAME = 'serial.txt'
+ SYSLOG_NAME = 'syslog.txt'
+ TEST_RESULTS_ARCHIVE_NAME = 'out.tar'
+ TEST_RESULTS_MINFS_NAME = 'output.fs'
+
+ def shard_requests(
+ self,
+ build_artifacts,
+ buildbucket_build,
+ per_test_timeout_secs,
+ pool,
+ swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs,
+ use_runtests,
+ # TODO(garymm): Remove default value.
+ # We should always get this from a spec.
+ timeout_secs=40 * 60):
+ """Returns a _ShardTaskRequest for each shard in build_artifact.shards.
+
+ Args:
+ build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
+ buildbucket_build (build_pb2.Build): The buildbucket build that is going
+ to orchestrate testing.
+ per_test_timeout_secs (int): Any test that executes for longer than this
+ will be considered failed.
+ pool (str): The Swarming pool to schedule test tasks in.
+ use_runtests (bool): Whether to use runtests (or else run_test_component)
+ when executing tests on target.
+ timeout_secs (int): The amount of seconds to wait for the tests to execute
+ before giving up.
+ """
+
+ self.m.minfs.minfs_path = build_artifacts.minfs
+ self.m.zbi.zbi_path = build_artifacts.zbi
+ # This modifies the build artifacts so must be done before calling
+ # task_requester.request().
+ self._install_runcmds_files(
+ build_artifacts,
+ test_in_shards=True,
+ per_test_timeout_secs=per_test_timeout_secs,
+ in_place=True)
+ task_requester = _TaskRequester(
+ self.m,
+ buildbucket_build=buildbucket_build,
+ per_test_timeout_secs=per_test_timeout_secs,
+ pool=pool,
+ swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs=swarming_io_timeout_secs,
+ timeout_secs=timeout_secs,
+ use_runtests=use_runtests,
+ )
+ shard_requests = []
+ for s in build_artifacts.shards:
+ with self.m.step.nest('shard %s' % s.name):
+ shard_requests.append(task_requester.request(s, build_artifacts))
+ return shard_requests
+
+ def deprecated_shard_requests(self,
+ build_artifacts,
+ test_cmds,
+ device_type,
+ pool,
+ timeout_secs,
+ pave,
+ requires_secrets=False,
+ swarming_expiration_timeout_secs=18000,
+ swarming_io_timeout_secs=5 * 60):
+ """Returns a swarming task request for testing in the deprecated way.
+
+ Args:
+ build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
+ test_cmds (list[str]): Command to have Fuchsia run on boot.
+ pool (str): Swarming pool from which the test task will be drawn.
+ timeout_secs (int): The amount of seconds to wait for the tests to execute
+ before giving up.
+ pave (bool): Whether to pave the image to disk. Ignored if device_type ==
+ 'QEMU'.
+ requires_secrets (bool): Whether tests require plaintext secrets; ignored
+ if device_type != 'QEMU'. TODO(41665): Remove secrets support once done.
+ swarming_expiration_timeout_secs (int): Maximum run time for the swarming
+ task, once scheduled (enforced by swarming).
+ swarming_io_timeout_secs (int): The swarming task will be killed if it does
+ not produce any output for this long.
+
+ Returns:
+ A list of a single ShardTaskRequest.
+ """
+ assert test_cmds
+ assert device_type
+
+ self.m.minfs.minfs_path = build_artifacts.minfs
+ self.m.zbi.zbi_path = build_artifacts.zbi
+
+ # Copy build_artifacts because we modify its contents below.
+ build_artifacts = copy.deepcopy(build_artifacts)
+ self._install_runcmds_files(
+ build_artifacts,
+ device_type=device_type,
+ pave=pave,
+ test_cmds=test_cmds,
+ )
+
+ if self.m.emu.is_emulator_type(device_type):
+ secret_bytes = ''
+ if requires_secrets:
+ secret_bytes = self.m.json.dumps(self._decrypt_secrets(build_artifacts))
+ task = self._construct_legacy_qemu_task_request(
+ task_name='all tests',
+ build_artifacts=build_artifacts,
+ pool=pool,
+ timeout_secs=timeout_secs,
+ swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs=swarming_io_timeout_secs,
+ secret_bytes=secret_bytes,
+ qemu_type=device_type,
+ )
+ else:
+ task = self._construct_device_task_request(
+ task_name='all tests',
+ device_type=device_type,
+ build_artifacts=build_artifacts,
+ pool=pool,
+ pave=pave,
+ timeout_secs=timeout_secs,
+ swarming_expiration_timeout_secs=swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs=swarming_io_timeout_secs,
+ )
+ # In the deprecated testing code paths, shards are not used, but it makes
+ # other code simpler to have a valid shard here.
+ dummy_shard = self.m.testsharder.Shard('dummy', (), {})
+ return [self.m.build.ShardTaskRequest(dummy_shard, task)]
+
+ def deprecated_test_cmds(self, test_spec):
+ runtests_cmd_parts = ['runtests', '-o', self.results_dir_on_target]
+ if test_spec.per_test_timeout_secs:
+ runtests_cmd_parts.extend(['-i', '%d' % test_spec.per_test_timeout_secs])
+ runtests_cmd_parts.append(test_spec.runtests_args)
+ return [' '.join(runtests_cmd_parts)]
+
+ @property
+ def results_dir_on_target(self):
+ """The directory on target to which target test results will be written."""
+ return '/tmp/infra-test-output'
+
+ def _decrypt_secrets(self, build_artifacts):
+ """Decrypts the secrets included in the build.
+
+ Args:
+ build (FuchsiaBuildResults): The build for which secret specs were
+ generated.
+
+ Returns:
+ The dictionary that maps secret spec name to the corresponding plaintext.
+ """
+ self.m.cloudkms.ensure()
+
+ secret_spec_dir = build_artifacts.secret_specs
+ secrets_map = {}
+ with self.m.step.nest('process secret specs'):
+ secret_spec_files = self.m.file.listdir('list', secret_spec_dir)
+ for secret_spec_file in secret_spec_files:
+ basename = self.m.path.basename(secret_spec_file)
+ # Skip the 'ciphertext' subdirectory.
+ if basename == 'ciphertext':
+ continue
+
+ secret_name, _ = basename.split('.json', 1)
+ secret_spec = self.m.json.read('read spec for %s' % secret_name,
+ secret_spec_file).json.output
+
+ # For each test spec file <name>.json in this directory, there is an
+ # associated ciphertext file at ciphertext/<name>.ciphertext.
+ ciphertext_file = secret_spec_dir.join('ciphertext',
+ '%s.ciphertext' % secret_name)
+
+ key_path = secret_spec['cloudkms_key_path']
+ secrets_map[secret_name] = self.m.cloudkms.decrypt(
+ 'decrypt secret for %s' % secret_name, key_path, ciphertext_file,
+ self.m.raw_io.output()).raw_io.output
+ return secrets_map
+
+ def _construct_legacy_qemu_task_request(self,
+ task_name,
+ build_artifacts,
+ pool,
+ timeout_secs,
+ swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs,
+ secret_bytes,
+ qemu_type,
+ shard=None):
+ """Constructs a Swarming task request which runs Fuchsia tests inside QEMU.
+
+ Expects the build and artifacts to be at the same place they were at
+ the end of the build.
+
+ Args:
+ build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
+ pool (str): Swarming pool from which the test task will be drawn.
+ timeout_secs (int): The amount of seconds to wait for the tests to execute
+ before giving up.
+ secret_bytes (str): secret bytes to pass to the QEMU task.
+ qemu_type (str): type of qemu, either QEMU or AEMU.
+ shard (api.testsharder.Shard|None): The shard associated with the task or
+ None if it's not a shard.
+
+ Returns:
+ An api.swarming.TaskRequest representing the swarming task request.
+ """
+ # To freely archive files from the build directory, the source, and those we
+ # dynamically create, we create a tree of symlinks in a fresh directory and
+ # isolate that. This solves the problems of (a) finding a root directory
+ # that works for all artifacts, (b) being able to create files in that
+ # directory without fear of collision, and (c) not having to isolate
+ # extraneous files.
+ isolate_tree = self.m.file.symlink_tree(root=self.m.path.mkdtemp('isolate'))
+
+ # As part of running tests, we'll send a MinFS image over to another machine
+ # which will be declared as a block device in QEMU, at which point
+ # Fuchsia will mount it and write test output to. We choose 3.5G for the
+ # MinFS image arbitrarily, as it appears it can hold our test output
+ # comfortably without going overboard on size.
+ #
+ minfs_image_path = isolate_tree.root.join(self.TEST_RESULTS_MINFS_NAME)
+ self.m.minfs.create(minfs_image_path, '3584M', name='create test image')
+
+ ensure_file = self.m.cipd.EnsureFile()
+
+ botanist_cmd = [
+ './botanist',
+ '-level', BOTANIST_LOG_LEVEL,
+ 'qemu',
+ '-type', '%s' % qemu_type.lower(),
+ '-qemu-dir', './%s/bin' % qemu_type.lower(),
+ '-images', IMAGES_JSON,
+ '-arch', build_artifacts.target,
+ '-minfs', self.TEST_RESULTS_MINFS_NAME,
+ '-pci-addr', TEST_FS_PCI_ADDR,
+ '-use-kvm'
+ ] # yapf: disable
+
+ if secret_bytes:
+ # Wrap botanist command with secretshim which starts the secrets server
+ # before running the following command.
+ botanist_cmd = ['./secretshim'] + botanist_cmd
+ ensure_file.add_package('fuchsia/infra/secretshim/${platform}',
+ SECRETSHIM_CIPD_VERSION)
+
+ if [v for v in ['asan', 'profile'] if v in build_artifacts.variants]:
+ botanist_cmd.extend([
+ '-cpu',
+ str(8),
+ '-memory',
+ str(8192),
+ ])
+
+ # storage-full not being present signifies the exclusion of the system
+ # partition, which means `boot` (i.e. running on boot) must be used instead
+ # of `system` (i.e., running after the system partition is mounted).
+ storage_free_build = STORAGE_FULL not in build_artifacts.images
+ arg_key = 'zircon.autorun.%s' % ('boot' if storage_free_build else 'system')
+ botanist_cmd.append('%s=/boot/bin/sh+/boot/%s' %
+ (arg_key, self._get_runcmds_path_per_shard(shard)))
+
+ isolated_hash = self._isolate_build_artifacts(
+ isolate_tree,
+ build_artifacts,
+ # To take advantage of KVM, we execute QEMU-arm tasks on arm hardware.
+ test_bot_cpu=build_artifacts.target,
+ legacy_qemu=True,
+ )
+
+ if qemu_type == 'AEMU':
+ self.m.emu.add_aemu_to_ensure_file(ensure_file, subdir='aemu/bin')
+ elif qemu_type == 'QEMU':
+ self.m.emu.add_qemu_to_ensure_file(ensure_file, subdir='qemu')
+
+ env_name = '%s-%s' % (qemu_type, build_artifacts.target)
+ tags = {
+ # consumed by google3 results uploader
+ 'test_environment_name': [env_name],
+ # consumed by this recipe module
+ 'uses_legacy_qemu': ['true']
+ }
+ request = self.m.swarming.task_request().with_name(task_name).with_tags(
+ tags)
+ return (request.with_slice(0, request[0].
+ with_command(botanist_cmd).
+ with_isolated(isolated_hash).
+ with_dimensions(pool=pool, os='Debian', cpu=build_artifacts.target, kvm='1').
+ with_io_timeout_secs(swarming_io_timeout_secs).
+ with_execution_timeout_secs(timeout_secs).
+ with_expiration_secs(swarming_expiration_timeout_secs).
+ with_secret_bytes(secret_bytes).
+ with_outputs([self.TEST_RESULTS_MINFS_NAME]).
+ with_cipd_ensure_file(ensure_file)
+ )) #yapf: disable
+
+ def _construct_device_task_request(self, task_name, device_type,
+ build_artifacts, pool, pave, timeout_secs,
+ swarming_expiration_timeout_secs,
+ swarming_io_timeout_secs):
+ """Constructs a Swarming task request to run Fuchsia tests on a device.
+
+ Expects the build and artifacts to be at the same place they were at
+ the end of the build.
+
+ Args:
+ build_artifacts (BuildArtifacts): The Fuchsia build artifacts to test.
+ pool (str): Swarming pool from which the test task will be drawn.
+ pave (bool): Whether or not the build artifacts should be paved.
+ timeout_secs (int): The amount of seconds to wait for the tests to execute
+ before giving up.
+
+ Returns:
+ An api.swarming.TaskRequest representing the swarming task request.
+ """
+ # Construct the botanist command.
+ botanist_cmd = [
+ './botanist',
+ '-level', BOTANIST_LOG_LEVEL,
+ 'zedboot',
+ '-config', BOTANIST_DEVICE_CONFIG,
+ '-images', IMAGES_JSON,
+ '-results-dir', self.results_dir_on_target,
+ '-out', self.TEST_RESULTS_ARCHIVE_NAME,
+ '-serial-log', self.SERIAL_LOG_NAME,
+ ] # yapf: disable
+
+ if not pave:
+ botanist_cmd.append('-netboot')
+
+ # storage-full not being present signifies the exclusion of the system
+ # partition, which means `boot` (i.e. running on boot) must be used instead
+ # of `system` (i.e., running after the system partition is mounted).
+ storage_free_build = STORAGE_FULL not in build_artifacts.images
+ arg_key = 'zircon.autorun.%s' % ('boot' if storage_free_build else 'system')
+ botanist_cmd.append('%s=/boot/bin/sh+/boot/%s' %
+ (arg_key, RUNCMDS_BOOTFS_PATH))
+
+ # To freely archive files from the build directory, the source, and those we
+ # dynamically create, we create a tree of symlinks in a fresh directory and
+ # isolate that. This solves the problems of (a) finding a root directory
+ # that works for all artifacts, (b) being able to create files in that
+ # directory without fear of collision, and (c) not having to isolate
+ # extraneous files.
+ isolate_tree = self.m.file.symlink_tree(root=self.m.path.mkdtemp('isolate'))
+ isolated_hash = self._isolate_build_artifacts(isolate_tree, build_artifacts)
+
+ dimensions = {
+ 'pool': pool,
+ 'device_type': device_type,
+ }
+
+ env_name = '%s-%s' % (device_type, build_artifacts.target)
+ tags = {'test_environment_name': [env_name]}
+ request = self.m.swarming.task_request().with_name(task_name).with_tags(
+ tags)
+ return (request.with_slice(0, request[0].
+ with_command(botanist_cmd).
+ with_isolated(isolated_hash).
+ with_dimensions(**dimensions).
+ with_expiration_secs(swarming_expiration_timeout_secs).
+ with_io_timeout_secs(swarming_io_timeout_secs).
+ with_execution_timeout_secs(timeout_secs).
+ with_outputs([self.TEST_RESULTS_ARCHIVE_NAME, self.SERIAL_LOG_NAME])
+ )) #yapf: disable
+
+ def _create_runcmds_script(self, device_type, test_cmds, output_path):
+ """Creates a script for running tests on boot."""
+ # The device topological path is the toplogical path to the block device
+ # which will contain test output.
+ device_topological_path = '/dev/sys/pci/00:%s/virtio-block/block' % (
+ TEST_FS_PCI_ADDR)
+
+ # Script that mounts the block device to contain test output and runs tests,
+ # dropping test output into the block device.
+ results_dir = self.results_dir_on_target
+ runcmds = [
+ 'mkdir %s' % results_dir,
+ ]
+ if self.m.emu.is_emulator_type(device_type):
+ runcmds.extend([
+ # Wait until the MinFS test image shows up (max <timeout> ms).
+ 'waitfor class=block topo=%s timeout=60000' % device_topological_path,
+ 'mount %s %s' % (device_topological_path, results_dir),
+ ] + test_cmds + [
+ 'umount %s' % results_dir,
+ 'dm poweroff',
+ ])
+ else:
+ runcmds.extend(test_cmds)
+ runcmds_bytes = []
+ for line in runcmds:
+ if isinstance(line, unicode):
+ runcmds_bytes.append(line.encode('utf-8'))
+ elif isinstance(line, str):
+ runcmds_bytes.append(line)
+ else: # pragma: no cover
+ assert False, 'line is not unicode or a str: %s, %s' % (line,
+ type(line))
+ self.m.file.write_text('write runcmds', output_path,
+ '\n'.join(runcmds_bytes))
+
+ def _isolate_build_artifacts(self,
+ isolate_tree,
+ build_artifacts,
+ shard=None,
+ test_bot_cpu='x64',
+ legacy_qemu=False):
+ """Populates a tree with build artifacts and isolates it.
+
+ Specifically, the following is linked into or created within the tree:
+ - The images in the build are linked in and manifest of them is created
+ in the root, if targeting a fuchsia device;
+ - The Linux/Mac tests in the shard and their runtime dependencies.
+
+ Args:
+ isolate_tree (api.file.SymlinkTree): A tree into which artifacts may be
+ linked.
+ build (FuchsiaBuildResults): The result of a fuchsia build.
+ shard (api.testsharder.Shard|None): A test shard.
+ test_bot_cpu (str|None): The host cpu of the bot running the test task.
+ legacy_qemu (bool): Whether to only isolate the images needed to run QEMU
+ alone.
+
+ Returns:
+ The isolated hash that may be used to reference and download the
+ artifacts.
+ """
+
+ def register_link(relpath):
+ """Prepares a symlink of a relative path within the build directory to the tree."""
+ isolate_tree.register_link(
+ target=build_artifacts.fuchsia_build_dir.join(relpath),
+ linkname=isolate_tree.root.join(relpath),
+ )
+
+ # TODO(IN-931): Remove `shard is None` condition once device and QEMU
+ # codepaths are passing shard and using _construct_test_task_request().
+ no_shard = shard is None
+ if no_shard or shard.targets_fuchsia:
+ image_list = build_artifacts.images.values()
+ # In the case of an emulated target, we restrict what we isolate to the
+ # bare essentials to avoid the needless downloading of several gigabytes
+ # of images on the other end.
+ is_emulated_target = (
+ (no_shard and legacy_qemu) or
+ (shard and self.m.emu.is_emulator_type(shard.device_type))
+ ) # yapf: disable
+ if is_emulated_target:
+ image_list = [
+ img for img in image_list
+ if img['name'] in ['qemu-kernel', 'zircon-a', 'storage-full']
+ ] # yapf: disable
+ image_manifest_path = isolate_tree.root.join(IMAGES_JSON)
+ self.m.file.write_json(
+ 'write image manifest', image_manifest_path, image_list, indent=2)
+ for image in image_list:
+ register_link(image['path'])
+
+ if shard:
+ for test in shard.tests:
+ if test.os in ['linux', 'mac']:
+ register_link(test.path)
+ for dep in shard.deps:
+ register_link(dep)
+
+ # If targeting QEMU we include a private key corresponding to an authorized
+ # key already in the boot image; this is needed as we do not pave QEMU.
+ if shard and self.m.emu.is_emulator_type(shard.device_type):
+ isolate_tree.register_link(
+ target=build_artifacts.private_key,
+ linkname=isolate_tree.root.join(
+ build_artifacts.DEFAULT_ISOLATED_LAYOUT.private_key,),
+ )
+
+ for tool in [
+ build_artifacts.botanist(test_bot_cpu),
+ build_artifacts.testrunner(test_bot_cpu),
+ build_artifacts.llvm_symbolizer,
+ build_artifacts.bootserver,
+ ]:
+ tool_name = self.m.path.basename(tool)
+ isolate_tree.register_link(
+ target=tool, linkname=isolate_tree.root.join(tool_name))
+
+ isolate_tree.create_links('create tree of build artifacts')
+ isolated = self.m.isolated.isolated(isolate_tree.root)
+ isolated.add_dir(isolate_tree.root)
+ return isolated.archive('isolate build artifacts')
+
+ def _create_test_list(self, shard):
+ test_locations = []
+ for test in shard.tests:
+ test_locations.append(test.path)
+ test_list_path = self.m.path['cleanup'].join('tests-%s' %
+ self._normalize(shard.name))
+ self.m.file.write_text(
+ name='write test list',
+ dest=test_list_path,
+ text_data='\n'.join(test_locations) + '\n',
+ )
+ return test_list_path
+
+ def _normalize(self, name):
+ return name.replace(' ', '_').replace('(', '').replace(')', '')
+
+ def _get_runcmds_path_per_shard(self, shard=None):
+ if not shard:
+ return RUNCMDS_BOOTFS_PATH
+ return '%s-%s' % (RUNCMDS_BOOTFS_PATH, self._normalize(shard.name))
+
+ def _uses_legacy_qemu(self, shard):
+ return (not self.m.experimental.ssh_into_qemu and
+ self.m.emu.is_emulator_type(shard.device_type))
+
+ def _install_runcmds_files(self,
+ build_artifacts,
+ test_in_shards=False,
+ per_test_timeout_secs=None,
+ device_type=None,
+ pave=False,
+ test_cmds=None,
+ in_place=False):
+ """Creates the files used to invoke runtests on boot.
+
+ This is only necessary for QEMU shards, which are the only shards that
+ use runcmds, and the non-sharding codepath.
+ """
+ self.m.zbi.zbi_path = build_artifacts.zbi
+
+ manifest = {}
+ zbi_name = 'zircon-a'
+ new_zbi_filename = None
+ new_zbi_path = None
+ if test_in_shards:
+ # if testing in shards, zbi file should be modified once for all shards in
+ # place before uploading through artifactory.
+ assert in_place
+ needs_key = False
+ for shard in build_artifacts.shards:
+ if self.m.emu.is_emulator_type(shard.device_type):
+ if self._uses_legacy_qemu(shard):
+ test_list_path = self._create_test_list(shard)
+ runtests_file_bootfs_path = 'infra/shard-%s.run' % self._normalize(
+ shard.name)
+ runcmds_path = self.m.path['cleanup'].join(
+ 'runcmds-%s' % self._normalize(shard.name))
+ runtests_cmd_parts = [
+ 'runtests', '-o', self.results_dir_on_target, '-f',
+ '/boot/%s' % runtests_file_bootfs_path
+ ]
+ if per_test_timeout_secs:
+ runtests_cmd_parts.extend(['-i', '%d' % per_test_timeout_secs])
+ self._create_runcmds_script(
+ device_type=shard.device_type,
+ test_cmds=[' '.join(runtests_cmd_parts)],
+ output_path=runcmds_path,
+ )
+ manifest[self._get_runcmds_path_per_shard(shard)] = runcmds_path
+ manifest[runtests_file_bootfs_path] = test_list_path
+ else:
+ needs_key = True
+ if needs_key:
+ manifest[AUTHORIZED_KEY_PATH] = build_artifacts.authorized_key
+
+ else:
+ assert device_type and test_cmds
+ if not in_place:
+ new_zbi_filename = 'test-infra.zbi'
+ new_zbi_path = build_artifacts.fuchsia_build_dir.join(new_zbi_filename)
+ if not self.m.emu.is_emulator_type(device_type):
+ zbi_name = next(
+ (image['name']
+ for image in build_artifacts.images.values()
+ if '--boot' in image.get(
+ 'bootserver_%s' % ('netboot' if not pave else 'pave'), [])),
+ None)
+ assert zbi_name, 'Could not find kernel image to boot.'
+ runcmds_path = self.m.path['cleanup'].join('runcmds')
+ self._create_runcmds_script(device_type, test_cmds, runcmds_path)
+ manifest[RUNCMDS_BOOTFS_PATH] = runcmds_path
+
+ # Inject the runcmds script and/or authorized key into the bootfs image.
+ if manifest and zbi_name in build_artifacts.images:
+ self.m.zbi.copy_and_extend(
+ step_name='create zbi',
+ input_image=build_artifacts.fuchsia_build_dir.join(
+ build_artifacts.images[zbi_name]['path']),
+ output_image=new_zbi_path or build_artifacts.fuchsia_build_dir.join(
+ build_artifacts.images[zbi_name]['path']),
+ manifest=manifest,
+ )
+ if new_zbi_filename:
+ build_artifacts.images[zbi_name]['path'] = new_zbi_filename
diff --git a/recipe_modules/testing_requests/examples/full.expected/aemu.json b/recipe_modules/testing_requests/examples/full.expected/aemu.json
new file mode 100644
index 0000000..a14df53
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/aemu.json
@@ -0,0 +1,286 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"AEMU\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"NAME\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
+ "@@@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": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "--entry",
+ "data/ssh/authorized_keys=[CLEANUP]/build-artifacts_tmp_1/authorized_key"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [],
+ "name": "shard NAME"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"TEST\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/tests.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write test manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@tests.json@[@@@",
+ "@@@STEP_LOG_LINE@tests.json@ {@@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
+ "@@@STEP_LOG_LINE@tests.json@ }@@@",
+ "@@@STEP_LOG_LINE@tests.json@]@@@",
+ "@@@STEP_LOG_END@tests.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"target\": \"x64\", \n \"kvm\": true, \n \"memory\": 8192, \n \"path\": \"./aemu/bin\", \n \"type\": \"aemu\", \n \"cpu\": 8\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/qemu.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write qemu config",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@qemu.json@[@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ {@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"kvm\": true, @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"memory\": 8192, @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"path\": \"./aemu/bin\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"type\": \"aemu\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"cpu\": 8@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ }@@@",
+ "@@@STEP_LOG_LINE@qemu.json@]@@@",
+ "@@@STEP_LOG_END@qemu.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"/path/to/dep\": [\"/path/to/dep\"], \"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/isolate_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.create tree of build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "shard NAME.isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/deprecated_non_emu.json b/recipe_modules/testing_requests/examples/full.expected/deprecated_non_emu.json
new file mode 100644
index 0000000..2562f8e
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/deprecated_non_emu.json
@@ -0,0 +1,229 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@json.output (invalid)@@@",
+ "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+ "@@@STEP_LOG_END@json.output (exception)@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "mkdir /tmp/infra-test-output\nruntests -o /tmp/infra-test-output ",
+ "[CLEANUP]/runcmds"
+ ],
+ "infra_step": true,
+ "name": "write runcmds",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output @@@",
+ "@@@STEP_LOG_END@runcmds@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/netboot.zbi",
+ "--entry",
+ "infra/runcmds=[CLEANUP]/runcmds"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"test-infra.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ], @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ }, @@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_2/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "create tree of build artifacts"
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/deprecated_with_secrets.json b/recipe_modules/testing_requests/examples/full.expected/deprecated_with_secrets.json
new file mode 100644
index 0000000..e723566
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/deprecated_with_secrets.json
@@ -0,0 +1,320 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_END@json.output (invalid)@@@",
+ "@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
+ "@@@STEP_LOG_END@json.output (exception)@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -i 1 \numount /tmp/infra-test-output\ndm poweroff",
+ "[CLEANUP]/runcmds"
+ ],
+ "infra_step": true,
+ "name": "write runcmds",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@runcmds@mkdir /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
+ "@@@STEP_LOG_LINE@runcmds@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds@runtests -o /tmp/infra-test-output -i 1 @@@",
+ "@@@STEP_LOG_LINE@runcmds@umount /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds@dm poweroff@@@",
+ "@@@STEP_LOG_END@runcmds@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "--entry",
+ "infra/runcmds=[CLEANUP]/runcmds"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [],
+ "name": "ensure cloudkms"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[START_DIR]/cipd/cloudkms",
+ "-ensure-file",
+ "infra/tools/luci/cloudkms/${platform} latest",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure cloudkms.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/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": [],
+ "name": "process secret specs"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
+ "[CLEANUP]/build-artifacts_tmp_1/secret_specs"
+ ],
+ "infra_step": true,
+ "name": "process secret specs.list",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[CLEANUP]/build-artifacts_tmp_1/secret_specs/auth-token.json@@@",
+ "@@@STEP_LOG_LINE@listdir@[CLEANUP]/build-artifacts_tmp_1/secret_specs/ciphertext@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/secret_specs/auth-token.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "process secret specs.read spec for auth-token",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"cloudkms_key_path\": \"key-path\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[START_DIR]/cipd/cloudkms/cloudkms",
+ "decrypt",
+ "-input",
+ "[CLEANUP]/build-artifacts_tmp_1/secret_specs/ciphertext/auth-token.ciphertext",
+ "-output",
+ "/path/to/tmp/",
+ "key-path"
+ ],
+ "name": "process secret specs.decrypt secret for auth-token",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/minfs",
+ "[CLEANUP]/isolate_tmp_2/output.fs@3584M",
+ "create"
+ ],
+ "name": "create test image"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"test-infra.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"test-infra.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/test-infra.zbi\": [\"[CLEANUP]/isolate_tmp_2/test-infra.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "create tree of build artifacts"
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/legacy_aemu.json b/recipe_modules/testing_requests/examples/full.expected/legacy_aemu.json
new file mode 100644
index 0000000..ff151ed
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/legacy_aemu.json
@@ -0,0 +1,285 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"AEMU\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"NAME\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
+ "@@@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_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "/path/to/test\n",
+ "[CLEANUP]/tests-NAME"
+ ],
+ "infra_step": true,
+ "name": "write test list",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@tests-NAME@/path/to/test@@@",
+ "@@@STEP_LOG_END@tests-NAME@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -f /boot/infra/shard-NAME.run\numount /tmp/infra-test-output\ndm poweroff",
+ "[CLEANUP]/runcmds-NAME"
+ ],
+ "infra_step": true,
+ "name": "write runcmds",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@runcmds-NAME@mkdir /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@runtests -o /tmp/infra-test-output -f /boot/infra/shard-NAME.run@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@umount /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@dm poweroff@@@",
+ "@@@STEP_LOG_END@runcmds-NAME@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "--entry",
+ "infra/runcmds-NAME=[CLEANUP]/runcmds-NAME",
+ "--entry",
+ "infra/shard-NAME.run=[CLEANUP]/tests-NAME"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [],
+ "name": "shard NAME"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/minfs",
+ "[CLEANUP]/isolate_tmp_2/output.fs@3584M",
+ "create"
+ ],
+ "name": "shard NAME.create test image",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.create tree of build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "shard NAME.isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/legacy_qemu.json b/recipe_modules/testing_requests/examples/full.expected/legacy_qemu.json
new file mode 100644
index 0000000..5d3a068
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/legacy_qemu.json
@@ -0,0 +1,287 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"release\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"asan\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"QEMU\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"NAME\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
+ "@@@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_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "/path/to/test\n",
+ "[CLEANUP]/tests-NAME"
+ ],
+ "infra_step": true,
+ "name": "write test list",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@tests-NAME@/path/to/test@@@",
+ "@@@STEP_LOG_END@tests-NAME@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "mkdir /tmp/infra-test-output\nwaitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000\nmount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output\nruntests -o /tmp/infra-test-output -f /boot/infra/shard-NAME.run -i 1\numount /tmp/infra-test-output\ndm poweroff",
+ "[CLEANUP]/runcmds-NAME"
+ ],
+ "infra_step": true,
+ "name": "write runcmds",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@runcmds-NAME@mkdir /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@waitfor class=block topo=/dev/sys/pci/00:06.0/virtio-block/block timeout=60000@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@mount /dev/sys/pci/00:06.0/virtio-block/block /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@runtests -o /tmp/infra-test-output -f /boot/infra/shard-NAME.run -i 1@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@umount /tmp/infra-test-output@@@",
+ "@@@STEP_LOG_LINE@runcmds-NAME@dm poweroff@@@",
+ "@@@STEP_LOG_END@runcmds-NAME@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "--entry",
+ "infra/runcmds-NAME=[CLEANUP]/runcmds-NAME",
+ "--entry",
+ "infra/shard-NAME.run=[CLEANUP]/tests-NAME"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [],
+ "name": "shard NAME"
+ },
+ {
+ "cmd": [
+ "[CLEANUP]/build-artifacts_tmp_1/minfs",
+ "[CLEANUP]/isolate_tmp_2/output.fs@3584M",
+ "create"
+ ],
+ "name": "shard NAME.create test image",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.create tree of build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "shard NAME.isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/not-emu.json b/recipe_modules/testing_requests/examples/full.expected/not-emu.json
new file mode 100644
index 0000000..420952c
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/not-emu.json
@@ -0,0 +1,257 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"DEVICE TYPE\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": true, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"service_account\": \"my-service-account@example.com\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"NAME\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
+ "@@@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": "shard NAME"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"TEST\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/tests.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write test manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@tests.json@[@@@",
+ "@@@STEP_LOG_LINE@tests.json@ {@@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
+ "@@@STEP_LOG_LINE@tests.json@ }@@@",
+ "@@@STEP_LOG_LINE@tests.json@]@@@",
+ "@@@STEP_LOG_END@tests.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"netboot.zbi\", \n \"bootserver_netboot\": [\n \"--boot\"\n ], \n \"type\": \"zbi\", \n \"name\": \"netboot\"\n }, \n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ], @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"netboot\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ }, @@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"/path/to/dep\": [\"/path/to/dep\"], \"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/netboot.zbi\": [\"[CLEANUP]/isolate_tmp_2/netboot.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.create tree of build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "shard NAME.isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.expected/qemu.json b/recipe_modules/testing_requests/examples/full.expected/qemu.json
new file mode 100644
index 0000000..7059288
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.expected/qemu.json
@@ -0,0 +1,286 @@
+[
+ {
+ "cmd": [],
+ "name": "download build artifacts"
+ },
+ {
+ "cmd": [],
+ "name": "download build artifacts.ensure isolated",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/isolated_client",
+ "-ensure-file",
+ "infra/tools/luci/isolated/${platform} git_revision:305e79001db1846906c7136d90a863bee5bd3bfc",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.ensure isolated.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:305\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/tools/luci/isolated/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]/isolated_client/isolated",
+ "download",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-isolated",
+ "abc",
+ "-output-dir",
+ "[CLEANUP]/build-artifacts_tmp_1"
+ ],
+ "infra_step": true,
+ "name": "download build artifacts.download build_artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/args.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read args.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"board\": \"boards/x64.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"build_type\": \"build_type\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"product\": \"products/core.gni\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"variants\": []@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/images.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.read images.json",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"netboot\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_netboot\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"netboot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"netboot.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"zircon-a\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"type\": \"zbi\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n",
+ "[CLEANUP]/build-artifacts_tmp_1/shards.json",
+ "/path/to/tmp/json"
+ ],
+ "name": "download build artifacts.load test shards",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@[@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"deps\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"/path/to/dep\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ ], @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"environment\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"dimensions\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"device_type\": \"QEMU\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ }, @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"NAME\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"tests\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"label\": \"//path/to/test:test(//toolchain)\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"path\": \"/path/to/test\"@@@",
+ "@@@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": [
+ "[CLEANUP]/build-artifacts_tmp_1/zbi",
+ "--output",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi",
+ "--entry",
+ "data/ssh/authorized_keys=[CLEANUP]/build-artifacts_tmp_1/authorized_key"
+ ],
+ "name": "create zbi"
+ },
+ {
+ "cmd": [],
+ "name": "shard NAME"
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"/path/to/test\", \n \"os\": \"linux\", \n \"name\": \"TEST\", \n \"install_path\": \"/path/to/test\", \n \"label\": \"//path/to/test:test(//toolchain)\"\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/tests.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write test manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@tests.json@[@@@",
+ "@@@STEP_LOG_LINE@tests.json@ {@@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"os\": \"linux\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"name\": \"TEST\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"install_path\": \"/path/to/test\", @@@",
+ "@@@STEP_LOG_LINE@tests.json@ \"label\": \"//path/to/test:test(//toolchain)\"@@@",
+ "@@@STEP_LOG_LINE@tests.json@ }@@@",
+ "@@@STEP_LOG_LINE@tests.json@]@@@",
+ "@@@STEP_LOG_END@tests.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"target\": \"x64\", \n \"kvm\": true, \n \"memory\": 8192, \n \"path\": \"./qemu/bin\", \n \"type\": \"qemu\", \n \"cpu\": 8\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/qemu.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write qemu config",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@qemu.json@[@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ {@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"target\": \"x64\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"kvm\": true, @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"memory\": 8192, @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"path\": \"./qemu/bin\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"type\": \"qemu\", @@@",
+ "@@@STEP_LOG_LINE@qemu.json@ \"cpu\": 8@@@",
+ "@@@STEP_LOG_LINE@qemu.json@ }@@@",
+ "@@@STEP_LOG_LINE@qemu.json@]@@@",
+ "@@@STEP_LOG_END@qemu.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[\n {\n \"path\": \"fuchsia.zbi\", \n \"type\": \"zbi\", \n \"name\": \"zircon-a\", \n \"bootserver_pave\": [\n \"--boot\", \n \"--zircona\"\n ]\n }\n]",
+ "[CLEANUP]/isolate_tmp_2/images.json"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.write image manifest",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@images.json@[@@@",
+ "@@@STEP_LOG_LINE@images.json@ {@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"path\": \"fuchsia.zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"type\": \"zbi\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"name\": \"zircon-a\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"bootserver_pave\": [@@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--boot\", @@@",
+ "@@@STEP_LOG_LINE@images.json@ \"--zircona\"@@@",
+ "@@@STEP_LOG_LINE@images.json@ ]@@@",
+ "@@@STEP_LOG_LINE@images.json@ }@@@",
+ "@@@STEP_LOG_LINE@images.json@]@@@",
+ "@@@STEP_LOG_END@images.json@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/symlink.py",
+ "--link-json",
+ "{\"/path/to/dep\": [\"/path/to/dep\"], \"/path/to/test\": [\"/path/to/test\"], \"[CLEANUP]/build-artifacts_tmp_1/bootserver\": [\"[CLEANUP]/isolate_tmp_2/bootserver\"], \"[CLEANUP]/build-artifacts_tmp_1/fuchsia.zbi\": [\"[CLEANUP]/isolate_tmp_2/fuchsia.zbi\"], \"[CLEANUP]/build-artifacts_tmp_1/llvm-symbolizer\": [\"[CLEANUP]/isolate_tmp_2/llvm-symbolizer\"], \"[CLEANUP]/build-artifacts_tmp_1/private_key\": [\"[CLEANUP]/isolate_tmp_2/private_key\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/botanist\": [\"[CLEANUP]/isolate_tmp_2/botanist\"], \"[CLEANUP]/build-artifacts_tmp_1/x64/testrunner\": [\"[CLEANUP]/isolate_tmp_2/testrunner\"]}"
+ ],
+ "infra_step": true,
+ "name": "shard NAME.create tree of build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "[CACHE]/isolated_client/isolated",
+ "archive",
+ "-verbose",
+ "-isolate-server",
+ "https://example.isolateserver.appspot.com",
+ "-namespace",
+ "default-gzip",
+ "-dump-hash",
+ "/path/to/tmp/",
+ "-dirs",
+ "[CLEANUP]/isolate_tmp_2:."
+ ],
+ "infra_step": true,
+ "name": "shard NAME.isolate build artifacts",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LINK@isolated UI@https://example.isolateserver.appspot.com/browse?namespace=default-gzip&hash=%5Bdummy+hash%5D@@@"
+ ]
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/testing_requests/examples/full.py b/recipe_modules/testing_requests/examples/full.py
new file mode 100644
index 0000000..a7741b8
--- /dev/null
+++ b/recipe_modules/testing_requests/examples/full.py
@@ -0,0 +1,182 @@
+# Copyright 2019 The Fuchsia 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 PB.infra.fuchsia import Fuchsia
+from recipe_engine.recipe_api import Property
+
+DEPS = [
+ 'fuchsia/artifacts',
+ 'fuchsia/build',
+ 'fuchsia/buildbucket_util',
+ 'fuchsia/checkout',
+ 'fuchsia/experimental',
+ 'fuchsia/fuchsia',
+ 'fuchsia/testing',
+ 'fuchsia/testing_requests',
+ 'fuchsia/testsharder',
+ 'recipe_engine/buildbucket',
+ 'recipe_engine/isolated',
+ 'recipe_engine/file',
+ 'recipe_engine/json',
+ 'recipe_engine/path',
+ 'recipe_engine/properties',
+ 'recipe_engine/raw_io',
+ 'recipe_engine/step',
+ 'recipe_engine/swarming',
+]
+
+PROPERTIES = {
+ 'build_artifact_hash':
+ Property(
+ kind=str,
+ help='Hash for which build artifact may be downloaded',
+ default='abc'),
+ 'device_type':
+ Property(
+ kind=str,
+ help='Passed through to spec field Fuchsia.Test.device_type',
+ default='QEMU'),
+ 'pave':
+ Property(
+ kind=bool,
+ help='Passed through to spec field Fuchsia.Test.pave',
+ default=True),
+ 'requires_secrets':
+ Property(
+ kind=bool,
+ help='Passed through to spec field Fuchsia.Test.requires_secrets',
+ default=True),
+ 'test_in_shards':
+ Property(
+ kind=bool,
+ help='Passed through to spec field Fuchsia.Test.test_in_shards',
+ default=False),
+ 'collect_timeout_secs':
+ Property(
+ kind=int,
+ help=('Passed through to spec field '
+ 'Fuchsia.Test.collect_timeout_secs'),
+ default=0),
+ 'deprecated':
+ Property(
+ kind=bool,
+ help='Whether to use the deprecated code path',
+ default=False),
+ 'per_test_timeout_secs':
+ Property(
+ kind=int,
+ help='Passed through to spec field Fuchsia.Test.per_test_timeout_secs',
+ default=0),
+ 'use_runtests':
+ Property(kind=bool, help='Whether to use runtests', default=False),
+}
+
+
+def RunSteps(api, build_artifact_hash, device_type, pave, requires_secrets,
+ test_in_shards, collect_timeout_secs, deprecated,
+ per_test_timeout_secs, use_runtests):
+ build_artifacts = api.build.BuildArtifacts.download(api, build_artifact_hash)
+
+ # Configure context of uploaded artifacts for test task construction.
+ api.artifacts.gcs_bucket = 'fuchsia-artifacts'
+ api.artifacts.uuid = api.buildbucket_util.id
+
+ test_spec = Fuchsia.Test(
+ device_type=device_type,
+ pave=pave,
+ pool='fuchsia.tests',
+ requires_secrets=requires_secrets,
+ test_in_shards=test_in_shards,
+ collect_timeout_secs=collect_timeout_secs,
+ per_test_timeout_secs=per_test_timeout_secs,
+ use_runtests=use_runtests,
+ )
+
+ if deprecated:
+ shard_requests = api.testing_requests.deprecated_shard_requests(
+ build_artifacts,
+ api.testing_requests.deprecated_test_cmds(test_spec),
+ test_spec.device_type,
+ test_spec.pool,
+ test_spec.timeout_secs,
+ test_spec.pave,
+ requires_secrets=test_spec.requires_secrets)
+ assert len(shard_requests) == 1
+ else:
+ _ = api.testing_requests.shard_requests(
+ build_artifacts, api.buildbucket.build, test_spec.per_test_timeout_secs,
+ test_spec.pool, test_spec.swarming_expiration_timeout_secs,
+ test_spec.swarming_io_timeout_secs, test_spec.use_runtests,
+ test_spec.timeout_secs)
+
+
+def GenTests(api):
+ # For coverage
+ api.testing_requests.task_requests_step_data(
+ [api.testing_requests.task_request_jsonish(False)], '')
+ api.testing_requests.default_tests()
+
+ testsharder_tests = [
+ api.testsharder.test(
+ name='TEST',
+ label='//path/to/test:test(//toolchain)',
+ os='linux',
+ path='/path/to/test',
+ deps=['/path/to/dep'],
+ )
+ ]
+
+ # Test cases for running Fuchsia tests as a swarming task.
+ yield (api.test('deprecated_with_secrets') + api.properties(
+ deprecated=True, requires_secrets=True, per_test_timeout_secs=1) +
+ api.testing_requests.secrets_step_data())
+
+ yield api.test('deprecated_non_emu') + api.properties(
+ deprecated=True, pave=False, device_type='DEVICE TYPE')
+
+ yield api.test('not-emu') + api.testing_requests.shards_step_data(shards=[
+ api.testsharder.shard(
+ name='NAME',
+ tests=testsharder_tests,
+ dimensions={'device_type': 'DEVICE TYPE'},
+ netboot=True,
+ service_account='my-service-account@example.com',
+ )
+ ]) + api.properties(
+ use_runtests=True, per_test_timeout_secs=1)
+
+ yield api.test('legacy_qemu') + api.testing_requests.shards_step_data(shards=[
+ api.testsharder.shard(
+ name='NAME',
+ tests=testsharder_tests,
+ dimensions={'device_type': 'QEMU'},
+ )
+ ]) + api.properties(**{
+ 'experimental.ssh_into_qemu': False,
+ 'per_test_timeout_secs': 1
+ }) + api.testing_requests.args_test_data(variants=['asan'])
+
+ yield api.test('legacy_aemu') + api.testing_requests.shards_step_data(shards=[
+ api.testsharder.shard(
+ name='NAME',
+ tests=testsharder_tests,
+ dimensions={'device_type': 'AEMU'},
+ )
+ ]) + api.properties(**{'experimental.ssh_into_qemu': False})
+
+ yield api.test('qemu') + api.testing_requests.shards_step_data(shards=[
+ api.testsharder.shard(
+ name='NAME',
+ tests=testsharder_tests,
+ dimensions={'device_type': 'QEMU'},
+ )
+ ]) + api.properties(per_test_timeout_secs=1)
+
+ yield api.test('aemu') + api.testing_requests.shards_step_data(shards=[
+ api.testsharder.shard(
+ name='NAME',
+ tests=testsharder_tests,
+ dimensions={'device_type': 'AEMU'},
+ )
+ ])
diff --git a/recipe_modules/testing_requests/test_api.py b/recipe_modules/testing_requests/test_api.py
new file mode 100644
index 0000000..bfb13df
--- /dev/null
+++ b/recipe_modules/testing_requests/test_api.py
@@ -0,0 +1,114 @@
+# Copyright 2019 The Fuchsia 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_test_api
+
+
+class FuchsiaTestingRequestsTestApi(recipe_test_api.RecipeTestApi):
+
+ EXAMPLE_TESTS_JSON = [
+ {
+ 'test': {
+ 'name': 'hello',
+ 'label': '//a/b/c:hello_test(//toolchain)',
+ 'os': 'fuchsia',
+ 'path': '/path/to/hello',
+ 'package_url': 'fuchsia-pkg://fuchsia.com/hello',
+ }
+ },
+ {
+ 'test': {
+ 'name': 'goodbye',
+ 'label': '//a/b/c:goodbye_test(//toolchain)',
+ 'os': 'fuchsia',
+ 'path': '/path/to/goodbye',
+ 'package_url': 'fuchsia-pkg://fuchsia.com/goodbye',
+ }
+ },
+ ]
+
+ def default_tests(self):
+ """Returns mock step data for the output of testsharder.
+
+ Returns:
+ list(testsharder.Test)
+ """
+ return [
+ self.m.testsharder.test(**t['test']) for t in self.EXAMPLE_TESTS_JSON
+ ]
+
+ def task_request_jsonish(self, legacy_qemu):
+ ret = self.m.swarming.example_task_request_jsonish()
+ ret['tags'] = ['uses_legacy_qemu:%s' % str(legacy_qemu).lower()]
+ return ret
+
+ def task_requests_step_data(self, task_requests, step_name):
+ """Returns mock step data for swarming task requests.
+
+ This should be used by any test which calls api.testing_requests.shard_requests() and expects
+ to shard tests.
+
+ Args:
+ shards (seq[dict]): A set of example shards which should
+ be used as step data for the result of invoking the testsharder.
+ step_name (str): name to use for step data
+
+ Returns:
+ RecipeTestApi.step_data for the extract_results step.
+ """
+ return self.step_data(step_name, self.m.json.output(task_requests))
+
+ def shards_step_data(self,
+ shards,
+ step_name='download build artifacts.load test shards'):
+ """Returns mock step data for test shards.
+
+ This should be used by any test which calls api.fuchsia.test*() and expects
+ to shard tests.
+
+ Args:
+ shards (seq[api.testsharder.Shard]): A set of example shards which should
+ be used as step data for the result of invoking the testsharder.
+ step_name (str): name to use for step data
+
+ Returns:
+ RecipeTestApi.step_data for the extract_results step.
+ """
+ return self.m.testsharder.execute(step_name=step_name, shards=shards)
+
+ def secrets_step_data(self):
+ """Returns mock step data for the secrets pipeline.
+
+ This should be used by any test which calls api.fuchsia.test() with
+ requires_secrets is set to True.
+
+ Returns:
+ list(RecipeTestApi.step_data) for the steps around secrets decryption.
+ """
+ secret_name = 'auth-token'
+ step_data = self.step_data(
+ 'process secret specs.list',
+ self.m.file.listdir([
+ '%s.json' % secret_name,
+ 'ciphertext' # the 'ciphertext' subdir, which will be skipped.
+ ]))
+ step_data += self.step_data(
+ 'process secret specs.read spec for %s' % secret_name,
+ self.m.json.output({
+ 'cloudkms_key_path': 'key-path',
+ }))
+ step_data += self.step_data(
+ 'process secret specs.decrypt secret for %s' % secret_name,
+ self.m.raw_io.output_text('plaintext'))
+ return step_data
+
+ def args_test_data(self, target='x64', variants=None):
+ args = self.m.json.output({
+ 'board': 'boards/x64.gni',
+ 'build_type': 'release',
+ 'product': 'products/core.gni',
+ 'target': target,
+ 'variants': variants if variants else [],
+ })
+ return self.step_data('download build artifacts.read args.json', args)
diff --git a/recipes/fuchsia.py b/recipes/fuchsia.py
index 7c6cb94..158a3a0 100644
--- a/recipes/fuchsia.py
+++ b/recipes/fuchsia.py
@@ -35,6 +35,7 @@
'fuchsia/tar',
'fuchsia/testsharder',
'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/spec',
'recipe_engine/buildbucket',
'recipe_engine/cipd',
@@ -253,7 +254,7 @@
orchestration_inputs = None
if spec.build.run_tests:
if spec.test.test_in_shards:
- shard_requests = api.testing.shard_requests(
+ shard_requests = api.testing_requests.shard_requests(
build_artifacts,
bb_build,
spec.test.per_test_timeout_secs,
@@ -263,9 +264,9 @@
spec.test.use_runtests,
timeout_secs=spec.test.timeout_secs)
else:
- shard_requests = api.testing.deprecated_shard_requests(
+ shard_requests = api.testing_requests.deprecated_shard_requests(
build_artifacts,
- api.testing.deprecated_test_cmds(spec),
+ api.testing_requests.deprecated_test_cmds(spec.test),
spec.test.device_type,
spec.test.pool,
spec.test.timeout_secs,
@@ -413,12 +414,12 @@
),
],
iteration=0) +
- api.testing.shards_step_data(
+ api.testing_requests.shards_step_data(
step_name='create test shards',
shards=[
api.testsharder.shard(
name='QEMU',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
]) +
diff --git a/recipes/fuchsia/build.py b/recipes/fuchsia/build.py
index 52b5758..246bf1f 100644
--- a/recipes/fuchsia/build.py
+++ b/recipes/fuchsia/build.py
@@ -26,7 +26,7 @@
'fuchsia/jiri',
'fuchsia/jsonutil',
'fuchsia/spec',
- 'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'fuchsia/upload_debug_symbols',
'recipe_engine/buildbucket',
@@ -249,7 +249,7 @@
build_artifacts = build.get_artifacts(shards)
if spec.test.test_in_shards:
- shard_requests = api.testing.shard_requests(
+ shard_requests = api.testing_requests.shard_requests(
build_artifacts,
buildbucket_build,
spec.test.per_test_timeout_secs,
@@ -259,9 +259,9 @@
spec.test.use_runtests,
timeout_secs=spec.test.timeout_secs)
else:
- shard_requests = api.testing.deprecated_shard_requests(
+ shard_requests = api.testing_requests.deprecated_shard_requests(
build_artifacts,
- api.testing.deprecated_test_cmds(spec),
+ api.testing_requests.deprecated_test_cmds(spec.test),
spec.test.device_type,
spec.test.pool,
spec.test.timeout_secs,
diff --git a/recipes/fuchsia/fuchsia.py b/recipes/fuchsia/fuchsia.py
index 82b537e..31b7243 100644
--- a/recipes/fuchsia/fuchsia.py
+++ b/recipes/fuchsia/fuchsia.py
@@ -48,6 +48,7 @@
'fuchsia/gitiles',
'fuchsia/spec',
'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'recipe_engine/buildbucket',
'recipe_engine/file',
@@ -352,12 +353,12 @@
def download_step_data():
task_request_jsonish = api.testing.task_request_jsonish(legacy_qemu=True)
- return api.testing.shards_step_data(
+ return api.testing_requests.shards_step_data(
step_name='build.download test orchestration inputs.load test shards',
shards=[
api.testsharder.shard(
name='QEMU',
- tests=api.testing.default_tests(),
+ tests=api.testing_requests.default_tests(),
dimensions=dict(device_type='QEMU'),
),
]) + api.testing.task_requests_step_data(
diff --git a/recipes/fuchsia_perf.py b/recipes/fuchsia_perf.py
index 047b06f..b550b4b 100644
--- a/recipes/fuchsia_perf.py
+++ b/recipes/fuchsia_perf.py
@@ -24,6 +24,7 @@
'fuchsia/fuchsia',
'fuchsia/minfs',
'fuchsia/testing',
+ 'fuchsia/testing_requests',
'fuchsia/testsharder',
'fuchsia/upload',
'recipe_engine/buildbucket',
@@ -162,7 +163,7 @@
# yapf: disable
test_cmds = [
' '.join(['/pkgfs/packages/%s/0/bin/benchmarks.sh' % benchmarks_package,
- api.testing.results_dir_on_target,
+ api.testing_requests.results_dir_on_target,
'--catapult-converter-args',
'--bots', dashboard_bots_name,
'--masters', dashboard_masters_name,
@@ -189,7 +190,7 @@
build.upload_debug_symbols(debug_symbol_gcs_bucket=debug_symbol_gcs_bucket)
- shard_requests = api.testing.deprecated_shard_requests(
+ shard_requests = api.testing_requests.deprecated_shard_requests(
build_artifacts, test_cmds, device_type, test_pool, test_timeout_secs,
pave)
diff --git a/recipes/fuchsia_perfcompare.py b/recipes/fuchsia_perfcompare.py
index 5655e77..11a0434 100644
--- a/recipes/fuchsia_perfcompare.py
+++ b/recipes/fuchsia_perfcompare.py
@@ -22,6 +22,7 @@
'fuchsia/checkout',
'fuchsia/fuchsia',
'fuchsia/testing',
+ 'fuchsia/testing_requests',
'recipe_engine/buildbucket',
'recipe_engine/context',
'recipe_engine/file',
@@ -145,7 +146,7 @@
test_cmds = [
' '.join([
'/pkgfs/packages/fuchsia_benchmarks/0/bin/benchmarks_perfcompare.sh',
- api.testing.results_dir_on_target
+ api.testing_requests.results_dir_on_target
])
]
@@ -181,7 +182,7 @@
api.step('binary size data', ['cat', snapshot_file])
build_artifacts = build.get_artifacts()
- shard_requests = api.testing.deprecated_shard_requests(
+ shard_requests = api.testing_requests.deprecated_shard_requests(
build_artifacts, test_cmds, device_type, test_pool, test_timeout_secs,
pave)
orchestration_inputs = api.build.TestOrchestrationInputs(