This document describes the directory format used to collect and store results
and outputs for tests run on Fuchsia. It is currently output by
ffx test run when the --output-directory
option is specified.
Background
A single execution of ffx test
produces a test run. A test run is
comprised of any number of suite runs, and each suite run is comprised of
any number of test cases.
A suite run is an execution of a test component. The test component is most
commonly identified by its URL, for example,
fuchsia-pkg://fuchsia.com/run_test_suite_integration_tests#meta/passing-test-example.cm
.
A test case is an execution of a single test case contained in a suite.
In addition, test runs, suites, or test cases may produce artifacts. These include outputs from the test such as stdout, stderr, and syslog. Artifacts may be either a file or a directory.
Overview
Test output is stored as a directory. The directory contains the results for a
single test run and any suite runs and test cases it contains. The root of the
directory contains a single JSON file called run_summary.json
and any number
of subdirectories. Each subdirectory contains artifacts for either the test
run, or a single suite run or test case.
Directory layout
The JSON file is always called run_summary.json
and is always located in the
root level of the directory. run_summary.json
contains the complete set of
results for the overall test run, suite runs within the test run, and test
cases within each suite run. It also contains the name of each artifact
subdirectory and a list of artifacts within it. Artifacts are always located in
the top level of an artifact subdirectory.
The names of subdirectories and artifacts within the subdirectories are not
specified as part of the schema. Instead, the actual names of subdirectories
and artifacts are listed in run_summary.json
.
run_summary.json
contents
The exact schema for run_summary.json
is published on
fuchsia.dev. In Fuchsia source, it is available under
the //sdk/schema directory.
Artifacts
Artifacts may consist of either a single file or a directory. The following artifacts exist today and are known to the scheme.
Type | Description |
---|---|
SYSLOG | Syslog collected from all components running in a test suite. |
RESTRICTED_LOG | Any high severity logs that caused a test to be failed. |
STDOUT | stdout collected from a single component in a test. |
STDERR | stderr collected from a single component in a test. |
REPORT | A copy of the stdout output produced by ffx test. |
CUSTOM | A set of arbitrary files produced by a component in a test. |
Parsing
Tools that need to process test results should begin by parsing
run_summary.json
, as it is the only part of the output directory with a
location defined in the schema. The remaining contents of the directory are
described by run_summary.json
. Tools should not assume any particular naming
convention for artifacts or subdirectories in the output.
Example
This example output was generated by running ffx test
against an
example test.
$ ffx test run --output-directory /tmp/ffx-out fuchsia-pkg://fuchsia.com/stdout-test#meta/stdout-test.cm
The contents of the /tmp/ffx-out
directory generated by ffx test
is
available in examples/testing.
Related documents
RFC-0163: RFC proposing this output.