Get desktop application:
View/edit binary Protocol Buffers messages
This is the interface used to download information from the database. Most APIs require setting a response FieldMask via the 'fields' URL query parameter or the X-Goog-FieldMask HTTP/gRPC header. Each resource in this interface carries a name field that identifies the resource.
Retrieves the action with the given name. An error will be reported in the following cases: - If the action is not found. - If the given name is badly formatted. - If no field mask was given.
Request passed into GetAction
The name of the action to retrieve. It must match this format: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}/actions/${ACTION_ID}
Retrieves the configuration with the given name. An error will be reported in the following cases: - If the configuration or its parent invocation is not found. - If the given configuration name is badly formatted. - If no field mask was given.
Request passed into GetConfiguration
The name of the configuration to retrieve. It must match this format: invocations/${INVOCATION_ID}/configs/${CONFIGURATION_ID}
Retrieves the configured target with the given name. An error will be reported in the following cases: - If the configured target is not found. - If the given name is badly formatted. - If no field mask was given.
Request passed into GetConfiguredTarget
The name of the configured target to retrieve. It must match this format: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}
Retrieves the file set with the given name. An error will be reported in the following cases: - If the file set or its parent invocation is not found. - If the given file set name is badly formatted. - If no field mask was given.
Request passed into GetFileSet
The name of the file set to retrieve. It must match this format: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
Retrieves the invocation with the given name. An error will be reported in the following cases: - If the invocation is not found. - If the given invocation name is badly formatted. - If no field mask was given.
Request passed into GetInvocation
The name of the invocation to retrieve. It must match this format: invocations/${INVOCATION_ID} where INVOCATION_ID must be an RFC 4122-compliant random UUID.
Retrieves the target with the given name. An error will be reported in the following cases: - If the target or its parent invocation is not found. - If the given target name is badly formatted. - If no field mask was given.
Request passed into GetTarget
The name of the target to retrieve. It must match this format: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
Retrieves all actions for a parent invocation/target/configuration. This might be limited by user or server, in which case a continuation token is provided. Supports '-' for configurationId to mean all actions for all configurations for a target, or '-' for targetId and configurationId to mean all actions for all configurations and all targets. Does not support targetId '-' with a specified configuration. An error will be reported in the following cases: - If the parent is not found. - If the given parent name is badly formatted. - If no field mask was given.
Request passed into ListActions
The invocation, target, and configuration name of the action to retrieve. It must match this format: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIGURATION_ID}
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous List request, if any.
Absolute number of results to skip.
Response from calling ListActions
Actions matching the request, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results in the list.
Retrieves all configurations for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. An error will be reported in the following cases: - If the parent invocation is not found. - If the given parent invocation name is badly formatted. - If no field mask was given.
Request passed into ListConfigurations
The invocation name of the configurations to retrieve. It must match this format: invocations/${INVOCATION_ID}
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous List request, if any.
Absolute number of results to skip.
Response from calling ListConfigurations
Configurations matching the request invocation, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results in the list.
Retrieves all configured targets for a parent invocation/target. This might be limited by user or server, in which case a continuation token is provided. Supports '-' for targetId meaning all targets. An error will be reported in the following cases: - If the parent is not found. - If the given parent name is badly formatted. - If no field mask was given.
Request passed into ListConfiguredTargets
The invocation and target name of the configured targets to retrieve. It must match this format: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous List request, if any.
Absolute number of results to skip.
Response from calling ListConfiguredTargets
ConfiguredTargets matching the request, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results in the list.
Retrieves all file sets for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. An error will be reported in the following cases: - If the parent invocation is not found. - If the given parent invocation name is badly formatted. - If no field mask was given.
Request passed into ListFileSets
The invocation name of the file sets to retrieve. It must match this format: invocations/${INVOCATION_ID}
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous List request, if any.
Absolute number of results to skip.
Response from calling ListFileSets
File sets matching the request, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results in the list.
Retrieves all targets for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. An error will be reported in the following cases: - If the parent is not found. - If the given parent name is badly formatted. - If no field mask was given.
Request passed into ListTargets
The invocation name of the targets to retrieve. It must match this format: invocations/${INVOCATION_ID}
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous List request, if any.
Absolute number of results to skip.
Response from calling ListTargetsResponse
Targets matching the request invocation, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results in the list.
Searches for invocations matching the given query parameters. An error will be reported in the following cases: - If a query string is not provided - If no field mask was given.
Request passed into SearchInvocations
The maximum number of items to return. Zero means all, but may be capped by the server.
Options for pagination.
The next_page_token value returned from a previous Search request, if any.
Absolute number of results to skip.
A filtering query string.
The project id to search under.
Response from calling SearchInvocations
Invocations matching the search, possibly capped at request.page_size or a server limit.
Token to retrieve the next page of results, or empty if there are no more results.
This API allows download of File messages referenced in ResultStore resources.
Retrieves the File with the given uri. returns a stream of bytes to be stitched together in order. An error will be reported in the following cases: - If the File is not found. - If the given File uri is badly formatted.
Request object for GetFile
This corresponds to the uri field in the File message.
The offset for the first byte to return in the read, relative to the start of the resource. A `read_offset` that is negative or greater than the size of the resource will cause an `OUT_OF_RANGE` error.
The maximum number of `data` bytes the server is allowed to return in the sum of all `ReadResponse` messages. A `read_limit` of zero indicates that there is no limit, and a negative `read_limit` will cause an error. If the stream returns fewer bytes than allowed by the `read_limit` and no error occurred, the stream includes all data from the `read_offset` to the end of the resource.
Response object for GetFile
The file data.
Retrieves the tail of a File with the given uri. An error will be reported in the following cases: - If the File is not found. - If the given File uri is badly formatted.
Request object for GetFileTail
This corresponds to the uri field in the File message.
The offset for the first byte to return in the read, relative to the end of the resource. A `read_offset` that is negative or greater than the size of the resource will cause an `OUT_OF_RANGE` error.
The maximum number of `data` bytes the server is allowed to return. The server will return bytes starting from the tail of the file. A `read_limit` of zero indicates that there is no limit, and a negative `read_limit` will cause an error.
Response object for GetFileTail
The file data, encoded with UTF-8.
This is the interface used to upload information to the ResultStore database, to update that information as necessary, and to make it immutable at the end. Every Update and Append method supports an update_mask field for restricting the affected fields.
Creates the given action under the given configured target. The given action ID is URL encoded, converted to the full resource name, and assigned to the action's name field. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty Action proto with only the name and ID fields populated. An error will be reported in the following cases: - If no action ID provided. - If the parent configured target does not exist. - If the parent target or invocation is finished. - If an action with the same name already exists.
Request passed into CreateAction
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. Restricted to 36 utf-8 bytes.
The name of the parent configured target in which the action is created. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
The action identifier. It can be any UTF-8 string up to 512 bytes long, except for the reserved id '-'.
The action to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Creates the given configuration under the given parent invocation. The given configuration ID is URL encoded, converted to the full resource name, and assigned to the configuration's name field. The configuration ID of "default" should be preferred for the default configuration in a single-config invocation. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty Configuration proto with only the name and ID fields populated. An error will be reported in the following cases: - If no configuration ID is provided. - If the parent invocation does not exist. - If the parent invocation is finished. - If a configuration with the same name already exists.
Request passed into CreateConfiguration
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. Restricted to 36 utf-8 bytes.
The name of the parent invocation in which the configuration is created. Its format must be invocations/${INVOCATION_ID}
The configuration identifier. It can be any UTF-8 string up to 256 bytes long. The configuration ID of "default" should be preferred for the default configuration in a single-config invocation. Cannot be the reserved id '-'.
The configuration to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Creates the given configured target under the given parent target. The given configured target ID is URL encoded, converted to the full resource name, and assigned to the configured target's name field. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty ConfiguredTarget proto with only the name and ID fields populated. An error will be reported in the following cases: - If no config ID is provided. - If a configured target with the same ID already exists. - If the parent target does not exist. - If the parent target or invocation is finished.
Request passed into CreateConfiguredTarget
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. Restricted to 36 utf-8 bytes.
The name of the parent target in which the configured target is created. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
The configuration identifier. This must match the ID of an existing Configuration under this Invocation. Cannot be the reserved id '-'.
The configured target to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Creates the given file set under the given parent invocation. The given file set ID is URL encoded, converted to the full resource name, and assigned to the file set's name field. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty FileSet proto with only the name and ID fields populated. An error will be reported in the following cases: - If no file set ID is provided. - If a file set with the same name already exists. - If the parent invocation does not exist. - If the parent invocation is finished.
Request passed into CreateFileSet
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. Restricted to 36 utf-8 bytes.
The name of the parent invocation in which the file set is created. Its format must be invocations/${INVOCATION_ID}
The file set identifier. It can be any UTF-8 string up to 256 bytes long.
The file set to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Creates the given invocation. Generally, a unique ID will be assigned to the invocation's name field by the server. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty Invocation proto with only the name and ID fields populated. An error will be reported in the following cases: - If an invocation with the same ID already exists.
Request passed into CreateInvocation
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. If set, invocation_id must also be provided. Restricted to 36 utf-8 bytes.
The invocation ID. If left empty then a new unique ID will be assigned by the server. If populated, a RFC 4122-compliant v4 UUID is preferred, but v3 or v5 UUIDs are allowed too.
The invocation to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize upload access to this invocation. It must be set to a RFC 4122-compliant v3, v4, or v5 UUID. Once this is set in CreateInvocation, all other upload RPCs for that Invocation and any of its child resources must also include the exact same token, or they will be rejected. The generated token should be unique to this invocation, and it should be kept secret. The purpose of this field is to prevent other users and tools from clobbering your upload intentionally or accidentally. The standard way of using this token is to create a second v4 UUID when the invocation_id is created, and storing them together during the upload. Essentially, this is a "password" to the invocation.
By default, Invocations are auto-finished if they are not modified for 24 hours. If you need auto-finish to happen sooner, set this field to the time you'd like auto-finish to occur.
Creates the given target under the given parent invocation. The given target ID is URL encoded, converted to the full resource name, and assigned to the target's name field. This is not an implicitly idempotent API, so a request id is required to make it idempotent. Returns an empty Target proto with only the name and ID fields populated. An error will be reported in the following cases: - If no target ID is provided. - If the parent invocation does not exist. - If the parent invocation is finished. - If a target with the same name already exists.
Request passed into CreateTarget
A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. Restricted to 36 utf-8 bytes.
The name of the parent invocation in which the target is created. Its format must be invocations/${INVOCATION_ID}
The target identifier. It can be any UTF-8 string up to 1024 bytes long except for the reserved id '-'.
The target to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Declares the configured target with the given name as finished and immutable. This is an implicitly idempotent API. An error will be reported in the following cases: - If the configured target does not exist.
Request passed into FinishConfiguredTarget
The name of the configured target. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Response returned from FinishConfiguredTarget
The name of the configured target. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
The resource ID components that identify the ConfiguredTarget.
Declares the invocation with the given name as finished and immutable. This is an implicitly idempotent API. If an Invocation is not updated for 24 hours, some time after that this will be called automatically. An error will be reported in the following cases: - If the invocation does not exist.
Request passed into FinishInvocation
The name of the invocation. Its format must be: invocations/${INVOCATION_ID}
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Response returned from FinishInvocation
The name of the invocation. Its format will be: invocations/${INVOCATION_ID}
The resource ID components that identify the Invocation.
Declares the target with the given name as finished and immutable. This is an implicitly idempotent API. An error will be reported in the following cases: - If the target does not exist.
Request passed into FinishTarget
The name of the target. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Response returned from FinishTarget
The name of the target. Its format will be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
The resource ID components that identify the Target.
Applies a standard update to the action identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given action are cleared. This is an implicitly idempotent API. Returns an empty Action proto with only the name and ID fields populated. An error will be reported in the following cases: - If the action does not exist. - If the parent target or invocation is finished. - If no field mask was given.
Request passed into UpdateAction
Contains the name and the fields of the action to be updated. The name format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Applies a standard update to the configuration identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given configuration are cleared. This is an implicitly idempotent API. Returns an empty Configuration proto with only the name and ID fields populated. An error will be reported in the following cases: - If the configuration does not exist. - If the parent invocation is finished. - If no field mask was given. - If a given field mask path is not valid.
Request passed into UpdateConfiguration
Contains the name and fields of the configuration to be updated. The name format must be: invocations/${INVOCATION_ID}/configs/${CONFIG_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Applies a standard update to the configured target identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given configured target are cleared. This is an implicitly idempotent API. Returns an empty ConfiguredTarget proto with only the name and ID fields populated. An error will be reported in the following cases: - If the configured target does not exist. - If the parent target or invocation is finished. - If no field mask was given.
Request passed into UpdateConfiguredTarget
Contains the name and the fields of the configured target to be updated. The name format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Applies a standard update to the file set identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given configuration are cleared. This is an implicitly idempotent API. Returns an empty FileSet proto with only the name and ID fields populated. An error will be reported in the following cases: - If the file set does not exist. - If the parent invocation is finished. - If no field mask was given. - If a given field mask path is not valid.
Request passed into UpdateFileSet
Contains the name and fields of the file set to be updated. The name format must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Applies a standard update to the invocation identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given invocation are cleared. This is an implicitly idempotent API. Returns an empty Invocation proto with only the name and ID fields populated. An error will be reported in the following cases: - If the invocation does not exist. - If the invocation is finished. - If no field mask was given.
Request passed into UpdateInvocation
Contains the name and the fields of the invocation to be updated. The name format must be: invocations/${INVOCATION_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Applies a standard update to the target identified by the given proto's name. For all types of fields (primitive, message, or repeated), replaces them with the given proto fields if they are under the given field mask paths. Fields that match the mask but aren't populated in the given target are cleared. This is an implicitly idempotent API. Returns an empty Target proto with only the name and ID fields populated. An error will be reported in the following cases: - If the target does not exist. - If the target or parent invocation is finished. - If no field mask was given.
Request passed into UpdateTarget
Contains the name and the fields of the target to be updated. The name format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
Indicates which fields to update.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
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.
Used as response type in: ResultStoreDownload.GetAction, ResultStoreUpload.CreateAction, ResultStoreUpload.UpdateAction
Used as field type in: , ,
The resource name. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID}
The resource ID components that identify the Action. They must match the resource name after proper encoding.
The status of the action.
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.
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.
Used only when this action represents a build action.
Only for test actions.
General attributes of the action.
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.
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.
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
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.
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.
The resource ID components that identify the Action.
Used in:
The Invocation ID.
The Target ID.
The Configuration ID.
The Action ID.
General attributes of an action
Used in:
Strategy used for executing the action.
Exit code of the process that ran the action. A non-zero value means failure.
Where the action was run.
Information about the input files used in all actions under this configured target.
Describes code coverage for a build or test Action. This is used to store baseline coverage for build Actions and test coverage for test Actions.
Used in:
List of coverage info for all source files that the TestResult covers.
Information specific to an entry in an archive.
Used in:
The relative path of the entry within the archive.
(Optional) The uncompressed length of the archive entry in bytes. Allows the entry size to be shown in the UI. Omit if the length is not known.
(Optional) The content-type (aka MIME-type) of the archive entry. (e.g. text/plain, image/jpeg, text/html, etc). This is sent to the web browser so it knows how to handle the entry.
Describes branch coverage for a file
Used in:
The field branch_present denotes the lines containing at least one branch. This is a bitfield where i-th bit corresponds to the i-th line. Divide line number by 8 to get index into byte array. Mod line number by 8 to get bit number (0 = LSB, 7 = MSB). A 1 denotes the line contains at least one branch. A 0 denotes the line contains no branches.
Contains the number of branches present, only for the lines which have the corresponding bit set in branch_present, in a relative order ignoring lines which do not have any branches.
As each branch can have any one of the following three states: not executed, executed but not taken, executed and taken. This is a bitfield where i-th bit corresponds to the i-th line. Divide line number by 8 to get index into byte array. Mod line number by 8 to get bit number (0 = LSB, 7 = MSB). i-th bit of the following two byte arrays are used to denote the above mentioned states. not executed: i-th bit of executed == 0 && i-th bit of taken == 0 executed but not taken: i-th bit of executed == 1 && i-th bit of taken == 0 executed and taken: i-th bit of executed == 1 && i-th bit of taken == 1
Described above.
Summary of branch coverage A branch may be: * not executed. Counted only in total. * executed but not taken. Appears in total and executed. * executed and taken. Appears in all three fields.
Used in:
The number of branches present in the file.
The number of branches executed out of the total branches present. A branch is executed when its condition is evaluated. This is <= total_branch_count as not all branches are executed.
The number of branches taken out of the total branches executed. A branch is taken when its condition is satisfied. This is <= executed_branch_count as not all executed branches are taken.
A build action, such as building a java library.
Used in:
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.
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.
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.
The command and arguments that produced this Invocation.
Used in:
A label describing this command line.
The command-line tool that is run: argv[0].
The arguments to the above tool: argv[1]...argv[N].
The actual command that was run with the tool. (e.g. "build", or "test") Omit if the tool doesn't accept a command. This is a duplicate of one of the fields in args.
Represents a configuration within an Invocation associated with one or more ConfiguredTargets. It captures the environment and other settings that were used.
Used as response type in: ResultStoreDownload.GetConfiguration, ResultStoreUpload.CreateConfiguration, ResultStoreUpload.UpdateConfiguration
Used as field type in: , ,
The format of this Configuration resource name must be: invocations/${INVOCATION_ID}/configs/${CONFIG_ID} The configuration ID of "default" should be preferred for the default configuration in a single-config invocation.
The resource ID components that identify the Configuration. They must match the resource name after proper encoding.
The aggregate status for this configuration.
Attributes that apply only to this configuration.
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.
The resource ID components that identify the Configuration.
Used in:
The Invocation ID.
The Configuration ID.
Attributes that apply only to the configuration.
Used in:
The type of cpu. (e.g. "x86", "powerpc")
Each ConfiguredTarget represents data for a given configuration of a given target in a given Invocation. Every ConfiguredTarget should have at least one Action as a child resource before the invocation is finalized. Refer to the Action's documentation for more info on this.
Used as response type in: ResultStoreDownload.GetConfiguredTarget, ResultStoreUpload.CreateConfiguredTarget, ResultStoreUpload.UpdateConfiguredTarget
Used as field type in: , ,
The resource name. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID} where ${CONFIG_ID} must match the ID of an existing Configuration under this Invocation.
The resource ID components that identify the ConfiguredTarget. They must match the resource name after proper encoding.
The aggregate status for this configuration of this target. If testing was not requested, set this to the build status (e.g. BUILT or FAILED_TO_BUILD).
Captures the start time and duration of this configured target.
Test specific attributes for this ConfiguredTarget.
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.
A list of file references for configured target 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.
The resource ID components that identify the ConfiguredTarget.
Used in: ,
The Invocation ID.
The Target ID.
The Configuration ID.
Attributes that apply only to test actions under this configured target.
Used in:
Total number of test runs. For example, in bazel this is specified with --runs_per_test. Zero if runs_per_test is not used.
Total number of test shards. Zero if shard count was not specified.
How long test is allowed to run.
Represents a dependency of a resource on another resource. This can be used to define a graph or a workflow paradigm through resources.
Used in:
The resource depended upon. It may be a Target, ConfiguredTarget, or Action.
The name of a target. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID} This must point to an target under the same invocation.
The name of a configured target. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID} This must point to an configured target under the same invocation.
The name of an action. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}/configuredTargets/${CONFIG_ID}/actions/${ACTION_ID} This must point to an action under the same invocation.
A label describing this dependency. The label "Root Cause" is handled specially. It is used to point to the exact resource that caused a resource to fail.
Indicates how/where this Action was executed.
Used in:
The action did not indicate how it was executed.
The action was executed in some other form.
The action used a remote build service.
The action was executed locally, in parallel with other actions.
The action was executed locally, without parallelism.
The metadata for a file or an archive file entry.
Used in: , , , , , ,
The identifier of the file or archive entry. User-provided, must be unique for the repeated field it is in. When an Append RPC is called with a Files field populated, if a File already exists with this ID, that File will be overwritten with the new File proto.
The URI of a file. This could also be the URI of an entire archive. Most log data doesn't need to be stored forever, so a ttl is suggested. Note that if you ever move or delete the file at this URI, the link from the server will be broken.
(Optional) The length of the file in bytes. Allows the filesize to be shown in the UI. Omit if file is still being written or length is not known. This could also be the length of an entire archive.
(Optional) The content-type (aka MIME-type) of the file. This is sent to the web browser so it knows how to handle the file. (e.g. text/plain, image/jpeg, text/html, etc). For zip archives, use "application/zip".
(Optional) If the above path, length, and content_type are referring to an archive, and you wish to refer to a particular entry within that archive, put the particular archive entry data here.
(Optional) A url to a content display app/site for this file or archive entry.
(Optional) Whether to hide this file or archive entry in the UI. Defaults to false. A checkbox lets users see hidden files, but they're hidden by default.
(Optional) A short description of what this file or archive entry contains. This description should help someone viewing the list of these files to understand the purpose of this file and what they would want to view it for.
(Optional) digest of this file in hexadecimal-like string if known.
(Optional) The algorithm corresponding to the digest if known.
If known, the hash function used to compute this digest.
Used in:
Unknown
MD5
SHA-1
SHA-256
Describes code coverage for a particular file under test.
Used in:
Path of source file within the SourceContext of this Invocation.
Details of lines in a file required to calculate line coverage.
Details of branches in a file required to calculate branch coverage.
Stores an error reading or parsing a file during post-processing.
Used in:
The type of error that occurred.
Error message describing the problem.
Errors in file post-processing are categorized using this enum.
Used in:
Type unspecified or not listed here.
A read error occurred trying to read the file.
There was an error trying to parse the file.
File is exceeds size limit.
The result of parsing the file exceeded size limit.
Read access to the file was denied by file system.
Deadline exceeded trying to read the file.
File not found.
Stores errors reading or parsing a file during post-processing.
Used in:
The uid of the File being read or parsed.
What went wrong.
Represents a set of files within an Invocation. Can contain other file sets.
Used as response type in: ResultStoreDownload.GetFileSet, ResultStoreUpload.CreateFileSet, ResultStoreUpload.UpdateFileSet
Used as field type in: , ,
The format of this FileSet resource name must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
The resource ID components that identify the file set. They must match the resource name after proper encoding.
List of names of other file sets that are referenced from this one. Each name must point to a file set under the same invocation. The name format must be: invocations/${INVOCATION_ID}/fileSets/${FILE_SET_ID}
Files that are contained within this file set.
The resource ID components that identify the FileSet.
Used in:
The Invocation ID.
The FileSet ID.
File count and size information for the input files to a configured target.
Used in:
The number of input files (counting every file, even if a duplicate).
The number of distinct input files.
The max number of input files allowed by the build system (counting every file, even if a duplicate).
The total size of the distinct input files.
The max allowed total size of the distinct input files.
An Invocation typically represents the result of running a tool. Each has a unique ID, typically generated by the server. Target resources under each Invocation contain the bulk of the data.
Used as response type in: ResultStoreDownload.GetInvocation, ResultStoreUpload.CreateInvocation, ResultStoreUpload.UpdateInvocation
Used as field type in: , ,
The resource name. Its format must be: invocations/${INVOCATION_ID}
The resource ID components that identify the Invocation. They must match the resource name after proper encoding.
The aggregate status of the invocation.
When this invocation started and its duration.
Attributes of this invocation.
The workspace the tool was run in.
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.
A list of file references for invocation 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. Use this field to specify build logs, and other invocation level logs.
Summary of aggregate coverage across all Actions in this Invocation. the server populates this for you in the post-processing phase.
The resource ID components that identify the Invocation.
Used in: ,
The Invocation ID.
Attributes that apply to all invocations.
Used in:
The project ID this invocation is associated with. This must be set in the CreateInvocation call, and can't be changed.
The list of users in the command chain. The first user in this sequence is the one who instigated the first command in the chain.
Labels to categorize this invocation. This is implemented as a set. All labels will be unique. Any duplicate labels added will be ignored. Labels will be returned in lexicographical order. Labels should be short, easy to read, and you shouldn't have more than a handful. Labels should match regex \w([- \w]*\w)? Labels should not be used for unique properties such as unique IDs. Use properties in cases that don't meet these conditions.
This field describes the overall context or purpose of this invocation. It will be used in the UI to give users more information about how or why this invocation was run.
If this Invocation was run in the context of a larger Continuous Integration build or other automated system, this field may contain more information about the greater context.
Describes the invocation context which includes a display name and URL.
Used in:
A human readable name for the context under which this Invocation was run.
A URL pointing to a UI containing more information
These correspond to the prefix of the rule name. Eg cc_test has language CC.
Used in: ,
Language unspecified or not listed here.
Not related to any particular language
Android
ActionScript (Flash)
C++ or C
Cascading-Style-Sheets
Dart
Go
Google-Web-Toolkit
Haskell
Java
Javascript
Lisp
Objective-C
Python
Shell (Typically Bash)
Swift
Typescript
Webtesting
Scala
Protocol Buffer
Summary of coverage in each language
Used in:
This summary is for all files written in this programming language.
Summary of lines covered vs instrumented.
Summary of branch coverage.
Describes line coverage for a file
Used in:
Which source lines in the file represent the start of a statement that was instrumented to detect whether it was executed by the test. This is a bitfield where i-th bit corresponds to the i-th line. Divide line number by 8 to get index into byte array. Mod line number by 8 to get bit number (0 = LSB, 7 = MSB). A 1 denotes the line was instrumented. A 0 denotes the line was not instrumented.
Which of the instrumented source lines were executed by the test. Should include lines that were not instrumented. This is a bitfield where i-th bit corresponds to the i-th line. Divide line number by 8 to get index into byte array. Mod line number by 8 to get bit number (0 = LSB, 7 = MSB). A 1 denotes the line was executed. A 0 denotes the line was not executed.
Summary of line coverage
Used in:
Number of lines instrumented for coverage.
Number of instrumented lines that were executed by the test.
Timing data for tests executed locally on the machine running the build.
Used in:
Time taken by the test process, typically surrounded by a small wrapper script.
A generic key-value property definition.
Used in: , , , , , ,
The key.
The value.
Timing data for one attempt to execute a test action remotely.
Used in:
Idle period before the test process is invoked on the remote machine.
Time to upload data dependencies from the local machine to the remote machine running the test, or to the distributed cache.
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.
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.
Time spent retrieving test logs and any other test outputs, back to the local machine.
Timing data for the part of the test execution that is done remotely.
Used in:
Time taken locally to determine what to do.
Normally there is only one attempt, but the system may retry on internal errors, leading to multiple attempts.
Status of a resource.
Used in:
The implicit default enum value. Should never be set.
Displays as "Building". Means the target is compiling, linking, etc.
Displays as "Built". Means the target was built successfully. If testing was requested, it should never reach this status: it should go straight from BUILDING to TESTING.
Displays as "Broken". Means build failure such as compile error.
Displays as "Testing". Means the test is running.
Displays as "Passed". Means the test was run and passed.
Displays as "Failed". Means the test was run and failed.
Displays as "Timed out". Means the test didn't finish in time.
Displays as "Cancelled". Means the build or test was cancelled. E.g. User hit control-C.
Displays as "Tool Failed". Means the build or test had internal tool failure.
Displays as "Incomplete". Means the build or test did not complete. This might happen when a build breakage or test failure causes the tool to stop trying to build anything more or run any more tests, with the default bazel --nokeep_going option or the --notest_keep_going option.
Displays as "Flaky". Means the aggregate status contains some runs that were successful, and some that were not.
Displays as "Unknown". Means the tool uploading to the server died mid-upload or does not know the state.
Displays as "Skipped". Means building and testing were skipped. (E.g. Restricted to a different configuration.)
Describes the status of a resource in both enum and string form. Only use description when conveying additional info not captured in the enum name.
Used in: , , , ,
Enum representation of the status.
A longer description about the status.
Each Target represents data for a given target in a given Invocation. ConfiguredTarget and Action resources under each Target contain the bulk of the data.
Used as response type in: ResultStoreDownload.GetTarget, ResultStoreUpload.CreateTarget, ResultStoreUpload.UpdateTarget
Used as field type in: , ,
The resource name. Its format must be: invocations/${INVOCATION_ID}/targets/${TARGET_ID}
The resource ID components that identify the Target. They must match the resource name after proper encoding.
This is the aggregate status of the target.
When this target started and its duration.
Attributes that apply to all targets.
Attributes that apply to all test actions under this target.
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.
A list of file references for target 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. Use this field to specify outputs not related to a configuration.
Provides a hint to clients as to whether to display the Target to users. If true then clients likely want to display the Target by default. Once set to true, this may not be set back to false.
The resource ID components that identify the Target.
Used in: ,
The Invocation ID.
The Target ID.
Attributes that apply to all targets.
Used in:
If known, indicates the type of this target. In bazel this corresponds to the rule-suffix.
If known, the main language of this target, e.g. java, cc, python, etc.
The tags attribute of the build rule. These should be short, descriptive words, and there should only be a few of them. This is implemented as a set. All tags will be unique. Any duplicate tags will be ignored. Tags will be returned in lexicographical order.
These correspond to the suffix of the rule name. Eg cc_test has type TEST.
Used in:
Unspecified by the build system.
An application e.g. ios_application.
A binary target e.g. cc_binary.
A library target e.g. java_library
A package
Any test target, in bazel that means a rule with a '_test' suffix.
The result of running a test case or test suite. JUnit3 TestDecorators are represented as a TestSuite with a single test.
Used in:
Either a TestCase of a TestSuite
When this contains just a single TestCase
When this contains a TestSuite of test cases.
A test action, such as running a JUnit4 test binary.
Used in:
Timing data for execution of the test action.
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.
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.
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.
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.
Warnings for this test action.
Estimated memory consumption of the test action, in bytes. A default value of 0 means there is no memory consumption estimate specified.
Attributes that apply only to test actions under this target.
Used in:
Indicates how big the user indicated the test action was.
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.
Used in:
The implicit default enum value. Should never be set.
The test result was found in a local cache, so it wasn't run again.
The test result was found in a remote cache, so it wasn't run again.
The test result was not found in any cache, so it had to be run again.
The result of running a test case, as reported in a <testcase> element of an XML log.
Used in:
The name of the test case, as reported in the name attribute. For Java, this is normally the method name. Eg. "testBasic".
The name of the class in which the test case was defined, as reported in the classname attribute. For Java, this is normally the fully qualified class name. Eg. "com.google.common.hash.BloomFilterTest".
An enum reported in the result attribute that is used in conjunction with failures and errors below to report the outcome.
Failures reported in <failure> elements within this <testcase>.
Errors reported in <error> elements within this <testcase>.
The timing for the TestCase, as reported by the time attribute.
Arbitrary name-value pairs, as reported in custom attributes or in a <properties> element within this <testcase>. Multiple properties are allowed with the same key. Properties will be returned in lexicographical order by key.
Files produced by this test case, as reported by undeclared output annotations. 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.
The result of running a test case.
Used in:
The implicit default enum value. Do not use.
Test case ran to completion. Look for failures or errors to determine whether it passed, failed, or errored.
Test case started but did not complete because the test harness received a signal and decided to stop running tests.
Test case was not started because the test harness received a SIGINT or timed out.
Test case was not run because the user or process running the test specified a filter that excluded this test case.
Test case was not run to completion because the test case decided it should not be run (eg. due to a failed assumption in a JUnit4 test). Per-test setup or tear-down may or may not have run.
The test framework did not run the test case because it was labeled as suppressed. Eg. if someone temporarily disables a failing test.
Represents an exception that prevented a test case from completing, as reported in an <error> element within a <testcase>. For Java, multiple TestErrors are used to represent a chained exception.
Used in: ,
The exception message, as reported in the message attribute. Typically short, but may be multi-line. Eg. "argument cannot be null".
The type of the exception being thrown, reported in the type attribute. For Java, this is a fully qualified Throwable class name. Eg: "java.lang.IllegalArgumentException"
The stack trace reported as the content of the <error> element, often in a CDATA block. This contains one line for each stack frame, each including a method/function name, a class/file name, and a line number. Most recent call is usually first, but not for Python stack traces. May contain the exception_type and message.
Represents a violated assertion, as reported in a <failure> element within a <testcase>. Some languages allow assertions to be made without stopping the test case when they're violated, leading to multiple TestFailures. For Java, multiple TestFailures are used to represent a chained exception.
Used in: ,
The exception message reported in the message attribute. Typically short, but may be multi-line. Eg. "Expected 'foo' but was 'bar'".
The type of the exception being thrown, reported in the type attribute. Eg: "org.junit.ComparisonFailure"
The stack trace reported as the content of the <failure> element, often in a CDATA block. This contains one line for each stack frame, each including a method/function name, a class/file name, and a line number. Most recent call is usually first, but not for Python stack traces. May contain the exception_type and message.
The expected values. These values can be diffed against the actual values. Often, there is just one actual and one expected value. If there is more than one, they should be compared as an unordered collection.
The actual values. These values can be diffed against the expected values. Often, there is just one actual and one expected value. If there is more than one, they should be compared as an unordered collection.
Indicates how big the user indicated the test action was.
Used in:
Unspecified by the user.
Unit test taking less than 1 minute.
Integration tests taking less than 5 minutes.
End-to-end tests taking less than 15 minutes.
Even bigger than LARGE.
Something that doesn't fit into the above categories.
The result of running a test suite, as reported in a <testsuite> element of an XML log.
Used in: ,
The full name of this suite, as reported in the name attribute. For Java tests, this is normally the fully qualified class name. Eg. "com.google.common.hash.BloomFilterTest".
The results of the test cases and test suites contained in this suite, as reported in the <testcase> and <testsuite> elements contained within this <testsuite>.
Failures reported in <failure> elements within this <testsuite>.
Errors reported in <error> elements within this <testsuite>.
The timing for the entire TestSuite, as reported by the time attribute.
Arbitrary name-value pairs, as reported in custom attributes or in a <properties> element within this <testsuite>. Multiple properties are allowed with the same key. Properties will be returned in lexicographical order by key.
Files produced by this test suite, as reported by undeclared output annotations. 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.
Timing data for execution of a test action. The action may be performed locally, on the machine running the build, or remotely.
Used in:
Test timing for either a local or remote execution.
Used for local test actions.
Used for remote test actions.
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.
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.
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.
A warning from a test execution.
Used in:
Contains the message detailing the warning.
The timing of a particular Invocation, Action, etc. The start_time is specified, stop time can be calculated by adding duration to start_time.
Used in: , , , , ,
The time the resource started running. This is in UTC Epoch time.
The duration for which the resource ran.
If known, represents the state of the user/build-system workspace.
Used in:
(message has no fields)
Describes the workspace under which the tool was invoked, this includes information that was fed into the command, the source code referenced, and the tool itself.
Used in:
Data about the workspace that might be useful for debugging.
Where the tool was invoked
The client's working directory where the build/test was run from.
Tools should set tool_tag to the name of the tool or use case.
The command lines invoked. The first command line is the one typed by the user, then each one after that should be an expansion of the previous command line.