| // 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; |
| } |
| } |