// Should be kept in sync with internal version. syntax = "proto2"; package log_collector; import public "tools/tradefederation/core/proto/file_metadata.proto"; option java_package = "com.android.test.metrics.proto"; option java_outer_classname = "LogCollectorProto"; // Conditions that can trigger log collection. enum Trigger { // Never run this collector. NEVER = 0; // Run this collector at the start of a test. TEST_START = 1; // Run this collector when the test finishes. TEST_FINISH = 2; // Run this collector when the test fails. FAILURE = 3; // Run this collector when the test crashes. CRASH = 4; // Run this collector when the test has a tool failure. TOOL_FAILURE = 5; // Run this collector at the given interval. INTERVAL = 6; } message TestPattern { // Run this collector for the given build targets. If no build targets are // specified, we will run the collector on all build targets. repeated string build_target = 1; // Run this collector for tests with the given prefix. If no prefices are // specified, we will run the collector for all tests. repeated string atp_test_prefix = 2; // Run this collector for tests on the given test bench. If no test bench is // specified, we will run the collector for all test benches. repeated string atp_test_bench = 3; } message FormattedFileName { enum FormatParam { EMPTY = 0; TIMESTAMP_EPOCH_MILLIS = 1; TEST_NAME = 2; TEST_CLASS = 3; } // A java-style format string, e.g. "logcat-%s.log" or "bugreport-%d.log". // TIMESTAMP_MILLIS must correspond to %d and the rest must be %s. required string name_format_string = 1; // A FormatParam for each format field. repeated FormatParam format_params = 2; // If true, the results directory will be prepended to this file name. required bool relative_to_results = 3; } message ShellCommand { // The base executable (e.g. "dumpsys"). required string executable = 1; // Command-line options (e.g. "graphicsstats"). repeated string options = 2; } message ExistingFile { required string path = 1; // If true, the results directory will be prepended to this file name. optional bool relative_to_results = 2; } message Collector { // The name of this collector (used only for logging). required string name = 1; // The Trade Federation LogFileType for the resulting log. required posting_service_rpc.LogType type = 2; // The preconditions for this Collector. If none are specified, we'll never // run it. repeated Trigger triggers = 3; // The test patterns for which we should run this Collector. // If none are specified, we'll never run it. repeated TestPattern tests = 4; // The interval at which to collect this log, if one of our triggers is // INTERVAL. optional uint64 interval_millis = 5; // If true, and our test runner can interpret LogCollectors, we will // forward this collector to the test runner to reduce latency. optional bool forward_to_test_runner = 6; // The way we'll get the log. oneof source { ShellCommand command = 7; ExistingFile file = 8; } // The place we should put the log. oneof result { string result_file_name = 9; FormattedFileName result_file_formatted = 10; } }