blob: 04aedd7f7b64f45723f5bdade19038ed40233ee7 [file] [log] [blame]
<html><body>
<style>
body, h1, h2, h3, div, span, p, pre, a {
margin: 0;
padding: 0;
border: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
font-family: inherit;
vertical-align: baseline;
}
body {
font-size: 13px;
padding: 1em;
}
h1 {
font-size: 26px;
margin-bottom: 1em;
}
h2 {
font-size: 24px;
margin-bottom: 1em;
}
h3 {
font-size: 20px;
margin-bottom: 1em;
margin-top: 1em;
}
pre, code {
line-height: 1.5;
font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}
pre {
margin-top: 0.5em;
}
h1, h2, h3, p {
font-family: Arial, sans serif;
}
h1, h2, h3 {
border-bottom: solid #CCC 1px;
}
.toc_element {
margin-top: 0.5em;
}
.firstline {
margin-left: 2 em;
}
.method {
margin-top: 1em;
border: solid 1px #CCC;
padding: 1em;
background: #EEE;
}
.details {
font-weight: bold;
font-size: 14px;
}
</style>
<h1><a href="toolresults_v1beta3.html">Cloud Tool Results API</a> . <a href="toolresults_v1beta3.projects.html">projects</a> . <a href="toolresults_v1beta3.projects.histories.html">histories</a> . <a href="toolresults_v1beta3.projects.histories.executions.html">executions</a> . <a href="toolresults_v1beta3.projects.histories.executions.steps.html">steps</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="toolresults_v1beta3.projects.histories.executions.steps.perfMetricsSummary.html">perfMetricsSummary()</a></code>
</p>
<p class="firstline">Returns the perfMetricsSummary Resource.</p>
<p class="toc_element">
<code><a href="toolresults_v1beta3.projects.histories.executions.steps.perfSampleSeries.html">perfSampleSeries()</a></code>
</p>
<p class="firstline">Returns the perfSampleSeries Resource.</p>
<p class="toc_element">
<code><a href="toolresults_v1beta3.projects.histories.executions.steps.testCases.html">testCases()</a></code>
</p>
<p class="firstline">Returns the testCases Resource.</p>
<p class="toc_element">
<code><a href="toolresults_v1beta3.projects.histories.executions.steps.thumbnails.html">thumbnails()</a></code>
</p>
<p class="firstline">Returns the thumbnails Resource.</p>
<p class="toc_element">
<code><a href="#accessibilityClusters">accessibilityClusters(name, locale=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists accessibility clusters for a given Step</p>
<p class="toc_element">
<code><a href="#create">create(projectId, historyId, executionId, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a Step.</p>
<p class="toc_element">
<code><a href="#get">get(projectId, historyId, executionId, stepId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a Step.</p>
<p class="toc_element">
<code><a href="#getPerfMetricsSummary">getPerfMetricsSummary(projectId, historyId, executionId, stepId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a PerfMetricsSummary.</p>
<p class="toc_element">
<code><a href="#list">list(projectId, historyId, executionId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Steps for a given Execution.</p>
<p class="toc_element">
<code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
<code><a href="#patch">patch(projectId, historyId, executionId, stepId, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing Step with the supplied partial entity.</p>
<p class="toc_element">
<code><a href="#publishXunitXmlFiles">publishXunitXmlFiles(projectId, historyId, executionId, stepId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Publish xml files to an existing Step.</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="accessibilityClusters">accessibilityClusters(name, locale=None, x__xgafv=None)</code>
<pre>Lists accessibility clusters for a given Step
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to read project
- INVALID_ARGUMENT - if the request is malformed
- FAILED_PRECONDITION - if an argument in the request happens to be
invalid; e.g. if the locale format is incorrect
- NOT_FOUND - if the containing Step does not exist
Args:
name: string, A full resource name of the step.
For example, projects/my-project/histories/bh.1234567890abcdef/executions/
1234567890123456789/steps/bs.1234567890abcdef
Required. (required)
locale: string, The accepted format is the canonical Unicode format with hyphen as a
delimiter. Language must be lowercase, Language Script - Capitalized,
Region - UPPERCASE.
See http://www.unicode.org/reports/tr35/#Unicode_locale_identifier for
details.
Required.
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # Response message for AccessibilityService.ListStepAccessibilityClusters.
&quot;clusters&quot;: [ # A sequence of accessibility suggestions, grouped into clusters.
# Within the sequence, clusters that belong to the same SuggestionCategory
# should be adjacent.
# Within each category, clusters should be ordered by their
# SuggestionPriority (ERRORs first).
# The categories should be ordered by their highest priority cluster.
{ # A set of similar suggestions that we suspect are closely related.
#
# This proto and most of the nested protos are branched from
# foxandcrown.prelaunchreport.service.SuggestionClusterProto, replacing PLR&#x27;s
# dependencies with FTL&#x27;s.
&quot;category&quot;: &quot;A String&quot;, # Category in which these types of suggestions should appear.
# Always set.
&quot;suggestions&quot;: [ # A sequence of suggestions. All of the suggestions within a cluster must
# have the same SuggestionPriority and belong to the same SuggestionCategory.
# Suggestions with the same screenshot URL should be adjacent.
{
&quot;screenId&quot;: &quot;A String&quot;, # ID of the screen for the suggestion.
# It is used for getting the corresponding screenshot path. For example,
# screen_id &quot;1&quot; corresponds to &quot;1.png&quot; file in GCS.
# Always set.
&quot;secondaryPriority&quot;: 3.14, # Relative importance of a suggestion as compared with other suggestions
# that have the same priority and category.
# This is a meaningless value that can be used to order suggestions that are
# in the same category and have the same priority.
# The larger values have higher priority (i.e., are more important).
# Optional.
&quot;shortMessage&quot;: { # IMPORTANT: It is unsafe to accept this message from an untrusted source, # Concise message, in the user&#x27;s language, representing the suggestion,
# which may contain markup.
# Always set.
# since it&#x27;s trivial for an attacker to forge serialized messages that
# don&#x27;t fulfill the type&#x27;s safety contract -- for example, it could contain
# attacker controlled script. A system which receives a SafeHtmlProto
# implicitly trusts the producer of the SafeHtmlProto. So, it&#x27;s generally safe
# to return this message in RPC responses, but generally unsafe to accept it
# in RPC requests.
&quot;privateDoNotAccessOrElseSafeHtmlWrappedValue&quot;: &quot;A String&quot;, # IMPORTANT: Never set or read this field, even from tests, it is private.
# See documentation at the top of .proto file for programming language
# packages with which to create or read this message.
},
&quot;longMessage&quot;: { # IMPORTANT: It is unsafe to accept this message from an untrusted source, # Message, in the user&#x27;s language, explaining the suggestion, which may
# contain markup.
# Always set.
# since it&#x27;s trivial for an attacker to forge serialized messages that
# don&#x27;t fulfill the type&#x27;s safety contract -- for example, it could contain
# attacker controlled script. A system which receives a SafeHtmlProto
# implicitly trusts the producer of the SafeHtmlProto. So, it&#x27;s generally safe
# to return this message in RPC responses, but generally unsafe to accept it
# in RPC requests.
&quot;privateDoNotAccessOrElseSafeHtmlWrappedValue&quot;: &quot;A String&quot;, # IMPORTANT: Never set or read this field, even from tests, it is private.
# See documentation at the top of .proto file for programming language
# packages with which to create or read this message.
},
&quot;helpUrl&quot;: &quot;A String&quot;, # Reference to a help center article concerning this type of suggestion.
# Always set.
&quot;priority&quot;: &quot;A String&quot;, # Relative importance of a suggestion.
# Always set.
&quot;pseudoResourceId&quot;: &quot;A String&quot;, # A somewhat human readable identifier of the source view, if it does not
# have a resource_name. This is a path within the accessibility hierarchy,
# an element with resource name; similar to an XPath.
&quot;region&quot;: { # A rectangular region. # Region within the screenshot that is relevant to this suggestion.
# Optional.
&quot;leftPx&quot;: 42, # The left side of the rectangle, in pixels.
# Always set.
&quot;heightPx&quot;: 42, # The height, in pixels.
# Always set.
&quot;topPx&quot;: 42, # The top of the rectangle, in pixels.
# Always set.
&quot;widthPx&quot;: 42, # The width, in pixels.
# Always set.
},
&quot;resourceName&quot;: &quot;A String&quot;, # Reference to a view element, identified by its resource name, if it has
# one.
&quot;title&quot;: &quot;A String&quot;, # General title for the suggestion, in the user&#x27;s language, without markup.
# Always set.
},
],
},
],
&quot;name&quot;: &quot;A String&quot;, # A full resource name of the step.
# For example, projects/my-project/histories/bh.1234567890abcdef/executions/
# 1234567890123456789/steps/bs.1234567890abcdef
#
# Always presents.
}</pre>
</div>
<div class="method">
<code class="details" id="create">create(projectId, historyId, executionId, body=None, requestId=None, x__xgafv=None)</code>
<pre>Creates a Step.
The returned Step will have the id set.
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to write to project
- INVALID_ARGUMENT - if the request is malformed
- FAILED_PRECONDITION - if the step is too large (more than 10Mib)
- NOT_FOUND - if the containing Execution does not exist
Args:
projectId: string, Required. A Project id. (required)
historyId: string, Required. A History id. (required)
executionId: string, Required. An Execution id. (required)
body: object, The request body.
The object takes the form of:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}
requestId: string, A unique request ID for server to detect duplicated requests.
For example, a UUID.
Optional, but strongly recommended.
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}</pre>
</div>
<div class="method">
<code class="details" id="get">get(projectId, historyId, executionId, stepId, x__xgafv=None)</code>
<pre>Gets a Step.
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to read project
- INVALID_ARGUMENT - if the request is malformed
- NOT_FOUND - if the Step does not exist
Args:
projectId: string, A Project id.
Required. (required)
historyId: string, A History id.
Required. (required)
executionId: string, A Execution id.
Required. (required)
stepId: string, A Step id.
Required. (required)
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}</pre>
</div>
<div class="method">
<code class="details" id="getPerfMetricsSummary">getPerfMetricsSummary(projectId, historyId, executionId, stepId, x__xgafv=None)</code>
<pre>Retrieves a PerfMetricsSummary.
May return any of the following error code(s):
- NOT_FOUND - The specified PerfMetricsSummary does not exist
Args:
projectId: string, The cloud project (required)
historyId: string, A tool results history ID. (required)
executionId: string, A tool results execution ID. (required)
stepId: string, A tool results step ID. (required)
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # A summary of perf metrics collected and performance environment info
&quot;stepId&quot;: &quot;A String&quot;, # A tool results step ID.
# @OutputOnly
&quot;graphicsStats&quot;: { # Graphics statistics for the App. # Graphics statistics for the entire run. Statistics are reset at the
# beginning of the run and collected at the end of the run.
# The information is collected from &#x27;adb shell dumpsys graphicsstats&#x27;.
# For more info see:
# https://developer.android.com/training/testing/performance.html
# Statistics will only be present for API 23+.
&quot;highInputLatencyCount&quot;: &quot;A String&quot;, # Total &quot;high input latency&quot; events.
&quot;p50Millis&quot;: &quot;A String&quot;, # 50th percentile frame render time in milliseconds.
&quot;slowUiThreadCount&quot;: &quot;A String&quot;, # Total &quot;slow UI thread&quot; events.
&quot;slowDrawCount&quot;: &quot;A String&quot;, # Total &quot;slow draw&quot; events.
&quot;missedVsyncCount&quot;: &quot;A String&quot;, # Total &quot;missed vsync&quot; events.
&quot;jankyFrames&quot;: &quot;A String&quot;, # Total frames with slow render time. Should be &lt;= total_frames.
&quot;totalFrames&quot;: &quot;A String&quot;, # Total frames rendered by package.
&quot;p99Millis&quot;: &quot;A String&quot;, # 99th percentile frame render time in milliseconds.
&quot;buckets&quot;: [ # Histogram of frame render times. There should be 154 buckets ranging from
# [5ms, 6ms) to [4950ms, infinity)
{
&quot;frameCount&quot;: &quot;A String&quot;, # Number of frames in the bucket.
&quot;renderMillis&quot;: &quot;A String&quot;, # Lower bound of render time in milliseconds.
},
],
&quot;slowBitmapUploadCount&quot;: &quot;A String&quot;, # Total &quot;slow bitmap upload&quot; events.
&quot;p90Millis&quot;: &quot;A String&quot;, # 90th percentile frame render time in milliseconds.
&quot;p95Millis&quot;: &quot;A String&quot;, # 95th percentile frame render time in milliseconds.
},
&quot;appStartTime&quot;: {
&quot;fullyDrawnTime&quot;: { # # Optional. The time from app start to reaching the developer-reported
# &quot;fully drawn&quot; time. This is only stored if the app includes a call to
# Activity.reportFullyDrawn(). See
# https://developer.android.com/topic/performance/launch-time.html#time-full
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;initialDisplayTime&quot;: { # # The time from app start to the first displayed activity being drawn,
# as reported in Logcat. See
# https://developer.android.com/topic/performance/launch-time.html#time-initial
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
&quot;projectId&quot;: &quot;A String&quot;, # The cloud project
# @OutputOnly
&quot;historyId&quot;: &quot;A String&quot;, # A tool results history ID.
# @OutputOnly
&quot;perfEnvironment&quot;: { # Encapsulates performance environment info # Describes the environment in which the performance metrics were collected
&quot;cpuInfo&quot;: { # CPU related environment info
&quot;cpuProcessor&quot;: &quot;A String&quot;, # description of the device processor ie &#x27;1.8 GHz hexa core 64-bit ARMv8-A&#x27;
&quot;numberOfCores&quot;: 42, # the number of CPU cores
&quot;cpuSpeedInGhz&quot;: 3.14, # the CPU clock speed in GHz
},
&quot;memoryInfo&quot;: { # Memory related environment info
&quot;memoryTotalInKibibyte&quot;: &quot;A String&quot;, # Total memory available on the device in KiB
&quot;memoryCapInKibibyte&quot;: &quot;A String&quot;, # Maximum memory that can be allocated to the process in KiB
},
},
&quot;perfMetrics&quot;: [ # Set of resource collected
&quot;A String&quot;,
],
&quot;executionId&quot;: &quot;A String&quot;, # A tool results execution ID.
# @OutputOnly
}</pre>
</div>
<div class="method">
<code class="details" id="list">list(projectId, historyId, executionId, pageSize=None, pageToken=None, x__xgafv=None)</code>
<pre>Lists Steps for a given Execution.
The steps are sorted by creation_time in descending order. The
step_id key will be used to order the steps with the same
creation_time.
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to read project
- INVALID_ARGUMENT - if the request is malformed
- FAILED_PRECONDITION - if an argument in the request happens to be
invalid; e.g. if an attempt is made to list the
children of a nonexistent Step
- NOT_FOUND - if the containing Execution does not exist
Args:
projectId: string, A Project id.
Required. (required)
historyId: string, A History id.
Required. (required)
executionId: string, A Execution id.
Required. (required)
pageSize: integer, The maximum number of Steps to fetch.
Default value: 25. The server will use this default if the field is not set
or has a value of 0.
Optional.
pageToken: string, A continuation token to resume the query at the next item.
Optional.
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # Response message for StepService.List.
&quot;steps&quot;: [ # Steps.
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
},
],
&quot;nextPageToken&quot;: &quot;A String&quot;, # A continuation token to resume the query at the next item.
#
# If set, indicates that there are more steps to read, by calling list again
# with this value in the page_token field.
}</pre>
</div>
<div class="method">
<code class="details" id="list_next">list_next(previous_request, previous_response)</code>
<pre>Retrieves the next page of results.
Args:
previous_request: The request for the previous page. (required)
previous_response: The response from the request for the previous page. (required)
Returns:
A request object that you can call &#x27;execute()&#x27; on to request the next
page. Returns None if there are no more items in the collection.
</pre>
</div>
<div class="method">
<code class="details" id="patch">patch(projectId, historyId, executionId, stepId, body=None, requestId=None, x__xgafv=None)</code>
<pre>Updates an existing Step with the supplied partial entity.
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to write project
- INVALID_ARGUMENT - if the request is malformed
- FAILED_PRECONDITION - if the requested state transition is illegal
(e.g try to upload a duplicate xml file), if the
updated step is too large (more than 10Mib)
- NOT_FOUND - if the containing Execution does not exist
Args:
projectId: string, A Project id.
Required. (required)
historyId: string, A History id.
Required. (required)
executionId: string, A Execution id.
Required. (required)
stepId: string, A Step id.
Required. (required)
body: object, The request body.
The object takes the form of:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}
requestId: string, A unique request ID for server to detect duplicated requests.
For example, a UUID.
Optional, but strongly recommended.
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}</pre>
</div>
<div class="method">
<code class="details" id="publishXunitXmlFiles">publishXunitXmlFiles(projectId, historyId, executionId, stepId, body=None, x__xgafv=None)</code>
<pre>Publish xml files to an existing Step.
May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to write project
- INVALID_ARGUMENT - if the request is malformed
- FAILED_PRECONDITION - if the requested state transition is illegal,
e.g try to upload a duplicate xml file or a file too large.
- NOT_FOUND - if the containing Execution does not exist
Args:
projectId: string, A Project id.
Required. (required)
historyId: string, A History id.
Required. (required)
executionId: string, A Execution id.
Required. (required)
stepId: string, A Step id.
Note: This step must include a TestExecutionStep.
Required. (required)
body: object, The request body.
The object takes the form of:
{ # Request message for StepService.PublishXunitXmlFiles.
&quot;xunitXmlFiles&quot;: [ # URI of the Xunit XML files to publish.
#
# The maximum size of the file this reference is pointing to is 50MB.
#
# Required.
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
}
x__xgafv: string, V1 error format.
Allowed values
1 - v1 error format
2 - v2 error format
Returns:
An object of the form:
{ # A Step represents a single operation performed as part of
# Execution. A step can be used to represent the execution of a tool (
# for example a test runner execution or an execution of a compiler).
#
# Steps can overlap (for instance two steps might have the same
# start time if some operations are done in parallel).
#
# Here is an example, let&#x27;s consider that we have a continuous build is
# executing a test runner for each iteration. The workflow would look like:
# - user creates a Execution with id 1
# - user creates an TestExecutionStep with id 100 for Execution 1
# - user update TestExecutionStep with id 100 to add a raw xml log
# + the service parses the xml logs and returns a TestExecutionStep with
# updated TestResult(s).
# - user update the status of TestExecutionStep with id 100 to COMPLETE
#
# A Step can be updated until its state is set to COMPLETE at which
# points it becomes immutable.
#
# Next tag: 27
&quot;runDuration&quot;: { # # How long it took for this step to run.
#
# If unset, this is set to the difference between creation_time and
# completion_time when the step is set to the COMPLETE state. In some cases,
# it is appropriate to set this value separately: For instance, if a step is
# created, but the operation it represents is queued for a few minutes before
# it executes, it would be appropriate not to include the time spent queued
# in its run_duration.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# run_duration on a step which already has this field set.
#
# - In response: present if previously set; always present on COMPLETE step
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step was created.
#
# - In response: always set
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;completionTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The time when the step status was set to complete.
#
# This value will be set automatically when state transitions to
# COMPLETE.
#
# - In response: set if the execution state is COMPLETE.
# - In create/update request: never set
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;multiStep&quot;: { # Details when multiple steps are run with the same configuration as a group. # Details when multiple steps are run with the same configuration as a group.
# These details can be used identify which group this step is part of.
# It also identifies the groups &#x27;primary step&#x27; which indexes all the group
# members.
#
# - In response: present if previously set.
# - In create request: optional, set iff this step was performed more than
# once.
# - In update request: optional
&quot;primaryStep&quot;: { # Stores rollup test status of multiple steps that were run as a group and # Present if it is a primary (original) step.
# outcome of each individual step.
&quot;rollUp&quot;: &quot;A String&quot;, # Rollup test status of multiple steps that were run with the same
# configuration as a group.
&quot;individualOutcome&quot;: [ # Step Id and outcome of each individual step.
{ # Step Id and outcome of each individual step that was run as a group with
# other steps with the same configuration.
&quot;runDuration&quot;: { # # How long it took for this step to run.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;outcomeSummary&quot;: &quot;A String&quot;,
&quot;stepId&quot;: &quot;A String&quot;,
},
],
},
&quot;multistepNumber&quot;: 42, # Unique int given to each step.
# Ranges from 0(inclusive) to total number of steps(exclusive).
# The primary step is 0.
&quot;primaryStepId&quot;: &quot;A String&quot;, # Step Id of the primary (original) step, which might be this step.
},
&quot;labels&quot;: [ # Arbitrary user-supplied key/value pairs that are associated with the
# step.
#
# Users are responsible for managing the key namespace such that keys
# don&#x27;t accidentally collide.
#
# An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or
# if the length of any of the keys or values exceeds 100 characters.
#
# - In response: always set
# - In create request: optional
# - In update request: optional; any new key/value pair will be added to the
# map, and any new value for an existing key will update that key&#x27;s value
{
&quot;value&quot;: &quot;A String&quot;,
&quot;key&quot;: &quot;A String&quot;,
},
],
&quot;name&quot;: &quot;A String&quot;, # A short human-readable name to display in the UI.
# Maximum of 100 characters.
# For example: Clean build
#
# A PRECONDITION_FAILED will be returned upon creating a new step if it
# shares its name and dimension_value with an existing step. If two steps
# represent a similar action, but have different dimension values, they
# should share the same name. For instance, if the same set of tests is
# run on two different platforms, the two steps should have the same name.
#
# - In response: always set
# - In create request: always set
# - In update request: never set
&quot;deviceUsageDuration&quot;: { # # How much the device resource is used to perform the test.
#
# This is the device usage used for billing purpose, which is different from
# the run_duration, for example, infrastructure failure won&#x27;t be charged for
# device usage.
#
# PRECONDITION_FAILED will be returned if one attempts to set a
# device_usage on a step which already has this field set.
#
# - In response: present if previously set.
# - In create request: optional
# - In update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;toolExecutionStep&quot;: { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don&#x27;t explicitly support).
# For example: running cp to copy artifacts from one location to another.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # A Tool execution.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
},
&quot;stepId&quot;: &quot;A String&quot;, # A unique identifier within a Execution for this Step.
#
# Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
#
# - In response: always set
# - In create/update request: never set
&quot;testExecutionStep&quot;: { # A step that represents running tests. # An execution of a test runner.
#
# It accepts ant-junit xml files which will be parsed into structured test
# results by the service. Xml file paths are updated in order to append more
# files, however they can&#x27;t be deleted.
#
# Users can also add test results manually by using the test_result field.
&quot;toolExecution&quot;: { # An execution of an arbitrary tool. It could be a test runner or a tool # Represents the execution of the test runner.
#
# The exit code of this tool will be used to determine if the test passed.
#
# - In response: always set
# - In create/update request: optional
# copying artifacts or deploying code.
&quot;toolLogs&quot;: [ # References to any plain text logs output the tool execution.
#
# This field can be set before the tool has exited in order to be able to
# have access to a live view of the logs while the tool is running.
#
# The maximum allowed number of tool logs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a file.
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
],
&quot;commandLineArguments&quot;: [ # The full tokenized command line including the program name (equivalent to
# argv in a C program).
#
# - In response: present if set by create request
# - In create request: optional
# - In update request: never set
&quot;A String&quot;,
],
&quot;toolOutputs&quot;: [ # References to opaque files of any format output by the tool execution.
#
# The maximum allowed number of tool outputs per step is 1000.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
&quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
# - In create/update request: optional
#
# Test case references are canonically ordered lexicographically by these three
# factors:
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
&quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
&quot;className&quot;: &quot;A String&quot;, # The name of the class.
&quot;name&quot;: &quot;A String&quot;, # The name of the test case.
#
# Required.
},
&quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
# - In response: present if set by create/update request
# - In create/update request: optional
# calendar, encoded as a count of seconds and fractions of seconds at
# nanosecond resolution. The count is relative to an epoch at UTC midnight on
# January 1, 1970, in the proleptic Gregorian calendar which extends the
# Gregorian calendar backwards to year one.
#
# All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
# second table is needed for interpretation, using a [24-hour linear
# smear](https://developers.google.com/time/smear).
#
# The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
# restricting to that range, we ensure that we can convert to and from [RFC
# 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
&quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
# second values with fractions must still have non-negative nanos values
# that count forward in time. Must be from 0 to 999,999,999
# inclusive.
&quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
&quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
#
# - In response: always set
# - In create/update request: always set
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
},
],
&quot;exitCode&quot;: { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
# exited.
#
# - In response: present if set by create/update request
# - In create request: optional
# - In update request: optional, a FAILED_PRECONDITION error will be
# returned if an exit_code is already set.
&quot;number&quot;: 42, # Tool execution exit code. A value of 0 means that the execution was
# successful.
#
# - In response: always set
# - In create/update request: always set
},
},
&quot;testIssues&quot;: [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
# the error message and the stack trace content can be recorded here
# to assist debugging.
#
# - In response: present if set by create or update
# - In create/update request: optional
{ # An issue detected occurring during a test execution.
&quot;warning&quot;: { # # Warning message with additional details of the issue.
# Should always be a message from com.google.devtools.toolresults.v1.warnings
# `Any` contains an arbitrary serialized protocol buffer message along with a
# URL that describes the type of the serialized message.
#
# Protobuf library provides support to pack/unpack Any values in the form
# of utility functions or additional generated methods of the Any type.
#
# Example 1: Pack and unpack a message in C++.
#
# Foo foo = ...;
# Any any;
# any.PackFrom(foo);
# ...
# if (any.UnpackTo(&amp;foo)) {
# ...
# }
#
# Example 2: Pack and unpack a message in Java.
#
# Foo foo = ...;
# Any any = Any.pack(foo);
# ...
# if (any.is(Foo.class)) {
# foo = any.unpack(Foo.class);
# }
#
# Example 3: Pack and unpack a message in Python.
#
# foo = Foo(...)
# any = Any()
# any.Pack(foo)
# ...
# if any.Is(Foo.DESCRIPTOR):
# any.Unpack(foo)
# ...
#
# Example 4: Pack and unpack a message in Go
#
# foo := &amp;pb.Foo{...}
# any, err := ptypes.MarshalAny(foo)
# ...
# foo := &amp;pb.Foo{}
# if err := ptypes.UnmarshalAny(any, foo); err != nil {
# ...
# }
#
# The pack methods provided by protobuf library will by default use
# &#x27;type.googleapis.com/full.type.name&#x27; as the type URL and the unpack
# methods only use the fully qualified type name after the last &#x27;/&#x27;
# in the type URL, for example &quot;foo.bar.com/x/y.z&quot; will yield type
# name &quot;y.z&quot;.
#
#
# # JSON
#
# The JSON representation of an `Any` value uses the regular
# representation of the deserialized, embedded message, with an
# additional field `@type` which contains the type URL. Example:
#
# package google.profile;
# message Person {
# string first_name = 1;
# string last_name = 2;
# }
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.profile.Person&quot;,
# &quot;firstName&quot;: &lt;string&gt;,
# &quot;lastName&quot;: &lt;string&gt;
# }
#
# If the embedded message type is well-known and has a custom JSON
# representation, that representation will be embedded adding a field
# `value` which holds the custom JSON in addition to the `@type`
# field. Example (for message google.protobuf.Duration):
#
# {
# &quot;@type&quot;: &quot;type.googleapis.com/google.protobuf.Duration&quot;,
# &quot;value&quot;: &quot;1.212s&quot;
# }
&quot;value&quot;: &quot;A String&quot;, # Must be a valid serialized protocol buffer of the above specified type.
&quot;typeUrl&quot;: &quot;A String&quot;, # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one &quot;/&quot; character. The last segment of the URL&#x27;s path must represent
# the fully qualified name of the type (as in
# `path/google.protobuf.Duration`). The name should be in a canonical form
# (e.g., leading &quot;.&quot; is not accepted).
#
# In practice, teams usually precompile into the binary all types that they
# expect it to use in the context of Any. However, for URLs which use the
# scheme `http`, `https`, or no scheme, one can optionally set up a type
# server that maps type URLs to message definitions as follows:
#
# * If no scheme is provided, `https` is assumed.
# * An HTTP GET on the URL must yield a google.protobuf.Type
# value in binary format, or produce an error.
# * Applications are allowed to cache lookup results based on the
# URL, or have them precompiled into a binary to avoid any
# lookup. Therefore, binary compatibility needs to be preserved
# on changes to types. (Use versioned type names to manage
# breaking changes.)
#
# Note: this functionality is not currently available in the official
# protobuf release, and it is not used for type URLs beginning with
# type.googleapis.com.
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
},
&quot;type&quot;: &quot;A String&quot;, # Type of issue.
# Required.
&quot;category&quot;: &quot;A String&quot;, # Category of issue.
# Required.
&quot;severity&quot;: &quot;A String&quot;, # Severity of issue.
# Required.
&quot;errorMessage&quot;: &quot;A String&quot;, # A brief human-readable message describing the issue.
# Required.
&quot;stackTrace&quot;: { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
&quot;exception&quot;: &quot;A String&quot;, # The stack trace message.
#
# Required
},
},
],
&quot;testSuiteOverviews&quot;: [ # List of test suite overview contents. This could be parsed from xUnit XML
# log by server, or uploaded directly by user. This references should only be
# called when test suites are fully parsed or uploaded.
#
# The maximum allowed number of test suite overviews per step is 1000.
#
# - In response: always set
# - In create request: optional
# - In update request: never (use publishXunitXmlFiles custom method instead)
{ # A summary of a test suite result either parsed from XML or uploaded
# directly by a user.
#
# Note: the API related comments are for StepService only. This message is
# also being used in ExecutionService in a read only mode for the corresponding
# step.
&quot;xmlSource&quot;: { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
# XML file is stored.
#
# Note: Multiple test suites can share the same xml_source
#
# Returns INVALID_ARGUMENT if the uri format is not supported.
#
# - In create/response: optional
# - In update request: never
&quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
# or in gsutil format: gs://mybucket/path/to/test.xml
# with version-specific info,
# gs://mybucket/path/to/test.xml#1360383693690000
#
# An INVALID_ARGUMENT error will be returned if the URI format is not
# supported.
#
# - In response: always set
# - In create/update request: always set
},
&quot;elapsedTime&quot;: { # # Elapsed time of test suite.
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
&quot;name&quot;: &quot;A String&quot;, # The name of the test suite.
#
# - In create/response: always set
# - In update request: never
&quot;totalCount&quot;: 42, # Number of test cases, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;errorCount&quot;: 42, # Number of test cases in error, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;flakyCount&quot;: 42, # Number of flaky test cases, set by the service by rolling up flaky test
# attempts.
#
# Present only for rollup test suite overview at environment level. A step
# cannot have flaky test cases.
&quot;skippedCount&quot;: 42, # Number of test cases not run, typically set by the service by parsing the
# xml_source.
#
# - In create/response: always set
# - In update request: never
&quot;failureCount&quot;: 42, # Number of failed test cases, typically set by the service by parsing the
# xml_source. May also be set by the user.
#
# - In create/response: always set
# - In update request: never
},
],
&quot;testTiming&quot;: { # Testing timing break down to know phases. # The timing break down of the test execution.
#
# - In response: present if set by create or update
# - In create/update request: optional
&quot;testProcessDuration&quot;: { # # How long it took to run the test process.
#
# - In response: present if previously set.
# - In create/update request: optional
# A Duration represents a signed, fixed-length span of time represented
# as a count of seconds and fractions of seconds at nanosecond
# resolution. It is independent of any calendar and concepts like &quot;day&quot;
# or &quot;month&quot;. It is related to Timestamp in that the difference between
# two Timestamp values is a Duration and it can be added or subtracted
# from a Timestamp. Range is approximately +-10,000 years.
&quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
# to +315,576,000,000 inclusive. Note: these bounds are computed from:
# 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
&quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
# of time. Durations less than one second are represented with a 0
# `seconds` field and a positive or negative `nanos` field. For durations
# of one second or more, a non-zero value for the `nanos` field must be
# of the same sign as the `seconds` field. Must be from -999,999,999
# to +999,999,999 inclusive.
},
},
},
&quot;outcome&quot;: { # Interprets a result so that humans and machines can act on it. # Classification of the result, for example into SUCCESS or FAILURE
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;inconclusiveDetail&quot;: { # Details for an outcome with an INCONCLUSIVE outcome summary. # More information about an INCONCLUSIVE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not INCONCLUSIVE.
#
# Optional
&quot;hasErrorLogs&quot;: True or False, # If results are being provided to the user in certain cases of
# infrastructure failures
&quot;infrastructureFailure&quot;: True or False, # If the test runner could not determine success or failure because the test
# depends on a component other than the system under test which failed.
#
# For example, a mobile test requires provisioning a device where the test
# executes, and that provisioning can fail.
&quot;abortedByUser&quot;: True or False, # If the end user aborted the test execution before a pass or fail could be
# determined.
# For example, the user pressed ctrl-c which sent a kill signal to the test
# runner while the test was running.
},
&quot;skippedDetail&quot;: { # Details for an outcome with a SKIPPED outcome summary. # More information about a SKIPPED outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SKIPPED.
#
# Optional
&quot;incompatibleArchitecture&quot;: True or False, # If the App doesn&#x27;t run on the specific architecture, for example, x86.
&quot;incompatibleDevice&quot;: True or False, # If the requested OS version doesn&#x27;t run on the specific device model.
&quot;incompatibleAppVersion&quot;: True or False, # If the App doesn&#x27;t support the specific API level.
},
&quot;summary&quot;: &quot;A String&quot;, # The simplest way to interpret a result.
#
# Required
&quot;failureDetail&quot;: { # Details for an outcome with a FAILURE outcome summary. # More information about a FAILURE outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not FAILURE.
#
# Optional
&quot;otherNativeCrash&quot;: True or False, # If a native process (including any other than the app) crashed.
&quot;notInstalled&quot;: True or False, # If an app is not installed and thus no test can be run with the app.
# This might be caused by trying to run a test on an unsupported platform.
&quot;timedOut&quot;: True or False, # If the test overran some time limit, and that is why it failed.
&quot;failedRoboscript&quot;: True or False, # If the Roboscript failed to complete successfully, e.g., because a
# Roboscript action or assertion failed or a Roboscript action could not be
# matched during the entire crawl.
&quot;crashed&quot;: True or False, # If the failure was severe because the system (app) under test crashed.
&quot;unableToCrawl&quot;: True or False, # If the robo was unable to crawl the app; perhaps because the app did not
# start.
},
&quot;successDetail&quot;: { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
# but the summary is not SUCCESS.
#
# Optional
# LINT.IfChange
&quot;otherNativeCrash&quot;: True or False, # If a native process other than the app crashed.
},
},
&quot;dimensionValue&quot;: [ # If the execution containing this step has any dimension_definition set,
# then this field allows the child to specify the values of the dimensions.
#
# The keys must exactly match the dimension_definition of the execution.
#
# For example, if the execution has
# `dimension_definition = [&#x27;attempt&#x27;, &#x27;device&#x27;]`
# then a step must define values for those dimensions, eg.
# `dimension_value = [&#x27;attempt&#x27;: &#x27;1&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If a step does not participate in one dimension of the matrix,
# the value for that dimension should be empty string.
# For example, if one of the tests is executed by a runner which
# does not support retries, the step could have
# `dimension_value = [&#x27;attempt&#x27;: &#x27;&#x27;, &#x27;device&#x27;: &#x27;Nexus 6&#x27;]`
#
# If the step does not participate in any dimensions of the matrix,
# it may leave dimension_value unset.
#
# A PRECONDITION_FAILED will be returned if any of the keys do not exist
# in the dimension_definition of the execution.
#
# A PRECONDITION_FAILED will be returned if another step in this execution
# already has the same name and dimension_value, but differs on other data
# fields, for example, step field is different.
#
# A PRECONDITION_FAILED will be returned if dimension_value is set, and
# there is a dimension_definition in the execution which is not specified
# as one of the keys.
#
# - In response: present if set by create
# - In create request: optional
# - In update request: never set
{
&quot;key&quot;: &quot;A String&quot;,
&quot;value&quot;: &quot;A String&quot;,
},
],
&quot;hasImages&quot;: True or False, # Whether any of the outputs of this step are images whose
# thumbnails can be fetched with ListThumbnails.
#
# - In response: always set
# - In create/update request: never set
&quot;description&quot;: &quot;A String&quot;, # A description of this tool
# For example: mvn clean package -D skipTests=true
#
# - In response: present if set by create/update request
# - In create/update request: optional
&quot;state&quot;: &quot;A String&quot;, # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -&gt; COMPLETE
#
# A PRECONDITION_FAILED will be returned if an invalid transition is
# requested.
#
# It is valid to create Step with a state set to COMPLETE.
# The state can only be set to COMPLETE once. A PRECONDITION_FAILED will be
# returned if the state is set to COMPLETE multiple times.
#
# - In response: always set
# - In create/update request: optional
}</pre>
</div>
</body></html>