123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- // Copyright 2021 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/api/resource.proto";
- 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/file_processing_error.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_outer_classname = "ActionProto";
- 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, as specified in action_type
- // oneof.
- //
- // Each parent ConfiguredTarget resource should have at least one Action as its
- // child resource before the invocation is finalized. For a simple build, at
- // least one build action should be created to represent the build result, and
- // at least one test action should be created to represent the test result, if
- // any.
- message Action {
- option (google.api.resource) = {
- type: "resultstore.googleapis.com/Action"
- pattern: "invocations/{invocation}/targets/{target}/configuredTargets/{configured_target}/actions/{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/${url_encode(TARGET_ID)}/configuredTargets/url_encode(${CONFIG_ID})/actions/${url_encode(ACTION_ID)}
- //
- // See CreateActionRequest proto for more information.
- 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. These files must be immediately available to
- // ResultStore for processing when the reference is uploaded.
- //
- // 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;
- // List of names of file sets that are referenced from this Action.
- // Each name must point to a file set under the same Invocation. The name
- // format must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
- repeated string file_sets = 15;
- // 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 the 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;
- }
- // 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;
- }
|