# Validator Architecture

Validator applies automated interactive tests to a stateful library such as
Inspect or file systems - an interactive golden file framework.

The Validator architecture includes:

* A set of tests to validate functionality.
* A FIDL protocol to invoke operations to be tested.
* One or more puppet programs which receive FIDL commands and invoke library
calls.
* A reference implementation or simulation of the desired behavior.
* Analysis of puppet results, comparison to local results, and reporting.

## Inspect Validator

The Inspect Validator implementation includes:

* [Core Validator program](/src/diagnostics/validator/inspect/src)
    * [Tests](/src/diagnostics/validator/inspect/src/trials.rs)
    * [FIDL](/src/diagnostics/validator/inspect/fidl/validate.test.fidl)
    * [Reading the puppet's output](/src/diagnostics/validator/inspect/src/data/scanner.rs)
    * [Reference Behavior and comparison](/src/diagnostics/validator/inspect/src/data.rs)
    * [Analysis](/src/diagnostics/validator/inspect/src/runner.rs)
    and [more analysis](/src/diagnostics/validator/inspect/src/metrics.rs)
    * [Reporting](/src/diagnostics/validator/inspect/src/results.rs)
* [Rust Puppet](/src/diagnostics/validator/inspect/lib/rust/src/main.rs).
See also [Inspect Validator Puppet Architecture](puppet.md)
* [Dart Puppet](https://fuchsia.googlesource.com/topaz/+/HEAD/public/dart/fuchsia_inspect/test/validator_puppet/lib/main.dart)
