Get desktop application:
View/edit binary Protocol Buffers messages
This is the interface used to download information from the ResultStore database. Most APIs require setting a response FieldMask via the 'fields' URL query parameter or the X-Goog-FieldMask HTTP/gRPC header.
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.
Searches for invocations matching the given query parameters. Results will be ordered by timing.start_time with most recent first, but total ordering of results is not guaranteed when difference in timestamps is very small. Results may be stale. 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. May be rejected if too high.
A filtering query string. Only a limited number of fields and operators are supported. Not every field supports every operator. Fields that support equals ("=") restrictions: name status_attributes.status workspace_info.hostname Fields that support contains (":") restrictions: invocation_attributes.users invocation_attributes.labels Fields that support comparison ("<", "<=", ">", ">=") restrictions; timing.start_time Supported custom function global restrictions: propertyEquals("key", "value")
The project id to search under.
If true, all equals or contains restrictions on string fields in query will require exact match. Otherwise, a string field restriction may ignore case and punctuation.
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.
Retrieves the metadata for an 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.
Request passed into GetInvocationDownloadMetadata
The name of the download metadata to retrieve. It must match this format: invocations/${INVOCATION_ID}/downloadMetadata where INVOCATION_ID must be an RFC 4122-compliant random UUID.
The download metadata for an invocation
The name of the download metadata. Its format will be: invocations/${INVOCATION_ID}/downloadMetadata
Indicates the upload status of the invocation, whether it is post-processing, or immutable, etc.
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/${url_encode(CONFIGURATION_ID)}
Retrieves all configurations for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. The order in which results are returned is undefined, but stable. 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.
A filter to return only resources that match it. Any fields used in the filter must be also specified in the field mask. May cause pages with 0 results and a next_page_token to be returned.
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 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/${url_encode(TARGET_ID)}
Retrieves all targets for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. The order in which results are returned is undefined, but stable. 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.
A filter to return only resources that match it. Any fields used in the filter must be also specified in the field mask. May cause pages with 0 results and a next_page_token to be returned.
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.
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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}
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. The order in which results are returned is undefined, but stable. 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/${url_encode(TARGET_ID)} Supports '-' for ${TARGET_ID} meaning all targets.
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.
A filter to return only resources that match it. Any fields used in the filter must be also specified in the field mask. May cause pages with 0 results and a next_page_token to be returned.
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 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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}/actions/${url_encode(ACTION_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. The order in which results are returned is undefined, but stable. 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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)} Supports '-' for ${CONFIGURATION_ID} to mean all Actions for all Configurations for a Target, or '-' for ${TARGET_ID} and ${CONFIGURATION_ID} to mean all Actions for all Configurations and all Targets. Does not support ${TARGET_ID} '-' with a specified configuration.
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.
A filter to return only resources that match it. Any fields used in the filter must be also specified in the field mask. May cause pages with 0 results and a next_page_token to be returned.
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 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/${url_encode(FILE_SET_ID)}
Retrieves all file sets for a parent invocation. This might be limited by user or server, in which case a continuation token is provided. The order in which results are returned is undefined, but stable. 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.
A filter to return only resources that match it. Any fields used in the filter must be also specified in the field mask. May cause pages with 0 results and a next_page_token to be returned.
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.
Returns the transitive closure of FileSets. This might be limited by user or server, in which case a continuation token is provided. The order in which results are returned is undefined, and unstable. An error will be reported in the following cases: - If page_token is too large to continue the calculation. - If the resource is not found. - If the given resource name is badly formatted. - If no field mask was given.
Request passed into TraverseFileSets
The name of the resource to traverse. It must match one of the following formats: invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)} This returns the transitive closure of FileSets referenced by the given FileSet, including itself. invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIGURATION_ID)}/actions/${url_encode(ACTION_ID)} This returns the transitive closure of FileSets referenced by the given Action. If ${ACTION_ID} is "-", this returns the transitive closure of FileSets referenced by all Actions under the given ConfiguredTarget.
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. Page tokens will become larger with every page returned, and if a page token becomes too large, it will no longer be possible to continue to calculate the transitive dependencies. The API will return a 400 Bad request (HTTPS), or a INVALID_ARGUMENT (gRPC ) when this happens.
Absolute number of results to skip. Not yet implemented. 0 for default.
Response from calling TraverseFileSets
File sets matching the request. The order in which results are returned is undefined, but stable.
Token to retrieve the next page of results, or empty if there are no more results in the list.
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.
Only applies if the referenced file is a known archive type (ar, jar, zip) The above read_offset and read_limit fields are applied to this entry. If this file is not an archive, INVALID_ARGUMENT is thrown.
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.
Only applies if the referenced file is a known archive type (ar, jar, zip) The above read_offset and read_limit fields are applied to this entry. If this file is not an archive, INVALID_ARGUMENT is thrown.
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. This interface intentionally does not support user read-modify-write operations. They may corrupt data, and are too expensive. For the same reason, all upload RPCs will return no resource fields except name and ID. An uploader should hold as little state as possible in memory to avoid running out of memory.
Creates the given invocation. 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 Unicode characters.
The invocation ID. It is optional, but strongly recommended. 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-finalized if they are not modified for 24 hours. If you need auto-finalize to happen sooner, set this field to the time you'd like auto-finalize to occur.
Client provided unique token for batch upload to ensure data integrity and to provide a way to resume batch upload in case of a distributed failure on the client side. The standard uploading client is presumed to have many machines uploading to ResultStore, and that any given machine could process any given Invocation at any time. This field is used to coordinate between the client's machines, resolve concurrency issues, and enforce "exactly once" semantics on each batch within the upload. The typical usage of the resume_token is that it should contain a "key" indicating to the client where it is in the upload process, so that the client can use it to resume the upload by reconstructing the state of upload from the point where it was interrupted. If this matches the previously uploaded resume_token, then this request will silently do nothing, making CreateInvocation idempotent. If this token is provided, all further upload RPCs must be done through UploadBatch. This token must not be combined with request_id. Must be web safe Base64 encoded bytes.
Client-specific data used to resume batch upload if an error occurs and retry is needed. This serves a role closely related to resume_token, as both fields may be used to provide state required to restore a Batch Upload, but they differ in two important aspects: - it is not compared to previous values, and as such does not provide concurrency control; - it allows for a larger payload, since the contents are never inspected/compared; The size of the message must be within 1 MiB. Too large requests will be rejected.
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 finalized. - 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 merge update to the invocation identified by the given proto's name. For primitive and message fields, replaces them with the ones in the given proto if they are covered under the field mask paths. For repeated fields, merges to them with the given ones if they are covered under the field mask paths. 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 the invocation does not exist. - If the invocation is finalized. - If no field mask was given.
Request passed into MergeInvocation
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 Unicode characters.
Contains the name and the fields of the invocation to be merged. The name format must be: invocations/${INVOCATION_ID}
Indicates which fields to merge.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
Touches the invocation identified by the given proto's name. This is useful when you need to notify ResultStore that you haven't abandoned the upload, since abandoned uploads will be automatically finalized after a set period. An error will be reported in the following cases: - If the invocation does not exist. - If the invocation is finalized.
Request passed into TouchInvocation
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 TouchInvocation
The name of the invocation. Its format will be: invocations/${INVOCATION_ID}
The resource ID components that identify the Invocation.
Declares the invocation with the given name as finalized and immutable by the user. It may still be mutated by post-processing. 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 FinalizeInvocation
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 FinalizeInvocation
The name of the invocation. Its format will be: invocations/${INVOCATION_ID}
The resource ID components that identify the Invocation.
Deletes an immutable invocation (permanently) Note: this does not delete indirect data, e.g. files stored in other services. An error will be reported in the following cases: - If the invocation does not exist. - If the invocation is not finalized. This can be retried until it is.
Request passed into DeleteInvocation
The name of the invocation. Its format must be: invocations/${INVOCATION_ID}
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 finalized. - 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 Unicode characters.
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 string up to 1024 Unicode characters 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.
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 finalized. - 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/${url_encode(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.
If true then the Update operation will become a Create operation if the Target is NOT_FOUND.
Applies a merge update to the target identified by the given proto's name. For primitive and message fields, replaces them with the ones in the given proto if they are covered under the field mask paths. For repeated fields, merges to them with the given ones if they are covered under the field mask paths. 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 the target does not exist. - If the target or parent invocation is finalized. - If no field mask was given.
Request passed into MergeTarget
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 Unicode characters.
Contains the name and the fields of the target to be merged. The name format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
Indicates which fields to merge.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
If true then the Merge operation will become a Create operation if the Target is NOT_FOUND.
Declares the target with the given name as finalized and immutable by the user. It may still be mutated by post-processing. This is an implicitly idempotent API. An error will be reported in the following cases: - If the target does not exist.
Request passed into FinalizeTarget
The name of the target. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(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 FinalizeTarget
The name of the target. Its format will be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}
The resource ID components that identify the Target.
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 finalized.
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 Unicode characters.
The name of the parent target in which the configured target is created. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(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.
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 finalized. - 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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(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.
If true then the Update operation will become a Create operation if the ConfiguredTarget is NOT_FOUND.
Applies a merge update to the configured target identified by the given proto's name. For primitive and message fields, replaces them with the ones in the given proto if they are covered under the field mask paths. For repeated fields, merges to them with the given ones if they are covered under the field mask paths. 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 the configured target does not exist. - If the parent target or invocation is finalized. - If no field mask was given.
Request passed into MergeConfiguredTarget
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 Unicode characters.
Contains the name and the fields of the configured target to be merged. The name format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
Indicates which fields to merge.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
If true then the Merge operation will become a Create operation if the ConfiguredTarget is NOT_FOUND.
Declares the configured target with the given name as finalized and immutable by the user. It may still be mutated by post-processing. 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 FinalizeConfiguredTarget
The name of the configured target. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(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 FinalizeConfiguredTarget
The name of the configured target. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
The resource ID components that identify the ConfiguredTarget.
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 finalized. - 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 Unicode characters.
The name of the parent configured target in which the action is created. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}
The action identifier. It can be any string up to 512 Unicode characters long, except for the reserved id '-'. Recommended IDs for Test Actions: "test": For a single test action. "test_shard0_run0_attempt0" ... "test_shard9_run9_attempt9": For tests with shard/run/attempts. Recommended IDs for Build Actions: "build": If you only have a single build action.
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.
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 finalized. - 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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}/actions/${url_encode(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.
If true then the Update operation will become a Create operation if the Action is NOT_FOUND.
Applies a merge update to the action identified by the given proto's name. For primitive and message fields, replaces them with the ones in the given proto if they are covered under the field mask paths. For repeated fields, merges to them with the given ones if they are covered under the field mask paths. 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 the action does not exist. - If the parent target or invocation is finalized. - If no field mask was given.
Request passed into MergeAction
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 Unicode characters.
Contains the name and the fields of the action to be merged. The name format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}/actions/${url_encode(ACTION_ID)}
Indicates which fields to merge.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
If true then the Merge operation will become a Create operation if the Action is NOT_FOUND.
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 finalized. - 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 Unicode characters.
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 string up to 256 Unicode characters 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.
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 finalized. - 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/${url_encode(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.
If true then the Update operation will become a Create operation if the Configuration is NOT_FOUND.
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 finalized.
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 Unicode characters.
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 string up to 256 Unicode characters 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.
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 finalized. - 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/${url_encode(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.
If true then the Update operation will become a Create operation if the FileSet is NOT_FOUND.
Applies a merge update to the file set identified by the given proto's name. For primitive and message fields, updates them with the ones in the given proto if they are covered under the field mask paths. For repeated fields, merges to them with the given ones if they are covered under the field mask paths. 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 the file set does not exist. - If the parent invocation is finalized. - If a given field mask path is not valid. - If no field mask was given.
Request passed into MergeFileSet
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 Unicode characters.
Contains the name and fields of the file set to be merged. The name format must be: invocations/${INVOCATION_ID}/fileSets/${url_encode(FILE_SET_ID)}
Indicates which fields to merge.
This is a token to authorize access to this invocation. It must be set to the same value that was provided in the CreateInvocationRequest.
If true then the Merge operation will become a Create operation if the FileSet is NOT_FOUND.
This is the RPC used for batch upload. It supports uploading multiple resources for an invocation in a transaction safe manner. To use this RPC, the CreateInvocationRequest must have been provided a resume_token. Combining batch upload with normal upload on a single Invocation is not supported. If an Invocation is created with a resume_token, all further calls must be through UploadBatch. If an Invocation is created without resume_token normal upload, all further upload calls must be through normal upload RPCs.
Request passed into UploadBatch
Required. The name of the invocation being modified. The name format must be: invocations/${INVOCATION_ID}
Required. A UUID that must match the value provided in CreateInvocationRequest.
Required. The token of this batch, that will be committed in this UploadBatchRequest. If this matches the previously uploaded resume_token, then this request will silently do nothing. See CreateInvocationRequest.initial_resume_token for more information. Must be web safe Base64 encoded bytes.
Required. The token of the previous batch that was committed in a UploadBatchRequest. This will be checked after next_resume_token match is checked. If this does not match the previously uploaded resume_token, a 409 Conflict (HTTPS) or ABORTED (gRPC ) error code indicating a concurrency failure will be returned, and that the user should call GetInvocationUploadMetadata to fetch the current resume_token to reconstruct the state of the upload to resume it. See CreateInvocationRequest.initial_resume_token for more information. Must be web safe Base64 encoded bytes.
Client-specific data used to resume batch upload if an error occurs and retry is needed. This serves a role closely related to resume_token, as both fields may be used to provide state required to restore a Batch Upload, but they differ in two important aspects: - it is not compared to previous values, and as such does not provide concurrency control; - it allows for a larger payload, since the contents are never inspected/compared; The size of the message must be within 1 MiB. Too large requests will be rejected.
The individual upload requests for this batch. The recommend total size for a batch is 10 MiB. Too large requests may be rejected. This field may be empty, allowing this RPC to be used like TouchInvocation.
Response for UploadBatch
(message has no fields)
Provides a way to read the metadata for an invocation. The UploadMetadata could still be retrieved by this RPC even the Invocation has been finalized. This API requires setting a response FieldMask via 'fields' URL query parameter or X-Goog-FieldMask HTTP/gRPC header. An error will be reported in the following case: - If the invocation does not exist. - If no field mask was given.
Request passed into GetInvocationUploadMetadata
Required The name of the UploadMetadata being requested. The name format must be: invocations/${INVOCATION_ID}/uploadMetadata
Required. A UUID that must match the value provided in CreateInvocationRequest.
The upload metadata for an invocation
The name of the upload metadata. Its format will be: invocations/${INVOCATION_ID}/uploadMetadata
The resume token of the last batch that was committed in the most recent batch upload. More information with resume_token could be found in resultstore_upload.proto
Client-specific data used to resume batch upload if an error occurs and retry action is needed.
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 at least one test action should be created to represent the test result, if any.
Used as response type in: ResultStoreDownload.GetAction, ResultStoreUpload.CreateAction, ResultStoreUpload.MergeAction, ResultStoreUpload.UpdateAction
Used as field type in:
, , , ,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.
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. 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
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}
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.
Describes aggregate code coverage for a collection of build or test Actions. A line or branch is covered if and only if it is covered in any of the build or test actions.
Used in:
Aggregated coverage info for all source files that the actions cover.
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 branch. Divide branch number by 8 to get index into byte array. Mod branch 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/${url_encode(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.
A human-readable name for Configuration. It is recommended that this name be unique. If omitted, the configuration_id should be used as display_name instead.
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.MergeConfiguredTarget, ResultStoreUpload.UpdateConfiguredTarget
Used as field type in:
, , , ,The resource name. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(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/${url_encode(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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(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/${url_encode(TARGET_ID)}/configuredTargets/${url_encode(CONFIG_ID)}/actions/${url_encode(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.
File is empty but was expected to have content.
Stores errors reading or parsing a file during post-processing.
Used in:
,The uid of the File being read or parsed.
What went wrong.
This resource represents a set of Files and other (nested) FileSets. A FileSet is a node in the graph, and the file_sets field represents the outgoing edges. A resource may reference various nodes in the graph to represent the transitive closure of all files from those nodes. The FileSets must form a directed acyclic graph. The Upload API is unable to enforce that the graph is acyclic at write time, and if cycles are written, it may cause issues at read time. A FileSet may be referenced by other resources in conjunction with Files. A File is preferred for something that can only be ever referenced by one resource, and a FileSet is preferred if it can be reference by multiple resources.
Used as response type in: ResultStoreDownload.GetFileSet, ResultStoreUpload.CreateFileSet, ResultStoreUpload.MergeFileSet, ResultStoreUpload.UpdateFileSet
Used as field type in:
, , , , ,The format of this FileSet resource name must be: invocations/${INVOCATION_ID}/fileSets/${url_encode(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 uid field in the file should be unique for the Invocation.
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.MergeInvocation, 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. 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. build.log: The primary log for the Invocation. coverage_report.lcov: Aggregate coverage report for the invocation.
Summary of aggregate coverage across all Actions in this Invocation. If missing, this data will be populated by the server from the coverage_report.lcov file or the union of all ActionCoverages under this invocation (in that order).
Aggregate code coverage for all build and test Actions within this Invocation. If missing, this data will be populated by the server from the coverage_report.lcov file or the union of all ActionCoverages under this invocation (in that order).
NOT IMPLEMENTED. 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 Invocation.
Used in:
, ,The Invocation ID.
Attributes that apply to all invocations.
Used in:
Immutable. The Cloud Project that owns this invocation (this is different than the Consumer Cloud Project that calls this API). 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. For example, this might contain just the user that ran a Bazel command, or a robot that tested a change as part of a CI system. It could also contain the user that manually triggered a CI test, then the robot that ran the test.
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 a list of words describing the Invocation. Labels should be short, easy to read, and you shouldn't have more than a handful. 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
Extensible Markup Language
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.MergeTarget, ResultStoreUpload.UpdateTarget
Used as field type in:
, , , ,The resource name. Its format must be: invocations/${INVOCATION_ID}/targets/${url_encode(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.
The individual upload requests for this batch.
Used in:
The resource ID components that identify the resource being uploaded.
The operation for the request (e.g. Create(), Update(), etc.)
Required for Update and Merge operations. Ignored for Create and Finalize operations. Masks the fields of the resource being uploaded. Provides support for a more granular upload. FieldMask must match one of the follow patterns, where * means any single field name: Invocation: [*, status_attributes.*, timing.*, invocation_attributes.*, workspace_info.*]. Target: [*, status_attributes.*, timing.*]. Configuration: [*, status_attributes.*]. ConfiguredTarget: [*, status_attributes.*]. Action: [*, status_attributes.*, timing.*, test_action.test_suite, test_action.infrastructure_failure_info]. FileSet: [*].
If true then the Update, Merge operation will become a Create operation if the resource is NOT_FOUND. Not supported for Invocation resource.
The proto of the resource being uploaded.
The Invocation Resource
The Target Resource
The Configuration Resource
The ConfiguredTarget Resource
The Action Resource
The FileSet Resource
The resource ID components that identify the resource being uploaded.
Used in:
Required for Target, ConfiguredTarget, or Action. The Target ID.
Required for Configuration, ConfiguredTarget, or Action. The Configuration ID.
Required for Action. The Action ID.
Required for FileSet. The FileSet ID.
The operation for the request (e.g. Create(), Update(), etc.)
Used in:
Unspecified
Create the given resources. For more information, check the Create APIs.
Applies a standard update to the resource identified by the given proto's name. For more information, see the Update APIs. UploadBatch does not support arbitrary field masks. The list of allowed field masks can be found below.
Applies an merge update to the resource identified by the given proto's name. For more information, see the Merge APIs. Currently, only the "files" and "file_processing_errors" fields are supported by this operation.
Declares the resource with the given name as finalized and immutable by the uploader. Only supported for Invocation, Target, ConfiguredTarget. There must be no operation on child resources after parent resource is Finalized. If there is a Finalize of Invocation, it must be the final UploadRequest. For more information, see the Finalize APIs. An empty resource should be provided below.
Indicates the upload status of the invocation, whether it is post-processing, or immutable, etc.
Used in:
The implicit default enum value. Should never be set.
The invocation is still uploading to the ResultStore.
The invocation upload is complete. The ResultStore is still post-processing the invocation.
All post-processing is complete, and the invocation is now immutable.
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.