| // Copyright 2022 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. |
| |
| library fuchsia.test.debug; |
| |
| using fuchsia.io; |
| using zx; |
| |
| /// A test-manager internal protocol used for communicating between the debug data |
| /// component, which implements `fuchsia.debugdata.Publisher`, and the component that |
| /// actually processes the VMOs passed to `fuchsia.debugdata.Publisher`. |
| /// In the future, this protocol may be moved to the SDK, to enable "pluggable" VMO |
| /// processing, or removed entirely if VMO processing is moved to the host. |
| @discoverable |
| protocol DebugDataProcessor { |
| /// Set the directory to store results in. This must be called first. |
| /// Note that we currently provide a directory as coverage tools pull profile |
| /// information off the device using a specific, topology dependent location |
| /// in the /tmp filesystem. Once these tools are updated, we can update this |
| /// protocol free of this constraint. |
| SetDirectory(resource struct { |
| directory client_end:fuchsia.io.Directory; |
| }); |
| |
| /// Add more VMOs to process. The VMOs are expected to be ready to process. |
| AddDebugVmos(resource struct { |
| vmos vector<DebugVmo>:MAX; |
| }) -> (); |
| |
| /// Indicates all VMOs have been sent. This method returns when all processing |
| /// is complete, after which the client may observe the results in the directory |
| /// passed via NewProcessor. |
| Finish() -> (); |
| }; |
| |
| /// Container for a single VMO that is ready to be processed. |
| type DebugVmo = resource struct { |
| vmo zx.handle:VMO; |
| data_sink string:1024; |
| test_url string:1024; |
| }; |