You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
381 lines
14 KiB
381 lines
14 KiB
// Copyright 2018 Google LLC.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
syntax = "proto3";
|
|
|
|
package google.devtools.resultstore.v2;
|
|
|
|
import "google/devtools/resultstore/v2/common.proto";
|
|
import "google/devtools/resultstore/v2/coverage.proto";
|
|
import "google/devtools/resultstore/v2/file.proto";
|
|
import "google/devtools/resultstore/v2/test_suite.proto";
|
|
import "google/protobuf/duration.proto";
|
|
|
|
option go_package = "google.golang.org/genproto/googleapis/devtools/resultstore/v2;resultstore";
|
|
option java_multiple_files = true;
|
|
option java_package = "com.google.devtools.resultstore.v2";
|
|
|
|
// An action that happened as part of a configured target. This action could be
|
|
// a build, a test, or another type of action.
|
|
// Each parent ConfiguredTarget resource should have at least one Action as its
|
|
// child resource before the invocation is finalized. ResultStore is a tool to
|
|
// store build & test results. ConfiguredTarget proto by itself does not contain
|
|
// enough fields to fully represent such results. For a simple build, at least
|
|
// one build action is required to represent the build result.
|
|
message Action {
|
|
// The resource ID components that identify the Action.
|
|
message Id {
|
|
// The Invocation ID.
|
|
string invocation_id = 1;
|
|
|
|
// The Target ID.
|
|
string target_id = 2;
|
|
|
|
// The Configuration ID.
|
|
string configuration_id = 3;
|
|
|
|
// The Action ID.
|
|
string action_id = 4;
|
|
}
|
|
|
|
// The resource name. Its format must be:
|
|
// invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID}
|
|
string name = 1;
|
|
|
|
// The resource ID components that identify the Action. They must match the
|
|
// resource name after proper encoding.
|
|
Id id = 2;
|
|
|
|
// The status of the action.
|
|
StatusAttributes status_attributes = 3;
|
|
|
|
// The timing of the whole action. For TestActions, the start time may be
|
|
// before the test actually started, and the duration may last until after the
|
|
// test actually finished.
|
|
Timing timing = 4;
|
|
|
|
// The type of the action. The type of an action may not change over the
|
|
// lifetime of the invocation. If one of these fields is to be set, it must be
|
|
// set in the CreateAction method. It may be set to an empty message that is
|
|
// populated in later methods or post-processing. A generic "untyped" action
|
|
// can be created by not setting any of these fields. An untyped action will
|
|
// be untyped for the lifetime of the invocation.
|
|
oneof action_type {
|
|
// Used only when this action represents a build action.
|
|
BuildAction build_action = 9;
|
|
|
|
// Only for test actions.
|
|
TestAction test_action = 10;
|
|
}
|
|
|
|
// General attributes of the action.
|
|
ActionAttributes action_attributes = 5;
|
|
|
|
// A list of resources that this action depended upon. May be used to provide
|
|
// the cause of a build failure in the case of a failed build action.
|
|
repeated Dependency action_dependencies = 14;
|
|
|
|
// Arbitrary name-value pairs.
|
|
// This is implemented as a multi-map. Multiple properties are allowed with
|
|
// the same key. Properties will be returned in lexicographical order by key.
|
|
repeated Property properties = 7;
|
|
|
|
// A list of file references for action level files.
|
|
// The file IDs must be unique within this list. Duplicate file IDs will
|
|
// result in an error. Files will be returned in lexicographical order by ID.
|
|
// Files with the following reserved file IDs cause specific post-processing
|
|
// or have special handling:
|
|
//
|
|
// For build actions:
|
|
// stdout: The stdout of the action
|
|
// stderr: The stderr of the action
|
|
// baseline.lcov: Baseline coverage file to be parsed by the server. This
|
|
// uses a stripped down implementation of the LCOV standard.
|
|
// http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
|
|
//
|
|
// For test actions:
|
|
// test.xml: The test suite / test case data in XML format.
|
|
// test.log: The combined stdout and stderr of the test process.
|
|
// test.lcov: Coverage file to be parsed by the server. This uses a stripped
|
|
// down implementation of the LCOV standard.
|
|
// http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
|
|
repeated File files = 8;
|
|
|
|
// Coverage data was collected while running the build or test action. This
|
|
// usually includes line coverage, and may also include branch coverage.
|
|
// For test actions, this is usually only for the source files which were
|
|
// actually executed by that particular action.
|
|
// For build actions, this is the baseline coverage, which captures the
|
|
// instrumented files and lines, without any lines being executed. This
|
|
// ensures files that are never covered at all are included.
|
|
ActionCoverage coverage = 11;
|
|
|
|
// ResultStore will read and parse Files with reserved IDs listed above. Read
|
|
// and parse errors for all these Files are reported here.
|
|
// This is implemented as a map, with one FileProcessingErrors for each file.
|
|
// Typically produced when parsing Files, but may also be provided directly
|
|
// by clients.
|
|
repeated FileProcessingErrors file_processing_errors = 13;
|
|
}
|
|
|
|
// A build action, such as building a java library.
|
|
message BuildAction {
|
|
// The type of the action. This is intended to be a clue as to how the output
|
|
// of the action should be parsed. For example "javac" for a Java compile
|
|
// action.
|
|
string type = 1;
|
|
|
|
// The "primary" input artifact processed by this action. E.g., the .cc file
|
|
// of a C++ compile action. Empty string ("") if the action has no input
|
|
// artifacts or no "primary" input artifact.
|
|
string primary_input_path = 2;
|
|
|
|
// The "primary" output artifact processed by this action. E.g., the .o file
|
|
// of a C++ compile action. Empty string ("") if the action has no output
|
|
// artifacts or no "primary" output artifact.
|
|
string primary_output_path = 3;
|
|
}
|
|
|
|
// A test action, such as running a JUnit4 test binary.
|
|
message TestAction {
|
|
// Timing data for execution of the test action.
|
|
TestTiming test_timing = 1;
|
|
|
|
// If the test is divided up into shards to improve performance, set this to
|
|
// indicate which shard this test action is for. Value must be in interval
|
|
// [0, total_shard_count). Defaults to 0, which is appropriate if all test
|
|
// cases are run in the same process.
|
|
int32 shard_number = 2;
|
|
|
|
// If the user requested that every test be run multiple times, as is often
|
|
// done to measure flakiness, set this to indicate which run this test action
|
|
// is for. Value must be in interval [0, total_run_count). Defaults to 0,
|
|
// which is appropriate if multiple runs were not requested.
|
|
int32 run_number = 3;
|
|
|
|
// If flaky tests are automatically retried, set this to indicate which
|
|
// attempt this test action is for. (e.g. 0 for the first attempt, 1 for
|
|
// second, and so on). Defaults to 0, which is appropriate if this is only
|
|
// attempt.
|
|
int32 attempt_number = 4;
|
|
|
|
// A tree of test suites and test cases that were run by this test action.
|
|
// Each test case has its own status information, including stack traces.
|
|
// Typically produced by parsing an XML Log, but may also be provided directly
|
|
// by clients.
|
|
TestSuite test_suite = 5;
|
|
|
|
// Warnings for this test action.
|
|
repeated TestWarning warnings = 8;
|
|
|
|
// Estimated memory consumption of the test action, in bytes. A default value
|
|
// of 0 means there is no memory consumption estimate specified.
|
|
int64 estimated_memory_bytes = 10;
|
|
}
|
|
|
|
// General attributes of an action
|
|
message ActionAttributes {
|
|
// Strategy used for executing the action.
|
|
ExecutionStrategy execution_strategy = 1;
|
|
|
|
// Exit code of the process that ran the action. A non-zero value means
|
|
// failure.
|
|
int32 exit_code = 2;
|
|
|
|
// Where the action was run.
|
|
string hostname = 3;
|
|
|
|
// Information about the input files used in all actions under this configured
|
|
// target.
|
|
InputFileInfo input_file_info = 4;
|
|
}
|
|
|
|
// File count and size information for the input files to a configured target.
|
|
message InputFileInfo {
|
|
// The number of input files (counting every file, even if a duplicate).
|
|
int64 count = 1;
|
|
|
|
// The number of distinct input files.
|
|
int64 distinct_count = 2;
|
|
|
|
// The max number of input files allowed by the build system (counting every
|
|
// file, even if a duplicate).
|
|
int64 count_limit = 3;
|
|
|
|
// The total size of the distinct input files.
|
|
int64 distinct_bytes = 4;
|
|
|
|
// The max allowed total size of the distinct input files.
|
|
int64 distinct_byte_limit = 5;
|
|
}
|
|
|
|
// Timing data for tests executed locally on the machine running the build.
|
|
message LocalTestTiming {
|
|
// Time taken by the test process, typically surrounded by a small wrapper
|
|
// script.
|
|
google.protobuf.Duration test_process_duration = 1;
|
|
}
|
|
|
|
// Timing data for one attempt to execute a test action remotely.
|
|
message RemoteTestAttemptTiming {
|
|
// Idle period before the test process is invoked on the remote machine.
|
|
google.protobuf.Duration queue_duration = 1;
|
|
|
|
// Time to upload data dependencies from the local machine to the remote
|
|
// machine running the test, or to the distributed cache.
|
|
google.protobuf.Duration upload_duration = 2;
|
|
|
|
// Time to set up the remote machine.
|
|
// Not to be confused with setup time in
|
|
// xUnit test frameworks, which falls within the test_process_time.
|
|
google.protobuf.Duration machine_setup_duration = 3;
|
|
|
|
// Time taken by the test process, typically surrounded by a small wrapper
|
|
// script.
|
|
// For Java tests, this includes JVM setup, flag parsing, class path setup,
|
|
// parsing files to setup the suite, and finally running your test methods.
|
|
// In many cases, only a small fraction of the test process time is spent
|
|
// running the test methods.
|
|
google.protobuf.Duration test_process_duration = 4;
|
|
|
|
// Time spent retrieving test logs and any other test outputs, back to the
|
|
// local machine.
|
|
google.protobuf.Duration download_duration = 5;
|
|
}
|
|
|
|
// Timing data for the part of the test execution that is done remotely.
|
|
message RemoteTestTiming {
|
|
// Time taken locally to determine what to do.
|
|
google.protobuf.Duration local_analysis_duration = 1;
|
|
|
|
// Normally there is only one attempt, but the system may retry on internal
|
|
// errors, leading to multiple attempts.
|
|
repeated RemoteTestAttemptTiming attempts = 2;
|
|
}
|
|
|
|
// Timing data for execution of a test action. The action may be performed
|
|
// locally, on the machine running the build, or remotely.
|
|
message TestTiming {
|
|
// Test timing for either a local or remote execution.
|
|
oneof location {
|
|
// Used for local test actions.
|
|
LocalTestTiming local = 1;
|
|
|
|
// Used for remote test actions.
|
|
RemoteTestTiming remote = 2;
|
|
}
|
|
|
|
// The amount of CPU time spent by the test process executing system calls
|
|
// within the kernel, as opposed to library code. Time the test process spent
|
|
// blocked does not count towards this figure.
|
|
google.protobuf.Duration system_time_duration = 3;
|
|
|
|
// The amount of CPU time spent by the test process executing user-mode code
|
|
// outside the kernel, as opposed to library code. Time the test process
|
|
// spent blocked does not count towards this figure. You can add user_time to
|
|
// system_time to get total CPU time taken by the test process.
|
|
google.protobuf.Duration user_time_duration = 4;
|
|
|
|
// Most build systems cache build results to speed up incremental builds.
|
|
// Some also cache test results too. This indicates whether the test results
|
|
// were found in a cache, and where that cache was located.
|
|
TestCaching test_caching = 5;
|
|
}
|
|
|
|
// A warning from a test execution.
|
|
message TestWarning {
|
|
// Contains the message detailing the warning.
|
|
string warning_message = 1;
|
|
}
|
|
|
|
// Stores errors reading or parsing a file during post-processing.
|
|
message FileProcessingErrors {
|
|
// The uid of the File being read or parsed.
|
|
string file_uid = 1;
|
|
|
|
// What went wrong.
|
|
repeated FileProcessingError file_processing_errors = 3;
|
|
}
|
|
|
|
// Stores an error reading or parsing a file during post-processing.
|
|
message FileProcessingError {
|
|
// The type of error that occurred.
|
|
FileProcessingErrorType type = 1;
|
|
|
|
// Error message describing the problem.
|
|
string message = 2;
|
|
}
|
|
|
|
// Indicates how/where this Action was executed.
|
|
enum ExecutionStrategy {
|
|
// The action did not indicate how it was executed.
|
|
EXECUTION_STRATEGY_UNSPECIFIED = 0;
|
|
|
|
// The action was executed in some other form.
|
|
OTHER_ENVIRONMENT = 1;
|
|
|
|
// The action used a remote build service.
|
|
REMOTE_SERVICE = 2;
|
|
|
|
// The action was executed locally, in parallel with other actions.
|
|
LOCAL_PARALLEL = 3;
|
|
|
|
// The action was executed locally, without parallelism.
|
|
LOCAL_SEQUENTIAL = 4;
|
|
}
|
|
|
|
// Most build systems cache build results to speed up incremental builds.
|
|
// Some also cache test results too. This indicates whether the test results
|
|
// were found in a cache, and where that cache was located.
|
|
enum TestCaching {
|
|
// The implicit default enum value. Should never be set.
|
|
TEST_CACHING_UNSPECIFIED = 0;
|
|
|
|
// The test result was found in a local cache, so it wasn't run again.
|
|
LOCAL_CACHE_HIT = 1;
|
|
|
|
// The test result was found in a remote cache, so it wasn't run again.
|
|
REMOTE_CACHE_HIT = 2;
|
|
|
|
// The test result was not found in any cache, so it had to be run again.
|
|
CACHE_MISS = 3;
|
|
}
|
|
|
|
// Errors in file post-processing are categorized using this enum.
|
|
enum FileProcessingErrorType {
|
|
// Type unspecified or not listed here.
|
|
FILE_PROCESSING_ERROR_TYPE_UNSPECIFIED = 0;
|
|
|
|
// A read error occurred trying to read the file.
|
|
GENERIC_READ_ERROR = 1;
|
|
|
|
// There was an error trying to parse the file.
|
|
GENERIC_PARSE_ERROR = 2;
|
|
|
|
// File is exceeds size limit.
|
|
FILE_TOO_LARGE = 3;
|
|
|
|
// The result of parsing the file exceeded size limit.
|
|
OUTPUT_TOO_LARGE = 4;
|
|
|
|
// Read access to the file was denied by file system.
|
|
ACCESS_DENIED = 5;
|
|
|
|
// Deadline exceeded trying to read the file.
|
|
DEADLINE_EXCEEDED = 6;
|
|
|
|
// File not found.
|
|
NOT_FOUND = 7;
|
|
}
|
|
|