docs: update docs (#916)
* fix: re-run script
* test: fix noxfile
diff --git a/docs/dyn/toolresults_v1beta3.steps.html b/docs/dyn/toolresults_v1beta3.steps.html
index bb9a051..34a68fa 100644
--- a/docs/dyn/toolresults_v1beta3.steps.html
+++ b/docs/dyn/toolresults_v1beta3.steps.html
@@ -148,28 +148,16 @@
# have the same SuggestionPriority and belong to the same SuggestionCategory.
# Suggestions with the same screenshot URL should be adjacent.
{
- "title": "A String", # General title for the suggestion, in the user's language, without markup.
- # Always set.
- "priority": "A String", # Relative importance of a suggestion.
- # Always set.
- "resourceName": "A String", # Reference to a view element, identified by its resource name, if it has
- # one.
- "secondaryPriority": 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.
"region": { # A rectangular region. # Region within the screenshot that is relevant to this suggestion.
# Optional.
- "leftPx": 42, # The left side of the rectangle, in pixels.
- # Always set.
"topPx": 42, # The top of the rectangle, in pixels.
# Always set.
"heightPx": 42, # The height, in pixels.
# Always set.
"widthPx": 42, # The width, in pixels.
# Always set.
+ "leftPx": 42, # The left side of the rectangle, in pixels.
+ # Always set.
},
"pseudoResourceId": "A String", # 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,
@@ -206,6 +194,18 @@
# It is used for getting the corresponding screenshot path. For example,
# screen_id "1" corresponds to "1.png" file in GCS.
# Always set.
+ "title": "A String", # General title for the suggestion, in the user's language, without markup.
+ # Always set.
+ "priority": "A String", # Relative importance of a suggestion.
+ # Always set.
+ "resourceName": "A String", # Reference to a view element, identified by its resource name, if it has
+ # one.
+ "secondaryPriority": 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.
},
],
"category": "A String", # Category in which these types of suggestions should appear.
@@ -241,12 +241,858 @@
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'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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> 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
+ "name": "A String", # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "hasImages": 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
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "description": "A String", # 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
+ "testExecutionStep": { # 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't be deleted.
+ #
+ # Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
+ "failureCount": 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
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "flakyCount": 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.
+ "errorCount": 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
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
+ "testIssues": [ # 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.
+ "warning": { # # 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(&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 := &pb.Foo{...}
+ # any, err := ptypes.MarshalAny(foo)
+ # ...
+ # foo := &pb.Foo{}
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ # ...
+ # }
+ #
+ # The pack methods provided by protobuf library will by default use
+ # 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ # methods only use the fully qualified type name after the last '/'
+ # in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ # name "y.z".
+ #
+ #
+ # # 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;
+ # }
+ #
+ # {
+ # "@type": "type.googleapis.com/google.profile.Person",
+ # "firstName": <string>,
+ # "lastName": <string>
+ # }
+ #
+ # 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):
+ #
+ # {
+ # "@type": "type.googleapis.com/google.protobuf.Duration",
+ # "value": "1.212s"
+ # }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+ "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
+ # protocol buffer message. This string must contain at least
+ # one "/" character. The last segment of the URL'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 "." 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.
+ },
+ "severity": "A String", # Severity of issue.
+ # Required.
+ "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
+ "exception": "A String", # The stack trace message.
+ #
+ # Required
+ },
+ "type": "A String", # Type of issue.
+ # Required.
+ "errorMessage": "A String", # A brief human-readable message describing the issue.
+ # Required.
+ "category": "A String", # Category of issue.
+ # Required.
+ },
+ ],
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+}
+
+ 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'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
@@ -255,28 +1101,400 @@
# + 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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> 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
+ "name": "A String", # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
"hasImages": 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
"runDuration": { # # 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
@@ -286,19 +1504,19 @@
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
"description": "A String", # 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
"testExecutionStep": { # A step that represents running tests. # An execution of a test runner.
@@ -308,6 +1526,116 @@
# files, however they can't be deleted.
#
# Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
+ "failureCount": 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
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "flakyCount": 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.
+ "errorCount": 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
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
"testIssues": [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
@@ -398,6 +1726,7 @@
# "@type": "type.googleapis.com/google.protobuf.Duration",
# "value": "1.212s"
# }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
"typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one "/" character. The last segment of the URL's path must represent
@@ -425,7 +1754,6 @@
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
},
"severity": "A String", # Severity of issue.
# Required.
@@ -505,6 +1833,22 @@
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
"creationTime": { # 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
@@ -546,138 +1890,12 @@
# - In response: always set
# - In create/update request: always set
},
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
},
],
},
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "flakyCount": 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.
- "errorCount": 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
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
- #
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 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
- "xmlSource": { # 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
- "fileUri": "A String", # 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
- },
- "failureCount": 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
- },
- ],
- "testTiming": { # 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
- "testProcessDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- },
},
"creationTime": { # 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
@@ -700,75 +1918,129 @@
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
+ }</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'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
"state": "A String", # The initial state is IN_PROGRESS.
# The only legal state transitions are
# * IN_PROGRESS -> 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
"name": "A String", # 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
"dimensionValue": [ # 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 = ['attempt', 'device']`
# then a step must define values for those dimensions, eg.
# `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
+ #
# 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
+ #
# 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
{
- "value": "A String",
"key": "A String",
+ "value": "A String",
},
],
"completionTime": { # 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
@@ -795,15 +2067,11 @@
# These details can be used identify which group this step is part of.
# It also identifies the groups 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
"primaryStep": { # 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.
"rollUp": "A String", # Rollup test status of multiple steps that were run with the same
@@ -811,6 +2079,10 @@
"individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
"runDuration": { # # 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
@@ -818,70 +2090,35 @@
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
"stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
},
],
},
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
},
"stepId": "A String", # 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
"outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
- "abortedByUser": 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.
- },
"successDetail": { # Details for an outcome with a SUCCESS outcome summary. # More information about a SUCCESS outcome.
#
# Returns INVALID_ARGUMENT if this field is set
@@ -901,6 +2138,41 @@
"incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
"incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
},
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
},
"toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
# For example: running cp to copy artifacts from one location to another.
@@ -965,6 +2237,22 @@
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
"creationTime": { # 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
@@ -1006,6 +2294,411 @@
# - In response: always set
# - In create/update request: always set
},
+ },
+ ],
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "hasImages": 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
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "description": "A String", # 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
+ "testExecutionStep": { # 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't be deleted.
+ #
+ # Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
+ "failureCount": 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
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "flakyCount": 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.
+ "errorCount": 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
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
+ "testIssues": [ # 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.
+ "warning": { # # 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(&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 := &pb.Foo{...}
+ # any, err := ptypes.MarshalAny(foo)
+ # ...
+ # foo := &pb.Foo{}
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ # ...
+ # }
+ #
+ # The pack methods provided by protobuf library will by default use
+ # 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ # methods only use the fully qualified type name after the last '/'
+ # in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ # name "y.z".
+ #
+ #
+ # # 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;
+ # }
+ #
+ # {
+ # "@type": "type.googleapis.com/google.profile.Person",
+ # "firstName": <string>,
+ # "lastName": <string>
+ # }
+ #
+ # 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):
+ #
+ # {
+ # "@type": "type.googleapis.com/google.protobuf.Duration",
+ # "value": "1.212s"
+ # }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+ "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
+ # protocol buffer message. This string must contain at least
+ # one "/" character. The last segment of the URL'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 "." 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.
+ },
+ "severity": "A String", # Severity of issue.
+ # Required.
+ "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
+ "exception": "A String", # The stack trace message.
+ #
+ # Required
+ },
+ "type": "A String", # Type of issue.
+ # Required.
+ "errorMessage": "A String", # A brief human-readable message describing the issue.
+ # Required.
+ "category": "A String", # Category of issue.
+ # Required.
+ },
+ ],
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
"testCase": { # A reference to a test case. # The test case to which this output file belongs.
#
# - In response: present if set by create/update request
@@ -1016,1775 +2709,82 @@
# * First, by test_suite_name.
# * Second, by class_name.
# * Third, by name.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
"name": "A String", # The name of the test case.
#
# Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
},
},
],
},
},
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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.
- #
+ "creationTime": { # 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 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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }
-
- 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).
+ # - 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.
#
- # Steps can overlap (for instance two steps might have the same
- # start time if some operations are done in parallel).
+ # All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ # second table is needed for interpretation, using a [24-hour linear
+ # smear](https://developers.google.com/time/smear).
#
- # Here is an example, let'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
- "hasImages": 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
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "description": "A String", # 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
- "testExecutionStep": { # 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't be deleted.
- #
- # Users can also add test results manually by using the test_result field.
- "testIssues": [ # 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.
- "warning": { # # 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(&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 := &pb.Foo{...}
- # any, err := ptypes.MarshalAny(foo)
- # ...
- # foo := &pb.Foo{}
- # if err := ptypes.UnmarshalAny(any, foo); err != nil {
- # ...
- # }
- #
- # The pack methods provided by protobuf library will by default use
- # 'type.googleapis.com/full.type.name' as the type URL and the unpack
- # methods only use the fully qualified type name after the last '/'
- # in the type URL, for example "foo.bar.com/x/y.z" will yield type
- # name "y.z".
- #
- #
- # # 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;
- # }
- #
- # {
- # "@type": "type.googleapis.com/google.profile.Person",
- # "firstName": <string>,
- # "lastName": <string>
- # }
- #
- # 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):
- #
- # {
- # "@type": "type.googleapis.com/google.protobuf.Duration",
- # "value": "1.212s"
- # }
- "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
- # protocol buffer message. This string must contain at least
- # one "/" character. The last segment of the URL'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 "." 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.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
- },
- "severity": "A String", # Severity of issue.
- # Required.
- "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
- "exception": "A String", # The stack trace message.
- #
- # Required
- },
- "type": "A String", # Type of issue.
- # Required.
- "errorMessage": "A String", # A brief human-readable message describing the issue.
- # Required.
- "category": "A String", # Category of issue.
- # Required.
- },
- ],
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "flakyCount": 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.
- "errorCount": 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
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
- #
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 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
- "xmlSource": { # 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
- "fileUri": "A String", # 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
- },
- "failureCount": 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
- },
- ],
- "testTiming": { # 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
- "testProcessDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- },
- },
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- },
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }</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'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
- "hasImages": 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
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "description": "A String", # 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
- "testExecutionStep": { # 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't be deleted.
- #
- # Users can also add test results manually by using the test_result field.
- "testIssues": [ # 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.
- "warning": { # # 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(&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 := &pb.Foo{...}
- # any, err := ptypes.MarshalAny(foo)
- # ...
- # foo := &pb.Foo{}
- # if err := ptypes.UnmarshalAny(any, foo); err != nil {
- # ...
- # }
- #
- # The pack methods provided by protobuf library will by default use
- # 'type.googleapis.com/full.type.name' as the type URL and the unpack
- # methods only use the fully qualified type name after the last '/'
- # in the type URL, for example "foo.bar.com/x/y.z" will yield type
- # name "y.z".
- #
- #
- # # 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;
- # }
- #
- # {
- # "@type": "type.googleapis.com/google.profile.Person",
- # "firstName": <string>,
- # "lastName": <string>
- # }
- #
- # 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):
- #
- # {
- # "@type": "type.googleapis.com/google.protobuf.Duration",
- # "value": "1.212s"
- # }
- "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
- # protocol buffer message. This string must contain at least
- # one "/" character. The last segment of the URL'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 "." 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.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
- },
- "severity": "A String", # Severity of issue.
- # Required.
- "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
- "exception": "A String", # The stack trace message.
- #
- # Required
- },
- "type": "A String", # Type of issue.
- # Required.
- "errorMessage": "A String", # A brief human-readable message describing the issue.
- # Required.
- "category": "A String", # Category of issue.
- # Required.
- },
- ],
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "flakyCount": 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.
- "errorCount": 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
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
- #
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 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
- "xmlSource": { # 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
- "fileUri": "A String", # 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
- },
- "failureCount": 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
- },
- ],
- "testTiming": { # 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
- "testProcessDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- },
- },
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- },
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }</pre>
+ # 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ }</pre>
</div>
<div class="method">
@@ -2808,6 +2808,8 @@
An object of the form:
{ # A summary of perf metrics collected and performance environment info
+ "stepId": "A String", # A tool results step ID.
+ # @OutputOnly
"historyId": "A String", # A tool results history ID.
# @OutputOnly
"perfEnvironment": { # Encapsulates performance environment info # Describes the environment in which the performance metrics were collected
@@ -2827,10 +2829,6 @@
# For more info see:
# https://developer.android.com/training/testing/performance.html
# Statistics will only be present for API 23+.
- "p95Millis": "A String", # 95th percentile frame render time in milliseconds.
- "missedVsyncCount": "A String", # Total "missed vsync" events.
- "p90Millis": "A String", # 90th percentile frame render time in milliseconds.
- "jankyFrames": "A String", # Total frames with slow render time. Should be <= total_frames.
"slowBitmapUploadCount": "A String", # Total "slow bitmap upload" events.
"buckets": [ # Histogram of frame render times. There should be 154 buckets ranging from
# [5ms, 6ms) to [4950ms, infinity)
@@ -2845,6 +2843,10 @@
"p99Millis": "A String", # 99th percentile frame render time in milliseconds.
"slowDrawCount": "A String", # Total "slow draw" events.
"highInputLatencyCount": "A String", # Total "high input latency" events.
+ "p95Millis": "A String", # 95th percentile frame render time in milliseconds.
+ "missedVsyncCount": "A String", # Total "missed vsync" events.
+ "p90Millis": "A String", # 90th percentile frame render time in milliseconds.
+ "jankyFrames": "A String", # Total frames with slow render time. Should be <= total_frames.
},
"projectId": "A String", # The cloud project
# @OutputOnly
@@ -2861,15 +2863,15 @@
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
"fullyDrawnTime": { # # Optional. The time from app start to reaching the developer-reported
# "fully drawn" time. This is only stored if the app includes a call to
@@ -2881,21 +2883,19 @@
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
},
"executionId": "A String", # A tool results execution ID.
# @OutputOnly
- "stepId": "A String", # A tool results step ID.
- # @OutputOnly
}</pre>
</div>
@@ -2944,401 +2944,336 @@
An object of the form:
{ # Response message for StepService.List.
- "nextPageToken": "A String", # 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.
"steps": [ # 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).
+ # 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'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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> COMPLETE
#
- # Steps can overlap (for instance two steps might have the same
- # start time if some operations are done in parallel).
+ # A PRECONDITION_FAILED will be returned if an invalid transition is
+ # requested.
#
- # Here is an example, let'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
+ # 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.
#
- # A Step can be updated until its state is set to COMPLETE at which
- # points it becomes immutable.
+ # - In response: always set
+ # - In create/update request: optional
+ "name": "A String", # A short human-readable name to display in the UI.
+ # Maximum of 100 characters.
+ # For example: Clean build
#
- # Next tag: 27
- "hasImages": 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
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
+ # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
},
- "description": "A String", # 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
- "testExecutionStep": { # 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't be deleted.
- #
- # Users can also add test results manually by using the test_result field.
- "testIssues": [ # 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.
- "warning": { # # 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(&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 := &pb.Foo{...}
- # any, err := ptypes.MarshalAny(foo)
- # ...
- # foo := &pb.Foo{}
- # if err := ptypes.UnmarshalAny(any, foo); err != nil {
- # ...
- # }
- #
- # The pack methods provided by protobuf library will by default use
- # 'type.googleapis.com/full.type.name' as the type URL and the unpack
- # methods only use the fully qualified type name after the last '/'
- # in the type URL, for example "foo.bar.com/x/y.z" will yield type
- # name "y.z".
- #
- #
- # # 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;
- # }
- #
- # {
- # "@type": "type.googleapis.com/google.profile.Person",
- # "firstName": <string>,
- # "lastName": <string>
- # }
- #
- # 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):
- #
- # {
- # "@type": "type.googleapis.com/google.protobuf.Duration",
- # "value": "1.212s"
- # }
- "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
- # protocol buffer message. This string must contain at least
- # one "/" character. The last segment of the URL'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 "." 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.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
- },
- "severity": "A String", # Severity of issue.
- # Required.
- "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
- "exception": "A String", # The stack trace message.
- #
- # Required
- },
- "type": "A String", # Type of issue.
- # Required.
- "errorMessage": "A String", # A brief human-readable message describing the issue.
- # Required.
- "category": "A String", # Category of issue.
- # Required.
- },
- ],
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # Elapsed time of test suite.
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
- "flakyCount": 42, # Number of flaky test cases, set by the service by rolling up flaky test
- # attempts.
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
- # Present only for rollup test suite overview at environment level. A step
- # cannot have flaky test cases.
- "errorCount": 42, # Number of test cases in error, typically set by the service by parsing the
- # xml_source.
+ # 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
#
- # - In create/response: always set
- # - In update request: never
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
+ # An INVALID_ARGUMENT error will be returned if the URI format is not
+ # supported.
#
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 42, # Number of test cases not run, typically set by the service by parsing the
- # xml_source.
+ # - In response: always set
+ # - In create/update request: always set
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # A reference to a test case. # The test case to which this output file belongs.
#
- # - In create/response: always set
- # - In update request: never
- "xmlSource": { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
- # XML file is stored.
+ # - In response: present if set by create/update request
+ # - In create/update request: optional
#
- # Note: Multiple test suites can share the same xml_source
+ # Test case references are canonically ordered lexicographically by these three
+ # factors:
+ # * First, by test_suite_name.
+ # * Second, by class_name.
+ # * Third, by name.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
- # Returns INVALID_ARGUMENT if the uri format is not supported.
+ # - 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.
#
- # - In create/response: optional
- # - In update request: never
+ # All minutes are 60 seconds long. Leap seconds are "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
"fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
@@ -3352,305 +3287,455 @@
# - In response: always set
# - In create/update request: always set
},
- "failureCount": 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
},
],
- "testTiming": { # Testing timing break down to know phases. # The timing break down of the test execution.
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "hasImages": 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
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "description": "A String", # 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
+ "testExecutionStep": { # 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't be deleted.
+ #
+ # Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
#
- # - In response: present if set by create or update
- # - In create/update request: optional
- "testProcessDuration": { # # How long it took to run the test process.
+ # 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.
+ "failureCount": 42, # Number of failed test cases, typically set by the service by parsing the
+ # xml_source. May also be set by the user.
#
- # - In response: present if previously set.
- # - In create/update request: optional
+ # - In create/response: always set
+ # - In update request: never
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
- },
- },
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
+ "flakyCount": 42, # Number of flaky test cases, set by the service by rolling up flaky test
+ # attempts.
#
- # For example, a mobile test requires provisioning a device where the test
- # executes, and that provisioning can fail.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # The full tokenized command line including the program name (equivalent to
- # argv in a C program).
+ # Present only for rollup test suite overview at environment level. A step
+ # cannot have flaky test cases.
+ "errorCount": 42, # Number of test cases in error, typically set by the service by parsing the
+ # xml_source.
#
- # - In response: present if set by create request
- # - In create request: optional
- # - In update request: never set
- "A String",
- ],
- "exitCode": { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
- # exited.
+ # - In create/response: always set
+ # - In update request: never
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
#
- # - 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.
- "number": 42, # Tool execution exit code. A value of 0 means that the execution was
- # successful.
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
},
- "toolLogs": [ # References to any plain text logs output the tool execution.
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
+ "testIssues": [ # 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.
+ "warning": { # # 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.
#
- # 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.
+ # Protobuf library provides support to pack/unpack Any values in the form
+ # of utility functions or additional generated methods of the Any type.
#
- # The maximum allowed number of tool logs per step is 1000.
+ # Example 1: Pack and unpack a message in C++.
#
- # - 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.
+ # Foo foo = ...;
+ # Any any;
+ # any.PackFrom(foo);
+ # ...
+ # if (any.UnpackTo(&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 := &pb.Foo{...}
+ # any, err := ptypes.MarshalAny(foo)
+ # ...
+ # foo := &pb.Foo{}
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ # ...
+ # }
+ #
+ # The pack methods provided by protobuf library will by default use
+ # 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ # methods only use the fully qualified type name after the last '/'
+ # in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ # name "y.z".
+ #
+ #
+ # # 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;
+ # }
+ #
+ # {
+ # "@type": "type.googleapis.com/google.profile.Person",
+ # "firstName": <string>,
+ # "lastName": <string>
+ # }
+ #
+ # 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):
+ #
+ # {
+ # "@type": "type.googleapis.com/google.protobuf.Duration",
+ # "value": "1.212s"
+ # }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+ "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
+ # protocol buffer message. This string must contain at least
+ # one "/" character. The last segment of the URL'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 "." 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.
+ },
+ "severity": "A String", # Severity of issue.
+ # Required.
+ "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
+ "exception": "A String", # The stack trace message.
+ #
+ # Required
+ },
+ "type": "A String", # Type of issue.
+ # Required.
+ "errorMessage": "A String", # A brief human-readable message describing the issue.
+ # Required.
+ "category": "A String", # Category of issue.
+ # Required.
+ },
+ ],
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
"fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
@@ -3664,125 +3749,40 @@
# - In response: always set
# - In create/update request: always set
},
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
+ },
+ ],
},
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
},
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ },
],
+ "nextPageToken": "A String", # 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>
@@ -3830,12 +3830,858 @@
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'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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> 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
+ "name": "A String", # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "hasImages": 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
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "description": "A String", # 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
+ "testExecutionStep": { # 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't be deleted.
+ #
+ # Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
+ "failureCount": 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
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "flakyCount": 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.
+ "errorCount": 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
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
+ "testIssues": [ # 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.
+ "warning": { # # 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(&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 := &pb.Foo{...}
+ # any, err := ptypes.MarshalAny(foo)
+ # ...
+ # foo := &pb.Foo{}
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ # ...
+ # }
+ #
+ # The pack methods provided by protobuf library will by default use
+ # 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ # methods only use the fully qualified type name after the last '/'
+ # in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ # name "y.z".
+ #
+ #
+ # # 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;
+ # }
+ #
+ # {
+ # "@type": "type.googleapis.com/google.profile.Person",
+ # "firstName": <string>,
+ # "lastName": <string>
+ # }
+ #
+ # 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):
+ #
+ # {
+ # "@type": "type.googleapis.com/google.protobuf.Duration",
+ # "value": "1.212s"
+ # }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+ "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
+ # protocol buffer message. This string must contain at least
+ # one "/" character. The last segment of the URL'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 "." 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.
+ },
+ "severity": "A String", # Severity of issue.
+ # Required.
+ "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
+ "exception": "A String", # The stack trace message.
+ #
+ # Required
+ },
+ "type": "A String", # Type of issue.
+ # Required.
+ "errorMessage": "A String", # A brief human-readable message describing the issue.
+ # Required.
+ "category": "A String", # Category of issue.
+ # Required.
+ },
+ ],
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+}
+
+ 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'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
@@ -3844,28 +4690,400 @@
# + 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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> 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
+ "name": "A String", # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
"hasImages": 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
"runDuration": { # # 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
@@ -3875,19 +5093,19 @@
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
"description": "A String", # 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
"testExecutionStep": { # A step that represents running tests. # An execution of a test runner.
@@ -3897,6 +5115,116 @@
# files, however they can't be deleted.
#
# Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
+ "failureCount": 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
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "flakyCount": 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.
+ "errorCount": 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
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
+ },
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
"testIssues": [ # Issues observed during the test execution.
#
# For example, if the mobile app under test crashed during the test,
@@ -3987,6 +5315,7 @@
# "@type": "type.googleapis.com/google.protobuf.Duration",
# "value": "1.212s"
# }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
"typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
# protocol buffer message. This string must contain at least
# one "/" character. The last segment of the URL's path must represent
@@ -4014,7 +5343,6 @@
#
# Schemes other than `http`, `https` (or the empty scheme) might be
# used with implementation specific semantics.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
},
"severity": "A String", # Severity of issue.
# Required.
@@ -4094,6 +5422,22 @@
# - In update request: optional, any value provided will be appended to the
# existing list
{ # A reference to a ToolExecution output file.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
"creationTime": { # 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
@@ -4135,138 +5479,12 @@
# - In response: always set
# - In create/update request: always set
},
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
},
],
},
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "flakyCount": 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.
- "errorCount": 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
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
- #
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 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
- "xmlSource": { # 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
- "fileUri": "A String", # 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
- },
- "failureCount": 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
- },
- ],
- "testTiming": { # 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
- "testProcessDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- },
},
"creationTime": { # 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
@@ -4289,1225 +5507,7 @@
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
# 9999-12-31T23:59:59Z inclusive.
},
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- },
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }
-
- 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'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
- "hasImages": 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
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "description": "A String", # 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
- "testExecutionStep": { # 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't be deleted.
- #
- # Users can also add test results manually by using the test_result field.
- "testIssues": [ # 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.
- "warning": { # # 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(&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 := &pb.Foo{...}
- # any, err := ptypes.MarshalAny(foo)
- # ...
- # foo := &pb.Foo{}
- # if err := ptypes.UnmarshalAny(any, foo); err != nil {
- # ...
- # }
- #
- # The pack methods provided by protobuf library will by default use
- # 'type.googleapis.com/full.type.name' as the type URL and the unpack
- # methods only use the fully qualified type name after the last '/'
- # in the type URL, for example "foo.bar.com/x/y.z" will yield type
- # name "y.z".
- #
- #
- # # 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;
- # }
- #
- # {
- # "@type": "type.googleapis.com/google.profile.Person",
- # "firstName": <string>,
- # "lastName": <string>
- # }
- #
- # 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):
- #
- # {
- # "@type": "type.googleapis.com/google.protobuf.Duration",
- # "value": "1.212s"
- # }
- "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
- # protocol buffer message. This string must contain at least
- # one "/" character. The last segment of the URL'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 "." 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.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
- },
- "severity": "A String", # Severity of issue.
- # Required.
- "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
- "exception": "A String", # The stack trace message.
- #
- # Required
- },
- "type": "A String", # Type of issue.
- # Required.
- "errorMessage": "A String", # A brief human-readable message describing the issue.
- # Required.
- "category": "A String", # Category of issue.
- # Required.
- },
- ],
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "flakyCount": 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.
- "errorCount": 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
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
- #
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 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
- "xmlSource": { # 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
- "fileUri": "A String", # 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
- },
- "failureCount": 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
- },
- ],
- "testTiming": { # 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
- "testProcessDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- },
- },
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- },
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }</pre>
+ }</pre>
</div>
<div class="method">
@@ -5571,395 +5571,334 @@
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).
+ # 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'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
+ "state": "A String", # The initial state is IN_PROGRESS.
+ # The only legal state transitions are
+ # * IN_PROGRESS -> COMPLETE
#
- # Steps can overlap (for instance two steps might have the same
- # start time if some operations are done in parallel).
+ # A PRECONDITION_FAILED will be returned if an invalid transition is
+ # requested.
#
- # Here is an example, let'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
+ # 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.
#
- # A Step can be updated until its state is set to COMPLETE at which
- # points it becomes immutable.
+ # - In response: always set
+ # - In create/update request: optional
+ "name": "A String", # A short human-readable name to display in the UI.
+ # Maximum of 100 characters.
+ # For example: Clean build
#
- # Next tag: 27
- "hasImages": 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
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
+ # 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
+ "dimensionValue": [ # 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 = ['attempt', 'device']`
+ # then a step must define values for those dimensions, eg.
+ # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
+ #
+ # 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 = ['attempt': '', 'device': 'Nexus 6']`
+ #
+ # 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
+ {
+ "key": "A String",
+ "value": "A String",
},
- "description": "A String", # 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
- "testExecutionStep": { # 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't be deleted.
- #
- # Users can also add test results manually by using the test_result field.
- "testIssues": [ # 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.
- "warning": { # # 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(&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 := &pb.Foo{...}
- # any, err := ptypes.MarshalAny(foo)
- # ...
- # foo := &pb.Foo{}
- # if err := ptypes.UnmarshalAny(any, foo); err != nil {
- # ...
- # }
- #
- # The pack methods provided by protobuf library will by default use
- # 'type.googleapis.com/full.type.name' as the type URL and the unpack
- # methods only use the fully qualified type name after the last '/'
- # in the type URL, for example "foo.bar.com/x/y.z" will yield type
- # name "y.z".
- #
- #
- # # 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;
- # }
- #
- # {
- # "@type": "type.googleapis.com/google.profile.Person",
- # "firstName": <string>,
- # "lastName": <string>
- # }
- #
- # 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):
- #
- # {
- # "@type": "type.googleapis.com/google.protobuf.Duration",
- # "value": "1.212s"
- # }
- "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
- # protocol buffer message. This string must contain at least
- # one "/" character. The last segment of the URL'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 "." 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.
- "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
- },
- "severity": "A String", # Severity of issue.
- # Required.
- "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
- "exception": "A String", # The stack trace message.
- #
- # Required
- },
- "type": "A String", # Type of issue.
- # Required.
- "errorMessage": "A String", # A brief human-readable message describing the issue.
- # Required.
- "category": "A String", # Category of issue.
- # Required.
- },
- ],
- "toolExecution": { # 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.
- "commandLineArguments": [ # 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
- "A String",
- ],
- "exitCode": { # 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.
- "number": 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
- },
- "toolLogs": [ # 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.
- "fileUri": "A String", # 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
- },
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
- "testSuiteOverviews": [ # 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.
- "name": "A String", # The name of the test suite.
- #
- # - In create/response: always set
- # - In update request: never
- "elapsedTime": { # # Elapsed time of test suite.
+ ],
+ "completionTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "multiStep": { # 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 'primary step' 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
+ "primaryStep": { # 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.
+ "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
+ # configuration as a group.
+ "individualOutcome": [ # 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.
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "outcomeSummary": "A String",
+ "runDuration": { # # 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 "day"
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
- "flakyCount": 42, # Number of flaky test cases, set by the service by rolling up flaky test
- # attempts.
+ "stepId": "A String",
+ },
+ ],
+ },
+ "multistepNumber": 42, # Unique int given to each step.
+ # Ranges from 0(inclusive) to total number of steps(exclusive).
+ # The primary step is 0.
+ "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
+ },
+ "stepId": "A String", # 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
+ "outcome": { # 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
+ "successDetail": { # 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
+ "otherNativeCrash": True or False, # If a native process other than the app crashed.
+ },
+ "skippedDetail": { # 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
+ "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
+ "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
+ "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
+ },
+ "summary": "A String", # The simplest way to interpret a result.
+ #
+ # Required
+ "failureDetail": { # 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
+ "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
+ "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
+ # start.
+ "notInstalled": 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.
+ "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
+ "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
+ },
+ "inconclusiveDetail": { # 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
+ "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
+ # infrastructure failures
+ "infrastructureFailure": 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.
+ "abortedByUser": 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.
+ },
+ },
+ "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
+ # For example: running cp to copy artifacts from one location to another.
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
- # Present only for rollup test suite overview at environment level. A step
- # cannot have flaky test cases.
- "errorCount": 42, # Number of test cases in error, typically set by the service by parsing the
- # xml_source.
+ # 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
#
- # - In create/response: always set
- # - In update request: never
- "totalCount": 42, # Number of test cases, typically set by the service by parsing the
- # xml_source.
+ # An INVALID_ARGUMENT error will be returned if the URI format is not
+ # supported.
#
- # - In create/response: always set
- # - In update request: never
- "skippedCount": 42, # Number of test cases not run, typically set by the service by parsing the
- # xml_source.
+ # - In response: always set
+ # - In create/update request: always set
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # A reference to a test case. # The test case to which this output file belongs.
#
- # - In create/response: always set
- # - In update request: never
- "xmlSource": { # A reference to a file. # If this test suite was parsed from XML, this is the URI where the original
- # XML file is stored.
+ # - In response: present if set by create/update request
+ # - In create/update request: optional
#
- # Note: Multiple test suites can share the same xml_source
+ # Test case references are canonically ordered lexicographically by these three
+ # factors:
+ # * First, by test_suite_name.
+ # * Second, by class_name.
+ # * Third, by name.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
#
- # Returns INVALID_ARGUMENT if the uri format is not supported.
+ # - 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.
#
- # - In create/response: optional
- # - In update request: never
+ # All minutes are 60 seconds long. Leap seconds are "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
"fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
@@ -5973,305 +5912,455 @@
# - In response: always set
# - In create/update request: always set
},
- "failureCount": 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
},
],
- "testTiming": { # Testing timing break down to know phases. # The timing break down of the test execution.
+ },
+ },
+ "deviceUsageDuration": { # # 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'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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
+ # step.
+ #
+ # Users are responsible for managing the key namespace such that keys
+ # don'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's value
+ {
+ "key": "A String",
+ "value": "A String",
+ },
+ ],
+ "hasImages": 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
+ "runDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ "description": "A String", # 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
+ "testExecutionStep": { # 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't be deleted.
+ #
+ # Users can also add test results manually by using the test_result field.
+ "testSuiteOverviews": [ # 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.
#
- # - In response: present if set by create or update
- # - In create/update request: optional
- "testProcessDuration": { # # How long it took to run the test process.
+ # 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.
+ "failureCount": 42, # Number of failed test cases, typically set by the service by parsing the
+ # xml_source. May also be set by the user.
#
- # - In response: present if previously set.
- # - In create/update request: optional
+ # - In create/response: always set
+ # - In update request: never
+ "name": "A String", # The name of the test suite.
+ #
+ # - In create/response: always set
+ # - In update request: never
+ "elapsedTime": { # # 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 "day"
# or "month". 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.
+ "seconds": "A String", # 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
"nanos": 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.
- "seconds": "A String", # 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
},
- },
- },
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "state": "A String", # The initial state is IN_PROGRESS.
- # The only legal state transitions are
- # * IN_PROGRESS -> 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
- "name": "A String", # 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
- "dimensionValue": [ # 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 = ['attempt', 'device']`
- # then a step must define values for those dimensions, eg.
- # `dimension_value = ['attempt': '1', 'device': 'Nexus 6']`
- #
- # 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 = ['attempt': '', 'device': 'Nexus 6']`
- #
- # 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
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- "completionTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "multiStep": { # 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 'primary step' 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
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "primaryStepId": "A String", # Step Id of the primary (original) step, which might be this step.
- "primaryStep": { # 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.
- "rollUp": "A String", # Rollup test status of multiple steps that were run with the same
- # configuration as a group.
- "individualOutcome": [ # 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.
- "runDuration": { # # 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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "stepId": "A String",
- "multistepNumber": 42, # Unique int given to each step.
- # Ranges from 0(inclusive) to total number of steps(exclusive).
- # The primary step is 0.
- "outcomeSummary": "A String",
- },
- ],
- },
- },
- "stepId": "A String", # 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
- "outcome": { # 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
- "summary": "A String", # The simplest way to interpret a result.
- #
- # Required
- "failureDetail": { # 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
- "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not
- # start.
- "notInstalled": 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.
- "timedOut": True or False, # If the test overran some time limit, and that is why it failed.
- "otherNativeCrash": True or False, # If a native process (including any other than the app) crashed.
- "crashed": True or False, # If the failure was severe because the system (app) under test crashed.
- },
- "inconclusiveDetail": { # 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
- "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of
- # infrastructure failures
- "infrastructureFailure": 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.
+ "flakyCount": 42, # Number of flaky test cases, set by the service by rolling up flaky test
+ # attempts.
#
- # For example, a mobile test requires provisioning a device where the test
- # executes, and that provisioning can fail.
- "abortedByUser": 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.
- },
- "successDetail": { # 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
- "otherNativeCrash": True or False, # If a native process other than the app crashed.
- },
- "skippedDetail": { # 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
- "incompatibleAppVersion": True or False, # If the App doesn't support the specific API level.
- "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model.
- "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86.
- },
- },
- "toolExecutionStep": { # Generic tool step to be used for binaries we do not explicitly support. # An execution of a tool (used for steps we don't explicitly support).
- # For example: running cp to copy artifacts from one location to another.
- "toolExecution": { # 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.
- "commandLineArguments": [ # The full tokenized command line including the program name (equivalent to
- # argv in a C program).
+ # Present only for rollup test suite overview at environment level. A step
+ # cannot have flaky test cases.
+ "errorCount": 42, # Number of test cases in error, typically set by the service by parsing the
+ # xml_source.
#
- # - In response: present if set by create request
- # - In create request: optional
- # - In update request: never set
- "A String",
- ],
- "exitCode": { # Exit code from a tool execution. # Tool execution exit code. This field will be set once the tool has
- # exited.
+ # - In create/response: always set
+ # - In update request: never
+ "totalCount": 42, # Number of test cases, typically set by the service by parsing the
+ # xml_source.
#
- # - 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.
- "number": 42, # Tool execution exit code. A value of 0 means that the execution was
- # successful.
+ # - In create/response: always set
+ # - In update request: never
+ "skippedCount": 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
+ "xmlSource": { # 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
+ "fileUri": "A String", # 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
},
- "toolLogs": [ # References to any plain text logs output the tool execution.
+ },
+ ],
+ "testTiming": { # 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
+ "testProcessDuration": { # # 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 "day"
+ # or "month". 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.
+ "seconds": "A String", # 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
+ "nanos": 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.
+ },
+ },
+ "testIssues": [ # 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.
+ "warning": { # # 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.
#
- # 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.
+ # Protobuf library provides support to pack/unpack Any values in the form
+ # of utility functions or additional generated methods of the Any type.
#
- # The maximum allowed number of tool logs per step is 1000.
+ # Example 1: Pack and unpack a message in C++.
#
- # - 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.
+ # Foo foo = ...;
+ # Any any;
+ # any.PackFrom(foo);
+ # ...
+ # if (any.UnpackTo(&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 := &pb.Foo{...}
+ # any, err := ptypes.MarshalAny(foo)
+ # ...
+ # foo := &pb.Foo{}
+ # if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ # ...
+ # }
+ #
+ # The pack methods provided by protobuf library will by default use
+ # 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ # methods only use the fully qualified type name after the last '/'
+ # in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ # name "y.z".
+ #
+ #
+ # # 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;
+ # }
+ #
+ # {
+ # "@type": "type.googleapis.com/google.profile.Person",
+ # "firstName": <string>,
+ # "lastName": <string>
+ # }
+ #
+ # 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):
+ #
+ # {
+ # "@type": "type.googleapis.com/google.protobuf.Duration",
+ # "value": "1.212s"
+ # }
+ "value": "A String", # Must be a valid serialized protocol buffer of the above specified type.
+ "typeUrl": "A String", # A URL/resource name that uniquely identifies the type of the serialized
+ # protocol buffer message. This string must contain at least
+ # one "/" character. The last segment of the URL'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 "." 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.
+ },
+ "severity": "A String", # Severity of issue.
+ # Required.
+ "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings.
+ "exception": "A String", # The stack trace message.
+ #
+ # Required
+ },
+ "type": "A String", # Type of issue.
+ # Required.
+ "errorMessage": "A String", # A brief human-readable message describing the issue.
+ # Required.
+ "category": "A String", # Category of issue.
+ # Required.
+ },
+ ],
+ "toolExecution": { # 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.
+ "commandLineArguments": [ # 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
+ "A String",
+ ],
+ "exitCode": { # 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.
+ "number": 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
+ },
+ "toolLogs": [ # 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.
+ "fileUri": "A String", # 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
+ },
+ ],
+ "toolOutputs": [ # 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.
+ "testCase": { # 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.
+ "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
+ "className": "A String", # The name of the class.
+ "name": "A String", # The name of the test case.
+ #
+ # Required.
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ "output": { # A reference to a file. # A FileReference to an output file.
+ #
+ # - In response: always set
+ # - In create/update request: always set
"fileUri": "A String", # The URI of a file stored in Google Cloud Storage.
#
# For example: http://storage.googleapis.com/mybucket/path/to/test.xml
@@ -6285,124 +6374,35 @@
# - In response: always set
# - In create/update request: always set
},
- ],
- "toolOutputs": [ # 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.
- "creationTime": { # 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 "smeared" 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.
- "nanos": 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.
- "seconds": "A String", # 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.
- },
- "output": { # A reference to a file. # A FileReference to an output file.
- #
- # - In response: always set
- # - In create/update request: always set
- "fileUri": "A String", # 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
- },
- "testCase": { # 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.
- "name": "A String", # The name of the test case.
- #
- # Required.
- "testSuiteName": "A String", # The name of the test suite to which this test case belongs.
- "className": "A String", # The name of the class.
- },
- },
- ],
- },
+ },
+ ],
},
- "deviceUsageDuration": { # # 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'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 "day"
- # or "month". 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.
- "nanos": 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.
- "seconds": "A String", # 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
- },
- "labels": [ # Arbitrary user-supplied key/value pairs that are associated with the
- # step.
- #
- # Users are responsible for managing the key namespace such that keys
- # don'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's value
- {
- "value": "A String",
- "key": "A String",
- },
- ],
- }</pre>
+ },
+ "creationTime": { # 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 "smeared" 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.
+ "nanos": 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.
+ "seconds": "A String", # 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.
+ },
+ }</pre>
</div>
</body></html>
\ No newline at end of file