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