| # Copyright 2023 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| |
| from fuchsia_base_test import fuchsia_base_test |
| from honeydew.interfaces.device_classes import fuchsia_device |
| from mobly import asserts, test_runner |
| from trace_processing import trace_importing, trace_utils, trace_model |
| |
| |
| class PerfTestTraceEventsTest(fuchsia_base_test.FuchsiaBaseTest): |
| def setup_test(self) -> None: |
| super().setup_test() |
| self.device: fuchsia_device.FuchsiaDevice = self.fuchsia_devices[0] |
| |
| def test_perftest_library_trace_events(self) -> None: |
| with self.device.tracing.trace_session( |
| categories=[ |
| "kernel", |
| "perftest", |
| ], |
| buffer_size=36, |
| download=True, |
| directory=self.log_path, |
| trace_file="trace.fxt", |
| ): |
| self.device.ffx.run_test_component( |
| "fuchsia-pkg://fuchsia.com/fuchsia_microbenchmarks#meta/fuchsia_microbenchmarks.cm", |
| test_component_args=[ |
| "-p", |
| "--quiet", |
| "--runs", |
| "4", |
| "--enable-tracing", |
| "--filter=^Null$", |
| ], |
| timeout=None, |
| capture_output=False, |
| ) |
| |
| json_trace_file: str = trace_importing.convert_trace_file_to_json( |
| os.path.join(self.log_path, "trace.fxt") |
| ) |
| model: trace_model.Model = trace_importing.create_model_from_file_path( |
| json_trace_file |
| ) |
| event_names = [ |
| event.name |
| for event in trace_utils.filter_events( |
| model.all_events(), category="perftest" |
| ) |
| ] |
| asserts.assert_equal( |
| event_names, |
| [ |
| "test_group", |
| "test_setup", |
| "test_run", |
| "test_run", |
| "test_run", |
| "test_run", |
| "test_teardown", |
| ], |
| ) |