accessibilityClusters(name=None, locale=None, x__xgafv=None)
Lists accessibility clusters for a given Step
create(projectId=*, historyId=*, executionId=*, body=None, requestId=None, x__xgafv=None)
Creates a Step.
get(projectId=None, historyId=None, executionId=None, stepId=None, x__xgafv=None)
Gets a Step.
getPerfMetricsSummary(projectId=*, historyId=*, executionId=*, stepId=*, x__xgafv=None)
Retrieves a PerfMetricsSummary.
list(projectId=None, historyId=None, executionId=None, pageSize=None, pageToken=None, x__xgafv=None)
Lists Steps for a given Execution.
list_next(previous_request=*, previous_response=*)
Retrieves the next page of results.
Updates an existing Step with the supplied partial entity.
Publish xml files to an existing Step.
accessibilityClusters(name=None, locale=None, x__xgafv=None)
Lists accessibility clusters for a given Step May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if an argument in the request happens to be invalid; e.g. if the locale format is incorrect - NOT_FOUND - if the containing Step does not exist Args: name: string, A full resource name of the step. For example, projects/my-project/histories/bh.1234567890abcdef/executions/ 1234567890123456789/steps/bs.1234567890abcdef Required. (required) locale: string, The accepted format is the canonical Unicode format with hyphen as a delimiter. Language must be lowercase, Language Script - Capitalized, Region - UPPERCASE. See http://www.unicode.org/reports/tr35/#Unicode_locale_identifier for details. Required. x__xgafv: string, V1 error format. Allowed values 1 - v1 error format 2 - v2 error format Returns: An object of the form: { # Response message for AccessibilityService.ListStepAccessibilityClusters. "clusters": [ # A sequence of accessibility suggestions, grouped into clusters. # Within the sequence, clusters that belong to the same SuggestionCategory # should be adjacent. # Within each category, clusters should be ordered by their # SuggestionPriority (ERRORs first). # The categories should be ordered by their highest priority cluster. { # A set of similar suggestions that we suspect are closely related. # # This proto and most of the nested protos are branched from # foxandcrown.prelaunchreport.service.SuggestionClusterProto, replacing PLR's # dependencies with FTL's. "category": "A String", # Category in which these types of suggestions should appear. # Always set. "suggestions": [ # A sequence of suggestions. All of the suggestions within a cluster must # have the same SuggestionPriority and belong to the same SuggestionCategory. # Suggestions with the same screenshot URL should be adjacent. { "title": "A String", # General title for the suggestion, in the user's language, without markup. # 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, # an element with resource name; similar to an XPath. "region": { # A rectangular region. # Region within the screenshot that is relevant to this suggestion. # Optional. "heightPx": 42, # The height, in pixels. # Always set. "widthPx": 42, # The width, in pixels. # Always set. "topPx": 42, # The top of the rectangle, in pixels. # Always set. "leftPx": 42, # The left side of the rectangle, in pixels. # Always set. }, "screenId": "A String", # ID of the screen for the suggestion. # It is used for getting the corresponding screenshot path. For example, # screen_id "1" corresponds to "1.png" file in GCS. # Always set. "priority": "A String", # Relative importance of a suggestion. # Always set. "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. "longMessage": { # IMPORTANT: It is unsafe to accept this message from an untrusted source, # Message, in the user's language, explaining the suggestion, which may # contain markup. # Always set. # since it's trivial for an attacker to forge serialized messages that # don't fulfill the type's safety contract -- for example, it could contain # attacker controlled script. A system which receives a SafeHtmlProto # implicitly trusts the producer of the SafeHtmlProto. So, it's generally safe # to return this message in RPC responses, but generally unsafe to accept it # in RPC requests. "privateDoNotAccessOrElseSafeHtmlWrappedValue": "A String", # IMPORTANT: Never set or read this field, even from tests, it is private. # See documentation at the top of .proto file for programming language # packages with which to create or read this message. }, "resourceName": "A String", # Reference to a view element, identified by its resource name, if it has # one. "helpUrl": "A String", # Reference to a help center article concerning this type of suggestion. # Always set. "shortMessage": { # IMPORTANT: It is unsafe to accept this message from an untrusted source, # Concise message, in the user's language, representing the suggestion, # which may contain markup. # Always set. # since it's trivial for an attacker to forge serialized messages that # don't fulfill the type's safety contract -- for example, it could contain # attacker controlled script. A system which receives a SafeHtmlProto # implicitly trusts the producer of the SafeHtmlProto. So, it's generally safe # to return this message in RPC responses, but generally unsafe to accept it # in RPC requests. "privateDoNotAccessOrElseSafeHtmlWrappedValue": "A String", # IMPORTANT: Never set or read this field, even from tests, it is private. # See documentation at the top of .proto file for programming language # packages with which to create or read this message. }, }, ], }, ], "name": "A String", # A full resource name of the step. # For example, projects/my-project/histories/bh.1234567890abcdef/executions/ # 1234567890123456789/steps/bs.1234567890abcdef # # Always presents. }
create(projectId=*, historyId=*, executionId=*, body=None, requestId=None, x__xgafv=None)
Creates a Step. The returned Step will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if the step is too large (more than 10Mib) - NOT_FOUND - if the containing Execution does not exist Args: projectId: string, Required. A Project id. (required) historyId: string, Required. A History id. (required) executionId: string, Required. An Execution id. (required) body: object, The request body. The object takes the form of: { # A Step represents a single operation performed as part of # Execution. A step can be used to represent the execution of a tool ( # for example a test runner execution or an execution of a compiler). # # Steps can overlap (for instance two steps might have the same # start time if some operations are done in parallel). # # Here is an example, let'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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 } 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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 }
get(projectId=None, historyId=None, executionId=None, stepId=None, x__xgafv=None)
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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 }
getPerfMetricsSummary(projectId=*, historyId=*, executionId=*, stepId=*, x__xgafv=None)
Retrieves a PerfMetricsSummary. May return any of the following error code(s): - NOT_FOUND - The specified PerfMetricsSummary does not exist Args: projectId: string, The cloud project (required) historyId: string, A tool results history ID. (required) executionId: string, A tool results execution ID. (required) stepId: string, A tool results step ID. (required) x__xgafv: string, V1 error format. Allowed values 1 - v1 error format 2 - v2 error format Returns: An object of the form: { # A summary of perf metrics collected and performance environment info "stepId": "A String", # A tool results step ID. # @OutputOnly "projectId": "A String", # The cloud project # @OutputOnly "perfEnvironment": { # Encapsulates performance environment info # Describes the environment in which the performance metrics were collected "cpuInfo": { # CPU related environment info "cpuProcessor": "A String", # description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A' "numberOfCores": 42, # the number of CPU cores "cpuSpeedInGhz": 3.14, # the CPU clock speed in GHz }, "memoryInfo": { # Memory related environment info "memoryTotalInKibibyte": "A String", # Total memory available on the device in KiB "memoryCapInKibibyte": "A String", # Maximum memory that can be allocated to the process in KiB }, }, "appStartTime": { "initialDisplayTime": { # # The time from app start to the first displayed activity being drawn, # as reported in Logcat. See # https://developer.android.com/topic/performance/launch-time.html#time-initial # A Duration represents a signed, fixed-length span of time represented # as a count of seconds and fractions of seconds at nanosecond # resolution. It is independent of any calendar and concepts like "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 }, "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 # Activity.reportFullyDrawn(). See # https://developer.android.com/topic/performance/launch-time.html#time-full # A Duration represents a signed, fixed-length span of time represented # as a count of seconds and fractions of seconds at nanosecond # resolution. It is independent of any calendar and concepts like "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 }, }, "historyId": "A String", # A tool results history ID. # @OutputOnly "graphicsStats": { # Graphics statistics for the App. # Graphics statistics for the entire run. Statistics are reset at the # beginning of the run and collected at the end of the run. # The information is collected from 'adb shell dumpsys graphicsstats'. # For more info see: # https://developer.android.com/training/testing/performance.html # Statistics will only be present for API 23+. "missedVsyncCount": "A String", # Total "missed vsync" events. "highInputLatencyCount": "A String", # Total "high input latency" events. "jankyFrames": "A String", # Total frames with slow render time. Should be <= total_frames. "buckets": [ # Histogram of frame render times. There should be 154 buckets ranging from # [5ms, 6ms) to [4950ms, infinity) { "renderMillis": "A String", # Lower bound of render time in milliseconds. "frameCount": "A String", # Number of frames in the bucket. }, ], "slowBitmapUploadCount": "A String", # Total "slow bitmap upload" events. "p90Millis": "A String", # 90th percentile frame render time in milliseconds. "p99Millis": "A String", # 99th percentile frame render time in milliseconds. "totalFrames": "A String", # Total frames rendered by package. "p95Millis": "A String", # 95th percentile frame render time in milliseconds. "slowUiThreadCount": "A String", # Total "slow UI thread" events. "slowDrawCount": "A String", # Total "slow draw" events. "p50Millis": "A String", # 50th percentile frame render time in milliseconds. }, "executionId": "A String", # A tool results execution ID. # @OutputOnly "perfMetrics": [ # Set of resource collected "A String", ], }
list(projectId=None, historyId=None, executionId=None, pageSize=None, pageToken=None, x__xgafv=None)
Lists Steps for a given Execution. The steps are sorted by creation_time in descending order. The step_id key will be used to order the steps with the same creation_time. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if an argument in the request happens to be invalid; e.g. if an attempt is made to list the children of a nonexistent Step - NOT_FOUND - if the containing Execution does not exist Args: projectId: string, A Project id. Required. (required) historyId: string, A History id. Required. (required) executionId: string, A Execution id. Required. (required) pageSize: integer, The maximum number of Steps to fetch. Default value: 25. The server will use this default if the field is not set or has a value of 0. Optional. pageToken: string, A continuation token to resume the query at the next item. Optional. x__xgafv: string, V1 error format. Allowed values 1 - v1 error format 2 - v2 error format Returns: An object of the form: { # Response message for StepService.List. "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). # # 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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 }, ], }
list_next(previous_request=*, previous_response=*)
Retrieves the next page of results. Args: previous_request: The request for the previous page. (required) previous_response: The response from the request for the previous page. (required) Returns: A request object that you can call 'execute()' on to request the next page. Returns None if there are no more items in the collection.
patch(projectId=None, historyId=None, executionId=None, stepId=None, body=None, requestId=None, x__xgafv=None)
Updates an existing Step with the supplied partial entity. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal (e.g try to upload a duplicate xml file), if the updated step is too large (more than 10Mib) - NOT_FOUND - if the containing Execution does not exist Args: projectId: string, A Project id. Required. (required) historyId: string, A History id. Required. (required) executionId: string, A Execution id. Required. (required) stepId: string, A Step id. Required. (required) body: object, The request body. The object takes the form of: { # A Step represents a single operation performed as part of # Execution. A step can be used to represent the execution of a tool ( # for example a test runner execution or an execution of a compiler). # # Steps can overlap (for instance two steps might have the same # start time if some operations are done in parallel). # # Here is an example, let'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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 } 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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 }
publishXunitXmlFiles(projectId=None, historyId=None, executionId=None, stepId=None, body=None, x__xgafv=None)
Publish xml files to an existing Step. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write project - INVALID_ARGUMENT - if the request is malformed - FAILED_PRECONDITION - if the requested state transition is illegal, e.g try to upload a duplicate xml file or a file too large. - NOT_FOUND - if the containing Execution does not exist Args: projectId: string, A Project id. Required. (required) historyId: string, A History id. Required. (required) executionId: string, A Execution id. Required. (required) stepId: string, A Step id. Note: This step must include a TestExecutionStep. Required. (required) body: object, The request body. The object takes the form of: { # Request message for StepService.PublishXunitXmlFiles. "xunitXmlFiles": [ # URI of the Xunit XML files to publish. # # The maximum size of the file this reference is pointing to is 50MB. # # Required. { # A reference to a file. "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 }, ], } 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 "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. "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 }, }, "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 "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. "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 "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 }, "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 "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 }, "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 "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 }, ], "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, "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. "category": "A String", # Category of issue. # Required. "stackTrace": { # A stacktrace. # Deprecated in favor of stack trace fields inside specific warnings. "exception": "A String", # The stack trace message. # # Required }, "severity": "A String", # Severity of issue. # Required. "errorMessage": "A String", # A brief human-readable message describing the issue. # Required. "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. }, "type": "A String", # Type of issue. # Required. }, ], }, "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 "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 "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. }, "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. "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 }, ], "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 }, "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. "className": "A String", # The name of the class. "testSuiteName": "A String", # The name of the test suite to which this test case belongs. "name": "A String", # The name of the test case. # # Required. }, "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 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. }, }, ], "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", ], }, }, "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 "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. }, "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 "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", }, ], "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 "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 "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. "hasErrorLogs": True or False, # If results are being provided to the user in certain cases of # infrastructure failures "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. }, "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. "incompatibleArchitecture": True or False, # If the App doesn't run on the specific architecture, for example, x86. "incompatibleDevice": True or False, # If the requested OS version doesn't run on the specific device model. }, "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. }, "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 "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. "unableToCrawl": True or False, # If the robo was unable to crawl the app; perhaps because the app did not # start. "timedOut": True or False, # If the test overran some time limit, and that is why it failed. "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. }, "summary": "A String", # The simplest way to interpret a result. # # Required }, "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. "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. "outcomeSummary": "A String", "stepId": "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. "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 }, "multistepNumber": 42, # Unique int given to each step. # Ranges from 0(inclusive) to total number of steps(exclusive). # The primary step is 0. }, ], "rollUp": "A String", # Rollup test status of multiple steps that were run with the same # configuration as a group. }, }, "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 }