tree: 5000ca67921d279a6f8968f329c869e8e4e95a12 [path history] [tgz]
  1. BUILD.gn
  2. README.md
  3. build/
  4. config.md
  5. src/
  6. test_data/
src/diagnostics/triage/README.md

Triage (fx triage)

Reviewed on: 2019-12-08

Triage analyzes bugreports for out-of-range values. The analysis is specified by configuration files.

Building

To add this project to your build, append --with //src/diagnostics/triage in the fx set invocation.

For example:

fx set core.chromebook-x64 --with '//topaz/bundles:buildbot' --with //src/diagnostics/triage

Running

To fetch and analyze a fresh bugreport from the default device:

fx triage

To analyze an existing bugreport:

fx triage --inspect /path/to/bugreport.zip

To specify config files to use:

fx triage --config path/file1 --config path/file2 --config "path/with/globs/*.triage"

Note that the triage command, not the OS, must expand the globs, so put the path in quotes.

TODO(cphoenix): Should these paths be relative to tree-root, or CWD?

Config file format is described in Configuring ‘fx triage’. It includes:

  • Selector metrics which specify the data to extract from the inspect.json produced by bugreport.zip
  • Eval metrics which specify calculations
  • Actions to take if a condition is true (currently, only “print a warning”)
  • Tests to ensure your actions trigger (or not) appropriately with sample data you supply.

Testing

Use --with //src/diagnostics/triage:tests for all tests.

Unit tests for the Rust code are linked into CQ/CI. There are also a series of integration tests which live in the integration.rs file which are run in CQ/CI as well. To run them manually:

fx test triage_lib_tests

Source layout

  • //tools/devshell/contrib/triage - A bash script which implements the entry point to the “fx triage” command.
    • By default, it invokes //src/diagnostics/triage/src/main.rs to analyze a bugreport.
    • With the --test argument, it dispatches an integration test by invoking //src/diagnostics/triage/ test/src/main.rs.
  • //src/diagnostics/triage/src/
    • main.rs - Entry point of the main “triage” program. It reads command line arguments, loads the config files and inspect.json file that they specify, and then processes the actions and self-tests specified in the config files.
    • metrics.rs - Data structures and calculation engine for metrics.
      • metrics/fetch.rs - Business logic to read values from the inspect.json file.
    • act.rs - Data structures and business logic to store and carry out actions.
    • validate.rs - The data structures and business logic to store and evaluate the self-tests specified in the config files.
    • config.rs - Loads configuration information from *.triage files.
      • config/parse.rs - A nom-based parser for Eval metrics.
  • //src/diagnostics/triage/test_data/ - Data which is used in integration testing.
  • //src/diagnostics/triage/build
    • triage_config_test.gni defines a gn target to run config tests in CQ.
    • triage_config_test_runner defines a binary which executes the tests for the triage_config_test.gni target.