blob: 52f2e7cdd805648311d6ccb308c9b9595c4231f5 [file] [log] [blame]
// Copyright 2018 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.device.test;
using zx;
/// The path which can be used to open the control device
const string CONTROL_DEVICE = "/dev/test/test";
/// Returns the result summary of a test run
struct TestReport {
/// Total number of tests
uint32 test_count;
/// Number of successful tests
uint32 success_count;
/// Number of failed tests
uint32 failure_count;
};
[Layout = "Simple", FragileBase]
protocol Test {
/// Execute the tests for this device. Returns the status from the test. If
/// used as part of the Device protocol then Test output will be streamed to
/// the socket set by SetOutputSocket().
RunTests() -> (zx.status status, TestReport report);
};
/// Interface for controlling a device created via RootDevice.CreateDevice
[Layout = "Simple"]
protocol Device {
compose Test;
/// Set a socket to stream test output to.
SetOutputSocket(handle<socket> sock);
/// Set a channel for the test to use in a test-specific manner.
SetChannel(handle<channel> chan);
/// Unload this device.
Destroy();
};
/// Maximum device name len. This value must match `ZX_DEVICE_NAME_MAX`.
const uint32 MAX_DEVICE_NAME_LEN = 31;
/// Maximum device path len
const uint32 MAX_DEVICE_PATH_LEN = 1024;
/// Interface for creating devices within a devhost.
[Layout = "Simple"]
protocol RootDevice {
/// Create a device with the given `name` that is a child of this device.
/// If `name` contains a trailing ".so", it will be removed.
///
/// On success, `path` will be the filesystem path of the new device.
CreateDevice(string:MAX_DEVICE_NAME_LEN name)
-> (zx.status status, string:MAX_DEVICE_PATH_LEN? path);
};