| // Copyright 2019 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.cobalt.test; |
| |
| using fuchsia.cobalt as cobalt; |
| |
| /// Maximum number of events returned by a query. |
| const uint16 MAX_QUERY_LENGTH = 64; |
| |
| /// This is currently not exhaustive. |
| enum LogMethod { |
| LOG_EVENT = 1; |
| LOG_EVENT_COUNT = 2; |
| LOG_ELAPSED_TIME = 3; |
| LOG_FRAME_RATE = 4; |
| LOG_MEMORY_USAGE = 5; |
| LOG_INT_HISTOGRAM = 7; |
| LOG_COBALT_EVENT = 8; |
| LOG_COBALT_EVENTS = 9; |
| }; |
| |
| enum QueryError { |
| /// The logger required to complete the current query could not be found. |
| LOGGER_NOT_FOUND = 0; |
| }; |
| |
| /// LoggerQuerier provides a way to query mock cobalt services to check that |
| /// clients of cobalt are logging events as expected. |
| [Discoverable] |
| protocol LoggerQuerier { |
| /// Returns the _first_ N events that were logged for the logger with the |
| /// given `project_id` and a `more` flag indicating whether there were |
| /// more than N events logged. There is no way to retrieve events logged |
| /// after the first N events. |
| /// |
| /// Will hang until at least one cobalt metric is recorded for the given |
| /// `project_id` and `method`. |
| /// |
| /// Repeated calls to WatchLogs for a given LogMethod will block until new |
| /// events are logged with that method, enabling tests to synchronize |
| /// without sleeps or timeouts. |
| [Transitional] |
| WatchLogs2(uint32 project_id, LogMethod method) -> (vector<cobalt.CobaltEvent>:MAX_QUERY_LENGTH events, bool more); |
| |
| /// Returns the _first_ N events that were logged for the logger with the |
| /// given `project_id` and a `more` flag indicating whether there were |
| /// more than N events logged. There is no way to retrieve events logged |
| /// after the first N events. |
| /// |
| /// Returns an error if a Logger for the given `project_id` has not been |
| /// created through a request to the LoggerFactory protocol. |
| /// |
| /// Repeated calls to WatchLogs for a given LogMethod will block until new |
| /// events are logged with that method, enabling tests to synchronize |
| /// without sleeps or timeouts. |
| [Deprecated = "use WatchLogs2"] |
| WatchLogs(uint32 project_id, LogMethod method) -> (vector<cobalt.CobaltEvent>:MAX_QUERY_LENGTH events, bool more) error QueryError; |
| |
| /// Clear all logged events by logging `method` for the logger with the |
| /// given `project_id`. |
| /// |
| /// This is a no-op if a logger for the given `project_id` does not exist. |
| /// Notably, it does _not_ create a new logger with `project_id` if one |
| /// does not already exist. |
| ResetLogger(uint32 project_id, LogMethod method); |
| }; |