| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  | # Copyright 2015 Google Inc. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  | # you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | # You may obtain a copy of the License at | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and | 
					
						
							|  |  |  | # limitations under the License. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require 'date' | 
					
						
							|  |  |  | require 'google/apis/core/base_service' | 
					
						
							|  |  |  | require 'google/apis/core/json_representation' | 
					
						
							|  |  |  | require 'google/apis/core/hashable' | 
					
						
							|  |  |  | require 'google/apis/errors' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Google | 
					
						
							|  |  |  |   module Apis | 
					
						
							|  |  |  |     module ToolresultsV1beta3 | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |       # Android app information. | 
					
						
							|  |  |  |       class AndroidAppInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the app. Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The package name of the app. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `packageName` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :package_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The internal version code of the app. Optional. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `versionCode` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :version_code | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The version name of the app. Optional. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `versionName` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :version_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @package_name = args[:package_name] if args.key?(:package_name) | 
					
						
							|  |  |  |           @version_code = args[:version_code] if args.key?(:version_code) | 
					
						
							|  |  |  |           @version_name = args[:version_name] if args.key?(:version_name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A test of an Android application that can control an Android component | 
					
						
							|  |  |  |       # independently of its normal lifecycle. | 
					
						
							|  |  |  |       # See  for more information on types of Android tests. | 
					
						
							|  |  |  |       class AndroidInstrumentationTest | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The java package for the test to be executed. Required | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testPackageId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :test_package_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The InstrumentationTestRunner class. Required | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testRunnerClass` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :test_runner_class | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Each target must be fully qualified with the package name or class name, in | 
					
						
							|  |  |  |         # one of these formats: - "package package_name" - "class package_name. | 
					
						
							|  |  |  |         # class_name" - "class package_name.class_name#method_name" | 
					
						
							|  |  |  |         # If empty, all targets in the module will be run. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testTargets` | 
					
						
							|  |  |  |         # @return [Array<String>] | 
					
						
							|  |  |  |         attr_accessor :test_targets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The flag indicates whether Android Test Orchestrator will be used to run test | 
					
						
							| 
									
										
										
										
											2017-10-26 00:35:44 +00:00
										 |  |  |         # or not. | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # Corresponds to the JSON property `useOrchestrator` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :use_orchestrator | 
					
						
							|  |  |  |         alias_method :use_orchestrator?, :use_orchestrator | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @test_package_id = args[:test_package_id] if args.key?(:test_package_id) | 
					
						
							|  |  |  |           @test_runner_class = args[:test_runner_class] if args.key?(:test_runner_class) | 
					
						
							|  |  |  |           @test_targets = args[:test_targets] if args.key?(:test_targets) | 
					
						
							|  |  |  |           @use_orchestrator = args[:use_orchestrator] if args.key?(:use_orchestrator) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A test of an android application that explores the application on a virtual or | 
					
						
							|  |  |  |       # physical Android device, finding culprits and crashes as it goes. | 
					
						
							|  |  |  |       class AndroidRoboTest | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The initial activity that should be used to start the app. Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `appInitialActivity` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :app_initial_activity | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The java package for the bootstrap. Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `bootstrapPackageId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :bootstrap_package_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The runner class for the bootstrap. Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `bootstrapRunnerClass` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :bootstrap_runner_class | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The max depth of the traversal stack Robo can explore. Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `maxDepth` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :max_depth | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The max number of steps/actions Robo can execute. Default is no limit (0). | 
					
						
							|  |  |  |         # Optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `maxSteps` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :max_steps | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @app_initial_activity = args[:app_initial_activity] if args.key?(:app_initial_activity) | 
					
						
							|  |  |  |           @bootstrap_package_id = args[:bootstrap_package_id] if args.key?(:bootstrap_package_id) | 
					
						
							|  |  |  |           @bootstrap_runner_class = args[:bootstrap_runner_class] if args.key?(:bootstrap_runner_class) | 
					
						
							|  |  |  |           @max_depth = args[:max_depth] if args.key?(:max_depth) | 
					
						
							|  |  |  |           @max_steps = args[:max_steps] if args.key?(:max_steps) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # An Android mobile test specification. | 
					
						
							|  |  |  |       class AndroidTest | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Android app information. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `androidAppInfo` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::AndroidAppInfo] | 
					
						
							|  |  |  |         attr_accessor :android_app_info | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A test of an Android application that can control an Android component | 
					
						
							|  |  |  |         # independently of its normal lifecycle. | 
					
						
							|  |  |  |         # See  for more information on types of Android tests. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `androidInstrumentationTest` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::AndroidInstrumentationTest] | 
					
						
							|  |  |  |         attr_accessor :android_instrumentation_test | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A test of an android application that explores the application on a virtual or | 
					
						
							|  |  |  |         # physical Android device, finding culprits and crashes as it goes. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `androidRoboTest` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::AndroidRoboTest] | 
					
						
							|  |  |  |         attr_accessor :android_robo_test | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testTimeout` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :test_timeout | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @android_app_info = args[:android_app_info] if args.key?(:android_app_info) | 
					
						
							|  |  |  |           @android_instrumentation_test = args[:android_instrumentation_test] if args.key?(:android_instrumentation_test) | 
					
						
							|  |  |  |           @android_robo_test = args[:android_robo_test] if args.key?(:android_robo_test) | 
					
						
							|  |  |  |           @test_timeout = args[:test_timeout] if args.key?(:test_timeout) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # `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) ... | 
					
						
							| 
									
										
										
										
											2017-05-26 16:44:32 +00:00
										 |  |  |       # 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 ` ... ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # 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": , " | 
					
						
							|  |  |  |       # lastName":  ` | 
					
						
							|  |  |  |       # 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" ` | 
					
						
							|  |  |  |       class Any | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-10-28 00:35:05 +00:00
										 |  |  |         # A URL/resource name that uniquely identifies the type of the serialized | 
					
						
							| 
									
										
										
										
											2018-09-05 00:36:34 +00:00
										 |  |  |         # 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). | 
					
						
							| 
									
										
										
										
											2017-10-28 00:35:05 +00:00
										 |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Schemes other than `http`, `https` (or the empty scheme) might be used with | 
					
						
							|  |  |  |         # implementation specific semantics. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `typeUrl` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :type_url | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Must be a valid serialized protocol buffer of the above specified type. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `value` | 
					
						
							| 
									
										
										
										
											2017-03-31 19:53:27 +00:00
										 |  |  |         # NOTE: Values are automatically base64 encoded/decoded in the client library. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :value | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @type_url = args[:type_url] if args.key?(:type_url) | 
					
						
							|  |  |  |           @value = args[:value] if args.key?(:value) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class AppStartTime | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `fullyDrawnTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :fully_drawn_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `initialDisplayTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :initial_display_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @fully_drawn_time = args[:fully_drawn_time] if args.key?(:fully_drawn_time) | 
					
						
							|  |  |  |           @initial_display_time = args[:initial_display_time] if args.key?(:initial_display_time) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # Encapsulates the metadata for basic sample series represented by a line chart | 
					
						
							|  |  |  |       class BasicPerfSampleSeries | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfMetricType` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :perf_metric_type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfUnit` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :perf_unit | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `sampleSeriesLabel` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :sample_series_label | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @perf_metric_type = args[:perf_metric_type] if args.key?(:perf_metric_type) | 
					
						
							|  |  |  |           @perf_unit = args[:perf_unit] if args.key?(:perf_unit) | 
					
						
							|  |  |  |           @sample_series_label = args[:sample_series_label] if args.key?(:sample_series_label) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # The request must provide up to a maximum of 5000 samples to be created; a | 
					
						
							|  |  |  |       # larger sample size will cause an INVALID_ARGUMENT error | 
					
						
							|  |  |  |       class BatchCreatePerfSamplesRequest | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The set of PerfSamples to create should not include existing timestamps | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfSamples` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>] | 
					
						
							|  |  |  |         attr_accessor :perf_samples | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @perf_samples = args[:perf_samples] if args.key?(:perf_samples) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class BatchCreatePerfSamplesResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfSamples` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>] | 
					
						
							|  |  |  |         attr_accessor :perf_samples | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @perf_samples = args[:perf_samples] if args.key?(:perf_samples) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class CpuInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A' | 
					
						
							|  |  |  |         # Corresponds to the JSON property `cpuProcessor` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :cpu_processor | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # the CPU clock speed in GHz | 
					
						
							|  |  |  |         # Corresponds to the JSON property `cpuSpeedInGhz` | 
					
						
							|  |  |  |         # @return [Float] | 
					
						
							|  |  |  |         attr_accessor :cpu_speed_in_ghz | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # the number of CPU cores | 
					
						
							|  |  |  |         # Corresponds to the JSON property `numberOfCores` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :number_of_cores | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @cpu_processor = args[:cpu_processor] if args.key?(:cpu_processor) | 
					
						
							|  |  |  |           @cpu_speed_in_ghz = args[:cpu_speed_in_ghz] if args.key?(:cpu_speed_in_ghz) | 
					
						
							|  |  |  |           @number_of_cores = args[:number_of_cores] if args.key?(:number_of_cores) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # 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. | 
					
						
							|  |  |  |       # # Examples | 
					
						
							|  |  |  |       # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |       # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |       # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |       # start.nanos; | 
					
						
							|  |  |  |       # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |       # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |       # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |       # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |       # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |       # duration.nanos; | 
					
						
							|  |  |  |       # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |       # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |       # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |       # FromTimedelta(td) | 
					
						
							|  |  |  |       # # JSON Mapping | 
					
						
							|  |  |  |       # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |       # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |       # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |       # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |       # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |       # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |       # format as "3.000001s". | 
					
						
							|  |  |  |       class Duration | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nanos` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :nanos | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `seconds` | 
					
						
							| 
									
										
										
										
											2017-04-03 20:18:48 +00:00
										 |  |  |         # @return [Fixnum] | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         attr_accessor :seconds | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @nanos = args[:nanos] if args.key?(:nanos) | 
					
						
							|  |  |  |           @seconds = args[:seconds] if args.key?(:seconds) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # An Execution represents a collection of Steps. For instance, it could | 
					
						
							|  |  |  |       # represent: - a mobile test executed across a range of device configurations - | 
					
						
							|  |  |  |       # a jenkins job with a build step followed by a test step | 
					
						
							|  |  |  |       # The maximum size of an execution message is 1 MiB. | 
					
						
							|  |  |  |       # An Execution can be updated until its state is set to COMPLETE at which point | 
					
						
							|  |  |  |       # it becomes immutable. | 
					
						
							|  |  |  |       class Execution | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `completionTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :completion_time | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `creationTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :creation_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A unique identifier within a History for this Execution. | 
					
						
							|  |  |  |         # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. | 
					
						
							|  |  |  |         # - In response always set - In create/update request: never set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `executionId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :execution_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Interprets a result so that humans and machines can act on it. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `outcome` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Outcome] | 
					
						
							|  |  |  |         attr_accessor :outcome | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # The details about how to run the execution. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `specification` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Specification] | 
					
						
							|  |  |  |         attr_accessor :specification | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # The initial state is IN_PROGRESS. | 
					
						
							|  |  |  |         # The only legal state transitions is from IN_PROGRESS to COMPLETE. | 
					
						
							|  |  |  |         # A PRECONDITION_FAILED will be returned if an invalid transition is requested. | 
					
						
							|  |  |  |         # The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be | 
					
						
							|  |  |  |         # returned if the state is set to COMPLETE multiple times. | 
					
						
							|  |  |  |         # If the state is set to COMPLETE, all the in-progress steps within the | 
					
						
							|  |  |  |         # execution will be set as COMPLETE. If the outcome of the step is not set, the | 
					
						
							|  |  |  |         # outcome will be set to INCONCLUSIVE. | 
					
						
							|  |  |  |         # - In response always set - In create/update request: optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `state` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :state | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # TestExecution Matrix ID that the TestExecutionService uses. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # - In response: present if set by create - In create: optional - In update: | 
					
						
							|  |  |  |         # never set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testExecutionMatrixId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :test_execution_matrix_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @completion_time = args[:completion_time] if args.key?(:completion_time) | 
					
						
							|  |  |  |           @creation_time = args[:creation_time] if args.key?(:creation_time) | 
					
						
							|  |  |  |           @execution_id = args[:execution_id] if args.key?(:execution_id) | 
					
						
							|  |  |  |           @outcome = args[:outcome] if args.key?(:outcome) | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |           @specification = args[:specification] if args.key?(:specification) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @state = args[:state] if args.key?(:state) | 
					
						
							|  |  |  |           @test_execution_matrix_id = args[:test_execution_matrix_id] if args.key?(:test_execution_matrix_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |       # Details for an outcome with a FAILURE outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class FailureDetail | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-09-27 00:35:09 +00:00
										 |  |  |         # If the failure was severe because the system (app) under test crashed. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `crashed` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :crashed | 
					
						
							|  |  |  |         alias_method :crashed?, :crashed | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `notInstalled` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :not_installed | 
					
						
							|  |  |  |         alias_method :not_installed?, :not_installed | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-09-27 00:35:09 +00:00
										 |  |  |         # If a native process (including any other than the app) crashed. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `otherNativeCrash` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :other_native_crash | 
					
						
							|  |  |  |         alias_method :other_native_crash?, :other_native_crash | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If the test overran some time limit, and that is why it failed. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `timedOut` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :timed_out | 
					
						
							|  |  |  |         alias_method :timed_out?, :timed_out | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If the robo was unable to crawl the app; perhaps because the app did not start. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `unableToCrawl` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :unable_to_crawl | 
					
						
							|  |  |  |         alias_method :unable_to_crawl?, :unable_to_crawl | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @crashed = args[:crashed] if args.key?(:crashed) | 
					
						
							|  |  |  |           @not_installed = args[:not_installed] if args.key?(:not_installed) | 
					
						
							|  |  |  |           @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash) | 
					
						
							|  |  |  |           @timed_out = args[:timed_out] if args.key?(:timed_out) | 
					
						
							|  |  |  |           @unable_to_crawl = args[:unable_to_crawl] if args.key?(:unable_to_crawl) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A reference to a file. | 
					
						
							|  |  |  |       class FileReference | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `fileUri` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :file_uri | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @file_uri = args[:file_uri] if args.key?(:file_uri) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-10-08 00:35:06 +00:00
										 |  |  |       # Graphics statistics for the App. 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+. | 
					
						
							|  |  |  |       class GraphicsStats | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Histogram of frame render times. There should be 154 buckets ranging from [5ms, | 
					
						
							|  |  |  |         # 6ms) to [4950ms, infinity) | 
					
						
							|  |  |  |         # Corresponds to the JSON property `buckets` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::GraphicsStatsBucket>] | 
					
						
							|  |  |  |         attr_accessor :buckets | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total "high input latency" events. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `highInputLatencyCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :high_input_latency_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total frames with slow render time. Should be <= total_frames. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `jankyFrames` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :janky_frames | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total "missed vsync" events. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `missedVsyncCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :missed_vsync_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 50th percentile frame render time in milliseconds. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `p50Millis` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :p50_millis | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 90th percentile frame render time in milliseconds. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `p90Millis` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :p90_millis | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 95th percentile frame render time in milliseconds. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `p95Millis` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :p95_millis | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 99th percentile frame render time in milliseconds. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `p99Millis` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :p99_millis | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total "slow bitmap upload" events. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `slowBitmapUploadCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :slow_bitmap_upload_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total "slow draw" events. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `slowDrawCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :slow_draw_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total "slow UI thread" events. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `slowUiThreadCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :slow_ui_thread_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total frames rendered by package. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `totalFrames` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :total_frames | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @buckets = args[:buckets] if args.key?(:buckets) | 
					
						
							|  |  |  |           @high_input_latency_count = args[:high_input_latency_count] if args.key?(:high_input_latency_count) | 
					
						
							|  |  |  |           @janky_frames = args[:janky_frames] if args.key?(:janky_frames) | 
					
						
							|  |  |  |           @missed_vsync_count = args[:missed_vsync_count] if args.key?(:missed_vsync_count) | 
					
						
							|  |  |  |           @p50_millis = args[:p50_millis] if args.key?(:p50_millis) | 
					
						
							|  |  |  |           @p90_millis = args[:p90_millis] if args.key?(:p90_millis) | 
					
						
							|  |  |  |           @p95_millis = args[:p95_millis] if args.key?(:p95_millis) | 
					
						
							|  |  |  |           @p99_millis = args[:p99_millis] if args.key?(:p99_millis) | 
					
						
							|  |  |  |           @slow_bitmap_upload_count = args[:slow_bitmap_upload_count] if args.key?(:slow_bitmap_upload_count) | 
					
						
							|  |  |  |           @slow_draw_count = args[:slow_draw_count] if args.key?(:slow_draw_count) | 
					
						
							|  |  |  |           @slow_ui_thread_count = args[:slow_ui_thread_count] if args.key?(:slow_ui_thread_count) | 
					
						
							|  |  |  |           @total_frames = args[:total_frames] if args.key?(:total_frames) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class GraphicsStatsBucket | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Number of frames in the bucket. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `frameCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :frame_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Lower bound of render time in milliseconds. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `renderMillis` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :render_millis | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @frame_count = args[:frame_count] if args.key?(:frame_count) | 
					
						
							|  |  |  |           @render_millis = args[:render_millis] if args.key?(:render_millis) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # A History represents a sorted list of Executions ordered by the | 
					
						
							|  |  |  |       # start_timestamp_millis field (descending). It can be used to group all the | 
					
						
							|  |  |  |       # Executions of a continuous build. | 
					
						
							|  |  |  |       # Note that the ordering only operates on one-dimension. If a repository has | 
					
						
							|  |  |  |       # multiple branches, it means that multiple histories will need to be used in | 
					
						
							|  |  |  |       # order to order Executions per branch. | 
					
						
							|  |  |  |       class History | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A short human-readable (plain text) name to display in the UI. Maximum of 100 | 
					
						
							|  |  |  |         # characters. | 
					
						
							|  |  |  |         # - In response: present if set during create. - In create request: optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `displayName` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :display_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A unique identifier within a project for this History. | 
					
						
							|  |  |  |         # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. | 
					
						
							|  |  |  |         # - In response always set - In create request: never set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `historyId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :history_id | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-03-07 00:35:37 +00:00
										 |  |  |         # A name to uniquely identify a history within a project. Maximum of 200 | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # characters. | 
					
						
							|  |  |  |         # - In response always set - In create request: always set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @display_name = args[:display_name] if args.key?(:display_name) | 
					
						
							|  |  |  |           @history_id = args[:history_id] if args.key?(:history_id) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # An image, with a link to the main image and a thumbnail. | 
					
						
							|  |  |  |       class Image | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The `Status` type defines a logical error model that is suitable for different | 
					
						
							|  |  |  |         # programming environments, including REST APIs and RPC APIs. It is used by [ | 
					
						
							| 
									
										
										
										
											2019-05-30 00:36:59 +00:00
										 |  |  |         # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of | 
					
						
							|  |  |  |         # data: error code, error message, and error details. | 
					
						
							|  |  |  |         # You can find out more about this error model and how to work with it in the [ | 
					
						
							|  |  |  |         # API Design Guide](https://cloud.google.com/apis/design/errors). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `error` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Status] | 
					
						
							|  |  |  |         attr_accessor :error | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A reference to a ToolExecution output file. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `sourceImage` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::ToolOutputReference] | 
					
						
							|  |  |  |         attr_accessor :source_image | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The step to which the image is attached. | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A single thumbnail, with its size and format. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `thumbnail` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Thumbnail] | 
					
						
							|  |  |  |         attr_accessor :thumbnail | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @error = args[:error] if args.key?(:error) | 
					
						
							|  |  |  |           @source_image = args[:source_image] if args.key?(:source_image) | 
					
						
							|  |  |  |           @step_id = args[:step_id] if args.key?(:step_id) | 
					
						
							|  |  |  |           @thumbnail = args[:thumbnail] if args.key?(:thumbnail) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |       # Details for an outcome with an INCONCLUSIVE outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class InconclusiveDetail | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `abortedByUser` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :aborted_by_user | 
					
						
							|  |  |  |         alias_method :aborted_by_user?, :aborted_by_user | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-07-04 00:37:48 +00:00
										 |  |  |         # If results are being provided to the user in certain cases of infrastructure | 
					
						
							|  |  |  |         # failures | 
					
						
							|  |  |  |         # Corresponds to the JSON property `hasErrorLogs` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :has_error_logs | 
					
						
							|  |  |  |         alias_method :has_error_logs?, :has_error_logs | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `infrastructureFailure` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :infrastructure_failure | 
					
						
							|  |  |  |         alias_method :infrastructure_failure?, :infrastructure_failure | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @aborted_by_user = args[:aborted_by_user] if args.key?(:aborted_by_user) | 
					
						
							| 
									
										
										
										
											2019-07-04 00:37:48 +00:00
										 |  |  |           @has_error_logs = args[:has_error_logs] if args.key?(:has_error_logs) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @infrastructure_failure = args[:infrastructure_failure] if args.key?(:infrastructure_failure) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |       # Step Id and outcome of each individual step that was run as a group with other | 
					
						
							|  |  |  |       # steps with the same configuration. | 
					
						
							|  |  |  |       class IndividualOutcome | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |         # Unique int given to each step. Ranges from 0(inclusive) to total number of | 
					
						
							|  |  |  |         # steps(exclusive). The primary step is 0. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `multistepNumber` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :multistep_number | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `outcomeSummary` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :outcome_summary | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `runDuration` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :run_duration | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |           @multistep_number = args[:multistep_number] if args.key?(:multistep_number) | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |           @outcome_summary = args[:outcome_summary] if args.key?(:outcome_summary) | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |           @run_duration = args[:run_duration] if args.key?(:run_duration) | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |           @step_id = args[:step_id] if args.key?(:step_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class ListExecutionsResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Executions. | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `executions` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::Execution>] | 
					
						
							|  |  |  |         attr_accessor :executions | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A continuation token to resume the query at the next item. | 
					
						
							|  |  |  |         # Will only be set if there are more Executions to fetch. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @executions = args[:executions] if args.key?(:executions) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Response message for HistoryService.List | 
					
						
							|  |  |  |       class ListHistoriesResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Histories. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `histories` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::History>] | 
					
						
							|  |  |  |         attr_accessor :histories | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A continuation token to resume the query at the next item. | 
					
						
							|  |  |  |         # Will only be set if there are more histories to fetch. | 
					
						
							|  |  |  |         # Tokens are valid for up to one hour from the time of the first list request. | 
					
						
							|  |  |  |         # For instance, if you make a list request at 1PM and use the token from this | 
					
						
							|  |  |  |         # first request 10 minutes later, the token from this second response will only | 
					
						
							|  |  |  |         # be valid for 50 minutes. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @histories = args[:histories] if args.key?(:histories) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class ListPerfSampleSeriesResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The resulting PerfSampleSeries sorted by id | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfSampleSeries` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSampleSeries>] | 
					
						
							|  |  |  |         attr_accessor :perf_sample_series | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @perf_sample_series = args[:perf_sample_series] if args.key?(:perf_sample_series) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class ListPerfSamplesResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Optional, returned if result size exceeds the page size specified in the | 
					
						
							|  |  |  |         # request (or the default page size, 500, if unspecified). It indicates the last | 
					
						
							|  |  |  |         # sample timestamp to be used as page_token in subsequent request | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfSamples` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>] | 
					
						
							|  |  |  |         attr_accessor :perf_samples | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |           @perf_samples = args[:perf_samples] if args.key?(:perf_samples) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class ListScreenshotClustersResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-02-28 00:36:29 +00:00
										 |  |  |         # The set of clusters associated with an execution Always set | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # Corresponds to the JSON property `clusters` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::ScreenshotCluster>] | 
					
						
							|  |  |  |         attr_accessor :clusters | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @clusters = args[:clusters] if args.key?(:clusters) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # A response containing the thumbnails in a step. | 
					
						
							|  |  |  |       class ListStepThumbnailsResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A continuation token to resume the query at the next item. | 
					
						
							|  |  |  |         # If set, indicates that there are more thumbnails to read, by calling list | 
					
						
							|  |  |  |         # again with this value in the page_token field. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A list of image data. | 
					
						
							|  |  |  |         # Images are returned in a deterministic order; they are ordered by these | 
					
						
							|  |  |  |         # factors, in order of importance: * First, by their associated test case. | 
					
						
							|  |  |  |         # Images without a test case are considered greater than images with one. * | 
					
						
							|  |  |  |         # Second, by their creation time. Images without a creation time are greater | 
					
						
							|  |  |  |         # than images with one. * Third, by the order in which they were added to the | 
					
						
							|  |  |  |         # step (by calls to CreateStep or UpdateStep). | 
					
						
							|  |  |  |         # Corresponds to the JSON property `thumbnails` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::Image>] | 
					
						
							|  |  |  |         attr_accessor :thumbnails | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |           @thumbnails = args[:thumbnails] if args.key?(:thumbnails) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Response message for StepService.List. | 
					
						
							|  |  |  |       class ListStepsResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Steps. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `steps` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::Step>] | 
					
						
							|  |  |  |         attr_accessor :steps | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |           @steps = args[:steps] if args.key?(:steps) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |       # Response message for StepService.ListTestCases. | 
					
						
							|  |  |  |       class ListTestCasesResponse | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nextPageToken` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :next_page_token | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # List of test cases. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testCases` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::TestCase>] | 
					
						
							|  |  |  |         attr_accessor :test_cases | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @next_page_token = args[:next_page_token] if args.key?(:next_page_token) | 
					
						
							|  |  |  |           @test_cases = args[:test_cases] if args.key?(:test_cases) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class MemoryInfo | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Maximum memory that can be allocated to the process in KiB | 
					
						
							|  |  |  |         # Corresponds to the JSON property `memoryCapInKibibyte` | 
					
						
							| 
									
										
										
										
											2017-04-03 20:18:48 +00:00
										 |  |  |         # @return [Fixnum] | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         attr_accessor :memory_cap_in_kibibyte | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Total memory available on the device in KiB | 
					
						
							|  |  |  |         # Corresponds to the JSON property `memoryTotalInKibibyte` | 
					
						
							| 
									
										
										
										
											2017-04-03 20:18:48 +00:00
										 |  |  |         # @return [Fixnum] | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         attr_accessor :memory_total_in_kibibyte | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @memory_cap_in_kibibyte = args[:memory_cap_in_kibibyte] if args.key?(:memory_cap_in_kibibyte) | 
					
						
							|  |  |  |           @memory_total_in_kibibyte = args[:memory_total_in_kibibyte] if args.key?(:memory_total_in_kibibyte) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |       # Details when multiple steps are run with the same configuration as a group. | 
					
						
							|  |  |  |       class MultiStep | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Unique int given to each step. Ranges from 0(inclusive) to total number of | 
					
						
							|  |  |  |         # steps(exclusive). The primary step is 0. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `multistepNumber` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :multistep_number | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Stores rollup test status of multiple steps that were run as a group and | 
					
						
							|  |  |  |         # outcome of each individual step. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `primaryStep` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::PrimaryStep] | 
					
						
							|  |  |  |         attr_accessor :primary_step | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Step Id of the primary (original) step, which might be this step. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `primaryStepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :primary_step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @multistep_number = args[:multistep_number] if args.key?(:multistep_number) | 
					
						
							|  |  |  |           @primary_step = args[:primary_step] if args.key?(:primary_step) | 
					
						
							|  |  |  |           @primary_step_id = args[:primary_step_id] if args.key?(:primary_step_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # Interprets a result so that humans and machines can act on it. | 
					
						
							|  |  |  |       class Outcome | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |         # Details for an outcome with a FAILURE outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `failureDetail` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::FailureDetail] | 
					
						
							|  |  |  |         attr_accessor :failure_detail | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |         # Details for an outcome with an INCONCLUSIVE outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `inconclusiveDetail` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::InconclusiveDetail] | 
					
						
							|  |  |  |         attr_accessor :inconclusive_detail | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |         # Details for an outcome with a SKIPPED outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `skippedDetail` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::SkippedDetail] | 
					
						
							|  |  |  |         attr_accessor :skipped_detail | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |         # Details for an outcome with a SUCCESS outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `successDetail` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::SuccessDetail] | 
					
						
							|  |  |  |         attr_accessor :success_detail | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The simplest way to interpret a result. | 
					
						
							|  |  |  |         # Required | 
					
						
							|  |  |  |         # Corresponds to the JSON property `summary` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :summary | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @failure_detail = args[:failure_detail] if args.key?(:failure_detail) | 
					
						
							|  |  |  |           @inconclusive_detail = args[:inconclusive_detail] if args.key?(:inconclusive_detail) | 
					
						
							|  |  |  |           @skipped_detail = args[:skipped_detail] if args.key?(:skipped_detail) | 
					
						
							|  |  |  |           @success_detail = args[:success_detail] if args.key?(:success_detail) | 
					
						
							|  |  |  |           @summary = args[:summary] if args.key?(:summary) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Encapsulates performance environment info | 
					
						
							|  |  |  |       class PerfEnvironment | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # CPU related environment info | 
					
						
							|  |  |  |         # Corresponds to the JSON property `cpuInfo` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::CpuInfo] | 
					
						
							|  |  |  |         attr_accessor :cpu_info | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Memory related environment info | 
					
						
							|  |  |  |         # Corresponds to the JSON property `memoryInfo` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::MemoryInfo] | 
					
						
							|  |  |  |         attr_accessor :memory_info | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @cpu_info = args[:cpu_info] if args.key?(:cpu_info) | 
					
						
							|  |  |  |           @memory_info = args[:memory_info] if args.key?(:memory_info) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A summary of perf metrics collected and performance environment info | 
					
						
							|  |  |  |       class PerfMetricsSummary | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `appStartTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::AppStartTime] | 
					
						
							|  |  |  |         attr_accessor :app_start_time | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # A tool results execution ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `executionId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :execution_id | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-10-08 00:35:06 +00:00
										 |  |  |         # Graphics statistics for the App. 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+. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `graphicsStats` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::GraphicsStats] | 
					
						
							|  |  |  |         attr_accessor :graphics_stats | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # A tool results history ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `historyId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :history_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Encapsulates performance environment info | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfEnvironment` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::PerfEnvironment] | 
					
						
							|  |  |  |         attr_accessor :perf_environment | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Set of resource collected | 
					
						
							|  |  |  |         # Corresponds to the JSON property `perfMetrics` | 
					
						
							|  |  |  |         # @return [Array<String>] | 
					
						
							|  |  |  |         attr_accessor :perf_metrics | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The cloud project | 
					
						
							|  |  |  |         # Corresponds to the JSON property `projectId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :project_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A tool results step ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |           @app_start_time = args[:app_start_time] if args.key?(:app_start_time) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @execution_id = args[:execution_id] if args.key?(:execution_id) | 
					
						
							| 
									
										
										
										
											2017-10-08 00:35:06 +00:00
										 |  |  |           @graphics_stats = args[:graphics_stats] if args.key?(:graphics_stats) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @history_id = args[:history_id] if args.key?(:history_id) | 
					
						
							|  |  |  |           @perf_environment = args[:perf_environment] if args.key?(:perf_environment) | 
					
						
							|  |  |  |           @perf_metrics = args[:perf_metrics] if args.key?(:perf_metrics) | 
					
						
							|  |  |  |           @project_id = args[:project_id] if args.key?(:project_id) | 
					
						
							|  |  |  |           @step_id = args[:step_id] if args.key?(:step_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Resource representing a single performance measure or data point | 
					
						
							|  |  |  |       class PerfSample | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `sampleTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :sample_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Value observed | 
					
						
							|  |  |  |         # Corresponds to the JSON property `value` | 
					
						
							|  |  |  |         # @return [Float] | 
					
						
							|  |  |  |         attr_accessor :value | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @sample_time = args[:sample_time] if args.key?(:sample_time) | 
					
						
							|  |  |  |           @value = args[:value] if args.key?(:value) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Resource representing a collection of performance samples (or data points) | 
					
						
							|  |  |  |       class PerfSampleSeries | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Encapsulates the metadata for basic sample series represented by a line chart | 
					
						
							|  |  |  |         # Corresponds to the JSON property `basicPerfSampleSeries` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::BasicPerfSampleSeries] | 
					
						
							|  |  |  |         attr_accessor :basic_perf_sample_series | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A tool results execution ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `executionId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :execution_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A tool results history ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `historyId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :history_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The cloud project | 
					
						
							|  |  |  |         # Corresponds to the JSON property `projectId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :project_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A sample series id | 
					
						
							|  |  |  |         # Corresponds to the JSON property `sampleSeriesId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :sample_series_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A tool results step ID. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @basic_perf_sample_series = args[:basic_perf_sample_series] if args.key?(:basic_perf_sample_series) | 
					
						
							|  |  |  |           @execution_id = args[:execution_id] if args.key?(:execution_id) | 
					
						
							|  |  |  |           @history_id = args[:history_id] if args.key?(:history_id) | 
					
						
							|  |  |  |           @project_id = args[:project_id] if args.key?(:project_id) | 
					
						
							|  |  |  |           @sample_series_id = args[:sample_series_id] if args.key?(:sample_series_id) | 
					
						
							|  |  |  |           @step_id = args[:step_id] if args.key?(:step_id) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |       # Stores rollup test status of multiple steps that were run as a group and | 
					
						
							|  |  |  |       # outcome of each individual step. | 
					
						
							|  |  |  |       class PrimaryStep | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Step Id and outcome of each individual step. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `individualOutcome` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::IndividualOutcome>] | 
					
						
							|  |  |  |         attr_accessor :individual_outcome | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Rollup test status of multiple steps that were run with the same configuration | 
					
						
							|  |  |  |         # as a group. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `rollUp` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :roll_up | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @individual_outcome = args[:individual_outcome] if args.key?(:individual_outcome) | 
					
						
							|  |  |  |           @roll_up = args[:roll_up] if args.key?(:roll_up) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # Per-project settings for the Tool Results service. | 
					
						
							|  |  |  |       class ProjectSettings | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the Google Cloud Storage bucket to which results are written. | 
					
						
							|  |  |  |         # By default, this is unset. | 
					
						
							|  |  |  |         # In update request: optional In response: optional | 
					
						
							|  |  |  |         # Corresponds to the JSON property `defaultBucket` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :default_bucket | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the project's settings. | 
					
						
							|  |  |  |         # Always of the form: projects/`project-id`/settings | 
					
						
							|  |  |  |         # In update request: never set In response: always set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @default_bucket = args[:default_bucket] if args.key?(:default_bucket) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Request message for StepService.PublishXunitXmlFiles. | 
					
						
							|  |  |  |       class PublishXunitXmlFilesRequest | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # URI of the Xunit XML files to publish. | 
					
						
							|  |  |  |         # The maximum size of the file this reference is pointing to is 50MB. | 
					
						
							|  |  |  |         # Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `xunitXmlFiles` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>] | 
					
						
							|  |  |  |         attr_accessor :xunit_xml_files | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @xunit_xml_files = args[:xunit_xml_files] if args.key?(:xunit_xml_files) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class Screen | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # File reference of the png file. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `fileReference` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :file_reference | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Locale of the device that the screenshot was taken on. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `locale` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :locale | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Model of the device that the screenshot was taken on. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `model` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :model | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # OS version of the device that the screenshot was taken on. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `version` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :version | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @file_reference = args[:file_reference] if args.key?(:file_reference) | 
					
						
							|  |  |  |           @locale = args[:locale] if args.key?(:locale) | 
					
						
							|  |  |  |           @model = args[:model] if args.key?(:model) | 
					
						
							|  |  |  |           @version = args[:version] if args.key?(:version) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class ScreenshotCluster | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A string that describes the activity of every screen in the cluster. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `activity` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :activity | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A unique identifier for the cluster. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `clusterId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :cluster_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A singular screen that represents the cluster as a whole. This screen will act | 
					
						
							|  |  |  |         # as the "cover" of the entire cluster. When users look at the clusters, only | 
					
						
							|  |  |  |         # the key screen from each cluster will be shown. Which screen is the key screen | 
					
						
							|  |  |  |         # is determined by the ClusteringAlgorithm | 
					
						
							|  |  |  |         # Corresponds to the JSON property `keyScreen` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Screen] | 
					
						
							|  |  |  |         attr_accessor :key_screen | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Full list of screens. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `screens` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::Screen>] | 
					
						
							|  |  |  |         attr_accessor :screens | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @activity = args[:activity] if args.key?(:activity) | 
					
						
							|  |  |  |           @cluster_id = args[:cluster_id] if args.key?(:cluster_id) | 
					
						
							|  |  |  |           @key_screen = args[:key_screen] if args.key?(:key_screen) | 
					
						
							|  |  |  |           @screens = args[:screens] if args.key?(:screens) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |       # Details for an outcome with a SKIPPED outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class SkippedDetail | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If the App doesn't support the specific API level. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `incompatibleAppVersion` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :incompatible_app_version | 
					
						
							|  |  |  |         alias_method :incompatible_app_version?, :incompatible_app_version | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If the App doesn't run on the specific architecture, for example, x86. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `incompatibleArchitecture` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :incompatible_architecture | 
					
						
							|  |  |  |         alias_method :incompatible_architecture?, :incompatible_architecture | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If the requested OS version doesn't run on the specific device model. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `incompatibleDevice` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :incompatible_device | 
					
						
							|  |  |  |         alias_method :incompatible_device?, :incompatible_device | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @incompatible_app_version = args[:incompatible_app_version] if args.key?(:incompatible_app_version) | 
					
						
							|  |  |  |           @incompatible_architecture = args[:incompatible_architecture] if args.key?(:incompatible_architecture) | 
					
						
							|  |  |  |           @incompatible_device = args[:incompatible_device] if args.key?(:incompatible_device) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |       # The details about how to run the execution. | 
					
						
							|  |  |  |       class Specification | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # An Android mobile test specification. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `androidTest` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::AndroidTest] | 
					
						
							|  |  |  |         attr_accessor :android_test | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @android_test = args[:android_test] if args.key?(:android_test) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # A stacktrace. | 
					
						
							|  |  |  |       class StackTrace | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The stack trace message. | 
					
						
							|  |  |  |         # Required | 
					
						
							|  |  |  |         # Corresponds to the JSON property `exception` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :exception | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @exception = args[:exception] if args.key?(:exception) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # The `Status` type defines a logical error model that is suitable for different | 
					
						
							|  |  |  |       # programming environments, including REST APIs and RPC APIs. It is used by [ | 
					
						
							| 
									
										
										
										
											2019-05-30 00:36:59 +00:00
										 |  |  |       # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of | 
					
						
							|  |  |  |       # data: error code, error message, and error details. | 
					
						
							|  |  |  |       # You can find out more about this error model and how to work with it in the [ | 
					
						
							|  |  |  |       # API Design Guide](https://cloud.google.com/apis/design/errors). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class Status | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The status code, which should be an enum value of [google.rpc.Code][]. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `code` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :code | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-07-12 20:10:42 +00:00
										 |  |  |         # A list of messages that carry the error details. There is a common set of | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # message types for APIs to use. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `details` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::Any>] | 
					
						
							|  |  |  |         attr_accessor :details | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A developer-facing error message, which should be in English. Any user-facing | 
					
						
							|  |  |  |         # error message should be localized and sent in the [google.rpc.Status.details][] | 
					
						
							|  |  |  |         # field, or localized by the client. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `message` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :message | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @code = args[:code] if args.key?(:code) | 
					
						
							|  |  |  |           @details = args[:details] if args.key?(:details) | 
					
						
							|  |  |  |           @message = args[:message] if args.key?(:message) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # 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. | 
					
						
							| 
									
										
										
										
											2019-09-10 21:25:47 +00:00
										 |  |  |       # Next tag: 23 | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class Step | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `completionTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :completion_time | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `creationTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :creation_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `description` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :description | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `deviceUsageDuration` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :device_usage_duration | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `dimensionValue` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::StepDimensionValueEntry>] | 
					
						
							|  |  |  |         attr_accessor :dimension_value | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `hasImages` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :has_images | 
					
						
							|  |  |  |         alias_method :has_images?, :has_images | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `labels` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::StepLabelsEntry>] | 
					
						
							|  |  |  |         attr_accessor :labels | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |         # Details when multiple steps are run with the same configuration as a group. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `multiStep` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::MultiStep] | 
					
						
							|  |  |  |         attr_accessor :multi_step | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Interprets a result so that humans and machines can act on it. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `outcome` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Outcome] | 
					
						
							|  |  |  |         attr_accessor :outcome | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `runDuration` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :run_duration | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `state` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :state | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stepId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :step_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A step that represents running tests. | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testExecutionStep` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::TestExecutionStep] | 
					
						
							|  |  |  |         attr_accessor :test_execution_step | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Generic tool step to be used for binaries we do not explicitly support. For | 
					
						
							|  |  |  |         # example: running cp to copy artifacts from one location to another. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolExecutionStep` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::ToolExecutionStep] | 
					
						
							|  |  |  |         attr_accessor :tool_execution_step | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @completion_time = args[:completion_time] if args.key?(:completion_time) | 
					
						
							|  |  |  |           @creation_time = args[:creation_time] if args.key?(:creation_time) | 
					
						
							|  |  |  |           @description = args[:description] if args.key?(:description) | 
					
						
							|  |  |  |           @device_usage_duration = args[:device_usage_duration] if args.key?(:device_usage_duration) | 
					
						
							|  |  |  |           @dimension_value = args[:dimension_value] if args.key?(:dimension_value) | 
					
						
							|  |  |  |           @has_images = args[:has_images] if args.key?(:has_images) | 
					
						
							|  |  |  |           @labels = args[:labels] if args.key?(:labels) | 
					
						
							| 
									
										
										
										
											2019-02-20 02:14:27 +00:00
										 |  |  |           @multi_step = args[:multi_step] if args.key?(:multi_step) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @outcome = args[:outcome] if args.key?(:outcome) | 
					
						
							|  |  |  |           @run_duration = args[:run_duration] if args.key?(:run_duration) | 
					
						
							|  |  |  |           @state = args[:state] if args.key?(:state) | 
					
						
							|  |  |  |           @step_id = args[:step_id] if args.key?(:step_id) | 
					
						
							|  |  |  |           @test_execution_step = args[:test_execution_step] if args.key?(:test_execution_step) | 
					
						
							|  |  |  |           @tool_execution_step = args[:tool_execution_step] if args.key?(:tool_execution_step) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class StepDimensionValueEntry | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `key` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :key | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `value` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :value | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @key = args[:key] if args.key?(:key) | 
					
						
							|  |  |  |           @value = args[:value] if args.key?(:value) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       #  | 
					
						
							|  |  |  |       class StepLabelsEntry | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `key` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :key | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         #  | 
					
						
							|  |  |  |         # Corresponds to the JSON property `value` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :value | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @key = args[:key] if args.key?(:key) | 
					
						
							|  |  |  |           @value = args[:value] if args.key?(:value) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-05-10 00:37:26 +00:00
										 |  |  |       # Details for an outcome with a SUCCESS outcome summary. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class SuccessDetail | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # If a native process other than the app crashed. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `otherNativeCrash` | 
					
						
							|  |  |  |         # @return [Boolean] | 
					
						
							|  |  |  |         attr_accessor :other_native_crash | 
					
						
							|  |  |  |         alias_method :other_native_crash?, :other_native_crash | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |       #  | 
					
						
							|  |  |  |       class TestCase | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							|  |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							|  |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `elapsedTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :elapsed_time | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							|  |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							|  |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							|  |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							|  |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							|  |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							|  |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `endTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :end_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Why the test case was skipped. | 
					
						
							|  |  |  |         # Present only for skipped test case | 
					
						
							|  |  |  |         # Corresponds to the JSON property `skippedMessage` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :skipped_message | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The stack trace details if the test case failed or encountered an error. | 
					
						
							|  |  |  |         # The maximum size of the stack traces is 100KiB, beyond which the stack track | 
					
						
							|  |  |  |         # will be truncated. | 
					
						
							|  |  |  |         # Zero if the test case passed. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stackTraces` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::StackTrace>] | 
					
						
							|  |  |  |         attr_accessor :stack_traces | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							|  |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							|  |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							|  |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							|  |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							|  |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							|  |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `startTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :start_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The status of the test case. | 
					
						
							|  |  |  |         # Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `status` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :status | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A unique identifier within a Step for this Test Case. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testCaseId` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :test_case_id | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A reference to a test case. | 
					
						
							|  |  |  |         # Test case references are canonically ordered lexicographically by these three | 
					
						
							|  |  |  |         # factors: * First, by test_suite_name. * Second, by class_name. * Third, by | 
					
						
							|  |  |  |         # name. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testCaseReference` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::TestCaseReference] | 
					
						
							|  |  |  |         attr_accessor :test_case_reference | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # References to opaque files of any format output by the tool execution. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolOutputs` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::ToolOutputReference>] | 
					
						
							|  |  |  |         attr_accessor :tool_outputs | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |           @elapsed_time = args[:elapsed_time] if args.key?(:elapsed_time) | 
					
						
							| 
									
										
										
										
											2019-04-25 00:37:02 +00:00
										 |  |  |           @end_time = args[:end_time] if args.key?(:end_time) | 
					
						
							|  |  |  |           @skipped_message = args[:skipped_message] if args.key?(:skipped_message) | 
					
						
							|  |  |  |           @stack_traces = args[:stack_traces] if args.key?(:stack_traces) | 
					
						
							|  |  |  |           @start_time = args[:start_time] if args.key?(:start_time) | 
					
						
							|  |  |  |           @status = args[:status] if args.key?(:status) | 
					
						
							|  |  |  |           @test_case_id = args[:test_case_id] if args.key?(:test_case_id) | 
					
						
							|  |  |  |           @test_case_reference = args[:test_case_reference] if args.key?(:test_case_reference) | 
					
						
							|  |  |  |           @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # A reference to a test case. | 
					
						
							|  |  |  |       # Test case references are canonically ordered lexicographically by these three | 
					
						
							|  |  |  |       # factors: * First, by test_suite_name. * Second, by class_name. * Third, by | 
					
						
							|  |  |  |       # name. | 
					
						
							|  |  |  |       class TestCaseReference | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the class. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `className` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :class_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the test case. | 
					
						
							|  |  |  |         # Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the test suite to which this test case belongs. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testSuiteName` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :test_suite_name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @class_name = args[:class_name] if args.key?(:class_name) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @test_suite_name = args[:test_suite_name] if args.key?(:test_suite_name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A step that represents running tests. | 
					
						
							|  |  |  |       # 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. | 
					
						
							|  |  |  |       class TestExecutionStep | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testIssues` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::TestIssue>] | 
					
						
							|  |  |  |         attr_accessor :test_issues | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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) | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testSuiteOverviews` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::TestSuiteOverview>] | 
					
						
							|  |  |  |         attr_accessor :test_suite_overviews | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Testing timing break down to know phases. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testTiming` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::TestTiming] | 
					
						
							|  |  |  |         attr_accessor :test_timing | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # An execution of an arbitrary tool. It could be a test runner or a tool copying | 
					
						
							|  |  |  |         # artifacts or deploying code. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolExecution` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::ToolExecution] | 
					
						
							|  |  |  |         attr_accessor :tool_execution | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @test_issues = args[:test_issues] if args.key?(:test_issues) | 
					
						
							|  |  |  |           @test_suite_overviews = args[:test_suite_overviews] if args.key?(:test_suite_overviews) | 
					
						
							|  |  |  |           @test_timing = args[:test_timing] if args.key?(:test_timing) | 
					
						
							|  |  |  |           @tool_execution = args[:tool_execution] if args.key?(:tool_execution) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |       # An issue detected occurring during a test execution. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class TestIssue | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-07-10 00:36:20 +00:00
										 |  |  |         # Category of issue. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `category` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :category | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # A brief human-readable message describing the issue. Required. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `errorMessage` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :error_message | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # Severity of issue. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `severity` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :severity | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # A stacktrace. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `stackTrace` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::StackTrace] | 
					
						
							|  |  |  |         attr_accessor :stack_trace | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |         # Type of issue. Required. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `type` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # `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": , " | 
					
						
							|  |  |  |         # lastName":  ` | 
					
						
							|  |  |  |         # 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" ` | 
					
						
							|  |  |  |         # Corresponds to the JSON property `warning` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Any] | 
					
						
							|  |  |  |         attr_accessor :warning | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							| 
									
										
										
										
											2018-07-10 00:36:20 +00:00
										 |  |  |           @category = args[:category] if args.key?(:category) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @error_message = args[:error_message] if args.key?(:error_message) | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |           @severity = args[:severity] if args.key?(:severity) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @stack_trace = args[:stack_trace] if args.key?(:stack_trace) | 
					
						
							| 
									
										
										
										
											2017-08-25 19:54:22 +00:00
										 |  |  |           @type = args[:type] if args.key?(:type) | 
					
						
							|  |  |  |           @warning = args[:warning] if args.key?(:warning) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # 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. | 
					
						
							|  |  |  |       class TestSuiteOverview | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2019-06-19 00:37:48 +00:00
										 |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2019-06-19 00:37:48 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `elapsedTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :elapsed_time | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `errorCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :error_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `failureCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :failure_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The name of the test suite. | 
					
						
							|  |  |  |         # - In create/response: always set - In update request: never | 
					
						
							|  |  |  |         # Corresponds to the JSON property `name` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :name | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `skippedCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :skipped_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Number of test cases, typically set by the service by parsing the xml_source. | 
					
						
							|  |  |  |         # - In create/response: always set - In update request: never | 
					
						
							|  |  |  |         # Corresponds to the JSON property `totalCount` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :total_count | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A reference to a file. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `xmlSource` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::FileReference] | 
					
						
							|  |  |  |         attr_accessor :xml_source | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							| 
									
										
										
										
											2019-06-19 00:37:48 +00:00
										 |  |  |           @elapsed_time = args[:elapsed_time] if args.key?(:elapsed_time) | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |           @error_count = args[:error_count] if args.key?(:error_count) | 
					
						
							|  |  |  |           @failure_count = args[:failure_count] if args.key?(:failure_count) | 
					
						
							|  |  |  |           @name = args[:name] if args.key?(:name) | 
					
						
							|  |  |  |           @skipped_count = args[:skipped_count] if args.key?(:skipped_count) | 
					
						
							|  |  |  |           @total_count = args[:total_count] if args.key?(:total_count) | 
					
						
							|  |  |  |           @xml_source = args[:xml_source] if args.key?(:xml_source) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Testing timing break down to know phases. | 
					
						
							|  |  |  |       class TestTiming | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Duration from two Timestamps in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Timestamp end = ...; Duration duration = ...; | 
					
						
							|  |  |  |         # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - | 
					
						
							|  |  |  |         # start.nanos; | 
					
						
							|  |  |  |         # if (duration.seconds  0) ` duration.seconds += 1; duration.nanos -= 1000000000; | 
					
						
							| 
									
										
										
										
											2019-08-06 00:38:19 +00:00
										 |  |  |         # ` else if (duration.seconds > 0 && duration.nanos < 0) ` duration.seconds -= | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # 1; duration.nanos += 1000000000; ` | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. | 
					
						
							|  |  |  |         # Timestamp start = ...; Duration duration = ...; Timestamp end = ...; | 
					
						
							|  |  |  |         # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + | 
					
						
							|  |  |  |         # duration.nanos; | 
					
						
							|  |  |  |         # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; ` | 
					
						
							|  |  |  |         # Example 3: Compute Duration from datetime.timedelta in Python. | 
					
						
							|  |  |  |         # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration. | 
					
						
							|  |  |  |         # FromTimedelta(td) | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Duration type is encoded as a string rather than an object, | 
					
						
							|  |  |  |         # where the string ends in the suffix "s" (indicating seconds) and is preceded | 
					
						
							|  |  |  |         # by the number of seconds, with nanoseconds expressed as fractional seconds. | 
					
						
							|  |  |  |         # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as " | 
					
						
							|  |  |  |         # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3. | 
					
						
							|  |  |  |         # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON | 
					
						
							|  |  |  |         # format as "3.000001s". | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testProcessDuration` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Duration] | 
					
						
							|  |  |  |         attr_accessor :test_process_duration | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @test_process_duration = args[:test_process_duration] if args.key?(:test_process_duration) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A single thumbnail, with its size and format. | 
					
						
							|  |  |  |       class Thumbnail | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The thumbnail's content type, i.e. "image/png". | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `contentType` | 
					
						
							|  |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :content_type | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The thumbnail file itself. | 
					
						
							|  |  |  |         # That is, the bytes here are precisely the bytes that make up the thumbnail | 
					
						
							|  |  |  |         # file; they can be served as an image as-is (with the appropriate content type.) | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `data` | 
					
						
							| 
									
										
										
										
											2017-03-31 19:53:27 +00:00
										 |  |  |         # NOTE: Values are automatically base64 encoded/decoded in the client library. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # @return [String] | 
					
						
							|  |  |  |         attr_accessor :data | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The height of the thumbnail, in pixels. | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `heightPx` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :height_px | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # The width of the thumbnail, in pixels. | 
					
						
							|  |  |  |         # Always set. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `widthPx` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :width_px | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @content_type = args[:content_type] if args.key?(:content_type) | 
					
						
							|  |  |  |           @data = args[:data] if args.key?(:data) | 
					
						
							|  |  |  |           @height_px = args[:height_px] if args.key?(:height_px) | 
					
						
							|  |  |  |           @width_px = args[:width_px] if args.key?(:width_px) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |       # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |       # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # # Examples | 
					
						
							|  |  |  |       # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |       # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |       # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |       # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |       # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |       # tv_usec * 1000); | 
					
						
							|  |  |  |       # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |       # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |       # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |       # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |       # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |       # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |       # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |       # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |       # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |       # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |       # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |       # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |       # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |       # # JSON Mapping | 
					
						
							|  |  |  |       # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |       # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |       # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |       # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |       # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |       # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |       # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |       # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |       # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |       # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |       # January 15, 2017. | 
					
						
							|  |  |  |       # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |       # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |       # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |       # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |       # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |       # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |       # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |       # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |       class Timestamp | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `nanos` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :nanos | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `seconds` | 
					
						
							| 
									
										
										
										
											2017-04-03 20:18:48 +00:00
										 |  |  |         # @return [Fixnum] | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         attr_accessor :seconds | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @nanos = args[:nanos] if args.key?(:nanos) | 
					
						
							|  |  |  |           @seconds = args[:seconds] if args.key?(:seconds) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # An execution of an arbitrary tool. It could be a test runner or a tool copying | 
					
						
							|  |  |  |       # artifacts or deploying code. | 
					
						
							|  |  |  |       class ToolExecution | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `commandLineArguments` | 
					
						
							|  |  |  |         # @return [Array<String>] | 
					
						
							|  |  |  |         attr_accessor :command_line_arguments | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Exit code from a tool execution. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `exitCode` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::ToolExitCode] | 
					
						
							|  |  |  |         attr_accessor :exit_code | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolLogs` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>] | 
					
						
							|  |  |  |         attr_accessor :tool_logs | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # 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 | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolOutputs` | 
					
						
							|  |  |  |         # @return [Array<Google::Apis::ToolresultsV1beta3::ToolOutputReference>] | 
					
						
							|  |  |  |         attr_accessor :tool_outputs | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @command_line_arguments = args[:command_line_arguments] if args.key?(:command_line_arguments) | 
					
						
							|  |  |  |           @exit_code = args[:exit_code] if args.key?(:exit_code) | 
					
						
							|  |  |  |           @tool_logs = args[:tool_logs] if args.key?(:tool_logs) | 
					
						
							|  |  |  |           @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Generic tool step to be used for binaries we do not explicitly support. For | 
					
						
							|  |  |  |       # example: running cp to copy artifacts from one location to another. | 
					
						
							|  |  |  |       class ToolExecutionStep | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # An execution of an arbitrary tool. It could be a test runner or a tool copying | 
					
						
							|  |  |  |         # artifacts or deploying code. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `toolExecution` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::ToolExecution] | 
					
						
							|  |  |  |         attr_accessor :tool_execution | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @tool_execution = args[:tool_execution] if args.key?(:tool_execution) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # Exit code from a tool execution. | 
					
						
							|  |  |  |       class ToolExitCode | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Tool execution exit code. A value of 0 means that the execution was successful. | 
					
						
							|  |  |  |         # - In response: always set - In create/update request: always set | 
					
						
							|  |  |  |         # Corresponds to the JSON property `number` | 
					
						
							|  |  |  |         # @return [Fixnum] | 
					
						
							|  |  |  |         attr_accessor :number | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @number = args[:number] if args.key?(:number) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       # A reference to a ToolExecution output file. | 
					
						
							|  |  |  |       class ToolOutputReference | 
					
						
							|  |  |  |         include Google::Apis::Core::Hashable | 
					
						
							|  |  |  |        | 
					
						
							| 
									
										
										
										
											2018-11-14 00:36:33 +00:00
										 |  |  |         # A Timestamp represents a point in time independent of any time zone or local | 
					
						
							|  |  |  |         # 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. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # # Examples | 
					
						
							|  |  |  |         # Example 1: Compute Timestamp from POSIX `time()`. | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); | 
					
						
							|  |  |  |         # Example 2: Compute Timestamp from POSIX `gettimeofday()`. | 
					
						
							|  |  |  |         # struct timeval tv; gettimeofday(&tv, NULL); | 
					
						
							|  |  |  |         # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv. | 
					
						
							|  |  |  |         # tv_usec * 1000); | 
					
						
							|  |  |  |         # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. | 
					
						
							|  |  |  |         # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft. | 
					
						
							|  |  |  |         # dwHighDateTime) << 32) | ft.dwLowDateTime; | 
					
						
							|  |  |  |         # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is | 
					
						
							|  |  |  |         # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp | 
					
						
							|  |  |  |         # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); | 
					
						
							|  |  |  |         # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); | 
					
						
							|  |  |  |         # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. | 
					
						
							|  |  |  |         # long millis = System.currentTimeMillis(); | 
					
						
							|  |  |  |         # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) . | 
					
						
							|  |  |  |         # setNanos((int) ((millis % 1000) * 1000000)).build(); | 
					
						
							|  |  |  |         # Example 5: Compute Timestamp from current time in Python. | 
					
						
							|  |  |  |         # timestamp = Timestamp() timestamp.GetCurrentTime() | 
					
						
							|  |  |  |         # # JSON Mapping | 
					
						
							|  |  |  |         # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339]( | 
					
						
							|  |  |  |         # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-` | 
					
						
							|  |  |  |         # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always | 
					
						
							|  |  |  |         # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are | 
					
						
							|  |  |  |         # zero-padded to two digits each. The fractional seconds, which can go up to 9 | 
					
						
							|  |  |  |         # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix | 
					
						
							| 
									
										
										
										
											2018-03-16 00:35:53 +00:00
										 |  |  |         # indicates the timezone ("UTC"); the timezone is required. A proto3 JSON | 
					
						
							|  |  |  |         # serializer should always use UTC (as indicated by "Z") when printing the | 
					
						
							|  |  |  |         # Timestamp type and a proto3 JSON parser should be able to accept both UTC and | 
					
						
							|  |  |  |         # other timezones (as indicated by an offset). | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on | 
					
						
							|  |  |  |         # January 15, 2017. | 
					
						
							|  |  |  |         # In JavaScript, one can convert a Date object to this format using the standard | 
					
						
							|  |  |  |         # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/ | 
					
						
							| 
									
										
										
										
											2018-09-19 00:36:24 +00:00
										 |  |  |         # Reference/Global_Objects/Date/toISOString) method. In Python, a standard ` | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # datetime.datetime` object can be converted to this format using [`strftime`]( | 
					
						
							|  |  |  |         # https://docs.python.org/2/library/time.html#time.strftime) with the time | 
					
						
							|  |  |  |         # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda | 
					
						
							| 
									
										
										
										
											2017-11-15 00:35:17 +00:00
										 |  |  |         # Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/ | 
					
						
							| 
									
										
										
										
											2018-08-29 00:36:37 +00:00
										 |  |  |         # org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a | 
					
						
							|  |  |  |         # formatter capable of generating timestamps in this format. | 
					
						
							| 
									
										
										
										
											2017-03-30 22:30:51 +00:00
										 |  |  |         # Corresponds to the JSON property `creationTime` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::Timestamp] | 
					
						
							|  |  |  |         attr_accessor :creation_time | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A reference to a file. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `output` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::FileReference] | 
					
						
							|  |  |  |         attr_accessor :output | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # A reference to a test case. | 
					
						
							|  |  |  |         # Test case references are canonically ordered lexicographically by these three | 
					
						
							|  |  |  |         # factors: * First, by test_suite_name. * Second, by class_name. * Third, by | 
					
						
							|  |  |  |         # name. | 
					
						
							|  |  |  |         # Corresponds to the JSON property `testCase` | 
					
						
							|  |  |  |         # @return [Google::Apis::ToolresultsV1beta3::TestCaseReference] | 
					
						
							|  |  |  |         attr_accessor :test_case | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         def initialize(**args) | 
					
						
							|  |  |  |            update!(**args) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |         # Update properties of this object | 
					
						
							|  |  |  |         def update!(**args) | 
					
						
							|  |  |  |           @creation_time = args[:creation_time] if args.key?(:creation_time) | 
					
						
							|  |  |  |           @output = args[:output] if args.key?(:output) | 
					
						
							|  |  |  |           @test_case = args[:test_case] if args.key?(:test_case) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |