blob: 36ffc8e7788fdc0000a51e58b87d8c1164924bb6 [file] [log] [blame]
// 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;
};