[roll] Roll fuchsia [perf,tracing] Improved py MetricsProcessor classes + tests

1. MetricsProcessor Callable, MetricsSpec + args dict, and MetricsSpecSet
   are refactored into a single MetricsProcessor abstract class with
   the follow subclasses:
   * ConstantMetricsProcessor
   * MetricsProcessorSet (chains other processors)
   * CpuMetricsProcessor
   * FpsMetricsProcessor
   * ScenicMetricsProcessor
   This improves type readability, type safety and statefulness.
2. MetricsProcessor tests are streamlined to make it very
   easy to add more processor tests and debug output.
3. Common code for Cpu and Fps processors factored into metrics_util.
4. PowerMetricsProcessor is also a MetricsProcessor now, and
   can be obtained from a PowerSampler.

Processors can be chained as used as follows:

```
power_sampler = PowerSampler(...)

processor = MetricsProcessorSet([
  CpuMetricsProcessor(aggregates_only=True),
  FpsMetricsProcessor(aggregates_only=False),
  MyCustomProcessor(...),
  power_sampler.metrics_processor(),
])

... gather traces, start and stop the power sampler, create the model ...

processor.process_and_save(model, test_suite="my_test", output_path="my_test.fuchsiaperf.json")
```

A followup CL migrates tests to use the new APIs.

Original-Bug: b/320778225

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/984581
Original-Revision: a311caf37977c60f40834f77cd8d99d33b65c64e
GitOrigin-RevId: c900349f890638da89fc548adc2f67a7f5a2a21e
Change-Id: I6bf05452e201d4c3e65cc9147cdd5055f66cd147
1 file changed
tree: 1166e6bff28d093f6d9080e9cc099ff8bf9acfb3
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.