blob: 868a99377f91216dcd2d86157f060e2939b9bb4d [file] [view] [edit]
# Diagnostics Tool
Reviewed on: 2020-04-15
The Diagnostics Tool is a utility for interacting with diagnostics data
on a Fuchsia system.
The Diagnostics Platform exposes filtered views of all diagnostics
data on a system, subject to the constraints in selector files. This
tool currently provides an interactive terminal UI to aid writing the
selector configuration.
## Building
To add this project to your build, append `--with //src/diagnostics/tool:diag_tool_host`
to the `fx set` invocation.
For example:
```
fx set core.chromebook-x64 --with //src/diagnostics/tool:diag_tool_host
```
After building the tool binary, you will be able to execute it from
your Fuchsia project root directory at:
`./out/default/host-tools/diag_tool`.
## Running
### Prerequisites
In order to run this tool, you will first require a json dump of Inspect data.
You can obtain the initial dump through fx bugreport.
While connected to a running Fuchsia device, run the following commands:
```
fx bugreport -o <path/to/bugreport/dump>
unzip <path/to/bugreport/dump>/bugreport.zip -d <path/to/bugreport/dump/contents>
```
Now, under `<path/to/bugreport/dump/contents>`, you will have a file named
`inspect.json` which contains a json serialization of all inspect data
on the system.
### Generating Selectors
*NOTE: This section assumes a json file at `<path/to/bugreport/dump/contents>/inspect.json`
exists which includes the json serialized inspect hierarchy for the reader's component.*
The diagnostics tool helps clients define their selector configuration
files by auto-generating a base-file explicitly including all diagnostics
data the client exposes.
Running the following command will produce a large file of all
explicit selector strings for every diagnostics property found in
`<component_name>.cmx`'s hierarchy within the provided inspect.json
file. This large list acts as the starting point for your integration.
```
./out/default/host-tools/diag_tool -b <path/to/bugreport/dump/contents>/inspect.json generate -c <component_name>.cmx <selectors.cfg>
```
The output file is `<selectors.cfg>`, which will be used in the next section.
### Interactively Applying Selectors
Once you have your initial file of explicit selectors from the Generating
Selectors section above, it's time to interactively start refining
the list. In one terminal pane, open the selector file in your prefered
editor. In a second pane, run the following command:
```
./out/default/host-tools/diag_tool -b <path/to/bugreport/dump/contents>/inspect.json apply -c <component_name>.cmx <selectors.cfg>
```
In the pane where the above command was run, an interactive session
will open which shows the `<component_name>.cmx` hierarchy as filtered
by the selectors in `<selectors.cfg>`. By default, the hierarchy should
be fully present, and missing data will appear as RED text in the window.
This interactive session has 3 important keys:
* (Q) will exist the interactive session.
* (H) will collapse all RED, missing data and only display the explicit
hierarchy being selected for by your configuration file.
* (R) will refresh your interactive session. You may edit `<selectors.cfg>`
in a seprarate window and press R to apply the edited selectors to
the session.
## Testing
To run unit tests:
```
fx set ... --with //src/diagnostics/tool:diag_tool_tests
fx run-test inspect_validator_tests
```