google-api-client 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/MIGRATING.md +22 -7
  4. data/README.md +4 -8
  5. data/api_names.yaml +1210 -37815
  6. data/generated/google/apis/acceleratedmobilepageurl_v1.rb +32 -0
  7. data/generated/google/apis/acceleratedmobilepageurl_v1/classes.rb +144 -0
  8. data/generated/google/apis/acceleratedmobilepageurl_v1/representations.rb +86 -0
  9. data/generated/google/apis/acceleratedmobilepageurl_v1/service.rb +90 -0
  10. data/generated/google/apis/adexchangebuyer2_v2beta1.rb +1 -1
  11. data/generated/google/apis/adexchangebuyer2_v2beta1/classes.rb +764 -764
  12. data/generated/google/apis/adexchangebuyer2_v2beta1/representations.rb +180 -180
  13. data/generated/google/apis/adexchangebuyer2_v2beta1/service.rb +421 -421
  14. data/generated/google/apis/adexchangebuyer_v1_4/classes.rb +1 -0
  15. data/generated/google/apis/admin_directory_v1/classes.rb +1 -0
  16. data/generated/google/apis/admin_reports_v1.rb +1 -1
  17. data/generated/google/apis/adsense_v1_4.rb +1 -1
  18. data/generated/google/apis/adsensehost_v4_1.rb +1 -1
  19. data/generated/google/apis/analyticsreporting_v4/classes.rb +187 -187
  20. data/generated/google/apis/analyticsreporting_v4/representations.rb +42 -42
  21. data/generated/google/apis/appengine_v1.rb +40 -0
  22. data/generated/google/apis/appengine_v1/classes.rb +2251 -0
  23. data/generated/google/apis/appengine_v1/representations.rb +858 -0
  24. data/generated/google/apis/appengine_v1/service.rb +894 -0
  25. data/generated/google/apis/bigquery_v2.rb +1 -1
  26. data/generated/google/apis/bigquery_v2/classes.rb +11 -6
  27. data/generated/google/apis/books_v1.rb +1 -1
  28. data/generated/google/apis/books_v1/classes.rb +26 -0
  29. data/generated/google/apis/books_v1/representations.rb +15 -0
  30. data/generated/google/apis/books_v1/service.rb +4 -1
  31. data/generated/google/apis/calendar_v3.rb +1 -1
  32. data/generated/google/apis/classroom_v1.rb +1 -1
  33. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  34. data/generated/google/apis/cloudbuild_v1/classes.rb +638 -637
  35. data/generated/google/apis/cloudbuild_v1/representations.rb +110 -110
  36. data/generated/google/apis/cloudbuild_v1/service.rb +139 -139
  37. data/generated/google/apis/clouddebugger_v2.rb +3 -3
  38. data/generated/google/apis/clouddebugger_v2/classes.rb +131 -131
  39. data/generated/google/apis/clouddebugger_v2/representations.rb +25 -25
  40. data/generated/google/apis/clouderrorreporting_v1beta1.rb +36 -0
  41. data/generated/google/apis/clouderrorreporting_v1beta1/classes.rb +590 -0
  42. data/generated/google/apis/clouderrorreporting_v1beta1/representations.rb +252 -0
  43. data/generated/google/apis/clouderrorreporting_v1beta1/service.rb +350 -0
  44. data/generated/google/apis/cloudfunctions_v1.rb +35 -0
  45. data/generated/google/apis/cloudfunctions_v1/classes.rb +98 -0
  46. data/generated/google/apis/cloudfunctions_v1/representations.rb +57 -0
  47. data/generated/google/apis/cloudfunctions_v1/service.rb +89 -0
  48. data/generated/google/apis/cloudkms_v1/classes.rb +277 -270
  49. data/generated/google/apis/cloudkms_v1/representations.rb +73 -73
  50. data/generated/google/apis/cloudkms_v1/service.rb +194 -194
  51. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  52. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +1147 -1144
  53. data/generated/google/apis/cloudresourcemanager_v1/representations.rb +188 -188
  54. data/generated/google/apis/cloudresourcemanager_v1/service.rb +513 -936
  55. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  56. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +307 -916
  57. data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +63 -285
  58. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +333 -681
  59. data/generated/google/apis/cloudtrace_v1/classes.rb +38 -38
  60. data/generated/google/apis/cloudtrace_v1/representations.rb +13 -13
  61. data/generated/google/apis/cloudtrace_v1/service.rb +16 -16
  62. data/generated/google/apis/compute_beta.rb +1 -1
  63. data/generated/google/apis/compute_beta/classes.rb +32 -7
  64. data/generated/google/apis/compute_beta/representations.rb +2 -0
  65. data/generated/google/apis/compute_beta/service.rb +11 -11
  66. data/generated/google/apis/compute_v1.rb +1 -1
  67. data/generated/google/apis/compute_v1/classes.rb +95 -2
  68. data/generated/google/apis/compute_v1/representations.rb +33 -0
  69. data/generated/google/apis/dataflow_v1b3/classes.rb +3333 -3333
  70. data/generated/google/apis/dataflow_v1b3/representations.rb +759 -759
  71. data/generated/google/apis/dataflow_v1b3/service.rb +154 -154
  72. data/generated/google/apis/dataproc_v1.rb +1 -1
  73. data/generated/google/apis/dataproc_v1/classes.rb +1097 -1097
  74. data/generated/google/apis/dataproc_v1/representations.rb +200 -200
  75. data/generated/google/apis/dataproc_v1/service.rb +356 -356
  76. data/generated/google/apis/datastore_v1.rb +4 -4
  77. data/generated/google/apis/datastore_v1/classes.rb +701 -690
  78. data/generated/google/apis/datastore_v1/representations.rb +160 -160
  79. data/generated/google/apis/datastore_v1/service.rb +52 -52
  80. data/generated/google/apis/deploymentmanager_v2/classes.rb +4 -0
  81. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  82. data/generated/google/apis/drive_v2.rb +1 -1
  83. data/generated/google/apis/drive_v2/classes.rb +158 -35
  84. data/generated/google/apis/drive_v2/representations.rb +39 -0
  85. data/generated/google/apis/drive_v2/service.rb +4 -4
  86. data/generated/google/apis/drive_v3.rb +1 -1
  87. data/generated/google/apis/drive_v3/classes.rb +162 -33
  88. data/generated/google/apis/drive_v3/representations.rb +39 -0
  89. data/generated/google/apis/drive_v3/service.rb +4 -4
  90. data/generated/google/apis/firebasedynamiclinks_v1.rb +35 -0
  91. data/generated/google/apis/firebasedynamiclinks_v1/classes.rb +466 -0
  92. data/generated/google/apis/firebasedynamiclinks_v1/representations.rb +222 -0
  93. data/generated/google/apis/firebasedynamiclinks_v1/service.rb +95 -0
  94. data/generated/google/apis/firebaserules_v1.rb +41 -0
  95. data/generated/google/apis/firebaserules_v1/classes.rb +425 -0
  96. data/generated/google/apis/firebaserules_v1/representations.rb +222 -0
  97. data/generated/google/apis/firebaserules_v1/service.rb +495 -0
  98. data/generated/google/apis/games_v1/classes.rb +4 -0
  99. data/generated/google/apis/genomics_v1.rb +7 -7
  100. data/generated/google/apis/genomics_v1/classes.rb +2336 -2335
  101. data/generated/google/apis/genomics_v1/representations.rb +387 -387
  102. data/generated/google/apis/genomics_v1/service.rb +1187 -1187
  103. data/generated/google/apis/gmail_v1/classes.rb +3 -0
  104. data/generated/google/apis/iam_v1.rb +1 -1
  105. data/generated/google/apis/iam_v1/classes.rb +123 -117
  106. data/generated/google/apis/iam_v1/representations.rb +33 -33
  107. data/generated/google/apis/iam_v1/service.rb +109 -109
  108. data/generated/google/apis/identitytoolkit_v3/classes.rb +5 -0
  109. data/generated/google/apis/kgsearch_v1/classes.rb +6 -6
  110. data/generated/google/apis/kgsearch_v1/representations.rb +1 -1
  111. data/generated/google/apis/kgsearch_v1/service.rb +4 -4
  112. data/generated/google/apis/language_v1.rb +36 -0
  113. data/generated/google/apis/language_v1/classes.rb +757 -0
  114. data/generated/google/apis/language_v1/representations.rb +338 -0
  115. data/generated/google/apis/language_v1/service.rb +185 -0
  116. data/generated/google/apis/language_v1beta1/classes.rb +407 -407
  117. data/generated/google/apis/language_v1beta1/representations.rb +103 -103
  118. data/generated/google/apis/language_v1beta1/service.rb +45 -45
  119. data/generated/google/apis/logging_v2.rb +46 -0
  120. data/generated/google/apis/logging_v2/classes.rb +1271 -0
  121. data/generated/google/apis/logging_v2/representations.rb +421 -0
  122. data/generated/google/apis/logging_v2/service.rb +1569 -0
  123. data/generated/google/apis/logging_v2beta1.rb +1 -1
  124. data/generated/google/apis/logging_v2beta1/classes.rb +886 -886
  125. data/generated/google/apis/logging_v2beta1/representations.rb +132 -132
  126. data/generated/google/apis/logging_v2beta1/service.rb +235 -235
  127. data/generated/google/apis/manufacturers_v1/classes.rb +147 -147
  128. data/generated/google/apis/manufacturers_v1/representations.rb +29 -29
  129. data/generated/google/apis/ml_v1.rb +34 -0
  130. data/generated/google/apis/ml_v1/classes.rb +1617 -0
  131. data/generated/google/apis/ml_v1/representations.rb +498 -0
  132. data/generated/google/apis/ml_v1/service.rb +769 -0
  133. data/generated/google/apis/monitoring_v3.rb +4 -4
  134. data/generated/google/apis/monitoring_v3/classes.rb +630 -630
  135. data/generated/google/apis/monitoring_v3/representations.rb +134 -134
  136. data/generated/google/apis/monitoring_v3/service.rb +240 -240
  137. data/generated/google/apis/pagespeedonline_v2/classes.rb +1 -0
  138. data/generated/google/apis/partners_v2.rb +1 -1
  139. data/generated/google/apis/partners_v2/classes.rb +639 -639
  140. data/generated/google/apis/partners_v2/representations.rb +168 -168
  141. data/generated/google/apis/partners_v2/service.rb +381 -381
  142. data/generated/google/apis/people_v1.rb +10 -10
  143. data/generated/google/apis/people_v1/classes.rb +524 -524
  144. data/generated/google/apis/people_v1/representations.rb +143 -143
  145. data/generated/google/apis/people_v1/service.rb +30 -30
  146. data/generated/google/apis/plus_domains_v1.rb +1 -1
  147. data/generated/google/apis/plus_v1.rb +1 -1
  148. data/generated/google/apis/proximitybeacon_v1beta1/classes.rb +454 -444
  149. data/generated/google/apis/proximitybeacon_v1beta1/representations.rb +90 -90
  150. data/generated/google/apis/proximitybeacon_v1beta1/service.rb +110 -110
  151. data/generated/google/apis/pubsub_v1/classes.rb +175 -173
  152. data/generated/google/apis/pubsub_v1/representations.rb +53 -53
  153. data/generated/google/apis/pubsub_v1/service.rb +210 -210
  154. data/generated/google/apis/replicapool_v1beta2/classes.rb +2 -0
  155. data/generated/google/apis/runtimeconfig_v1.rb +38 -0
  156. data/generated/google/apis/runtimeconfig_v1/classes.rb +252 -0
  157. data/generated/google/apis/runtimeconfig_v1/representations.rb +98 -0
  158. data/generated/google/apis/runtimeconfig_v1/service.rb +176 -0
  159. data/generated/google/apis/script_v1.rb +1 -1
  160. data/generated/google/apis/script_v1/classes.rb +6 -6
  161. data/generated/google/apis/script_v1/representations.rb +1 -1
  162. data/generated/google/apis/searchconsole_v1.rb +31 -0
  163. data/generated/google/apis/searchconsole_v1/classes.rb +205 -0
  164. data/generated/google/apis/searchconsole_v1/representations.rb +129 -0
  165. data/generated/google/apis/searchconsole_v1/service.rb +88 -0
  166. data/generated/google/apis/servicecontrol_v1.rb +38 -0
  167. data/generated/google/apis/servicecontrol_v1/classes.rb +1675 -0
  168. data/generated/google/apis/servicecontrol_v1/representations.rb +601 -0
  169. data/generated/google/apis/servicecontrol_v1/service.rb +337 -0
  170. data/generated/google/apis/servicemanagement_v1.rb +45 -0
  171. data/generated/google/apis/servicemanagement_v1/classes.rb +4934 -0
  172. data/generated/google/apis/servicemanagement_v1/representations.rb +1526 -0
  173. data/generated/google/apis/servicemanagement_v1/service.rb +860 -0
  174. data/generated/google/apis/serviceuser_v1.rb +42 -0
  175. data/generated/google/apis/serviceuser_v1/classes.rb +3746 -0
  176. data/generated/google/apis/serviceuser_v1/representations.rb +1041 -0
  177. data/generated/google/apis/serviceuser_v1/service.rb +214 -0
  178. data/generated/google/apis/sheets_v4.rb +3 -3
  179. data/generated/google/apis/sheets_v4/classes.rb +4390 -4390
  180. data/generated/google/apis/sheets_v4/representations.rb +381 -381
  181. data/generated/google/apis/sheets_v4/service.rb +48 -48
  182. data/generated/google/apis/slides_v1.rb +3 -3
  183. data/generated/google/apis/slides_v1/classes.rb +2860 -2860
  184. data/generated/google/apis/slides_v1/representations.rb +693 -693
  185. data/generated/google/apis/slides_v1/service.rb +30 -30
  186. data/generated/google/apis/sourcerepo_v1.rb +34 -0
  187. data/generated/google/apis/sourcerepo_v1/classes.rb +687 -0
  188. data/generated/google/apis/sourcerepo_v1/representations.rb +285 -0
  189. data/generated/google/apis/sourcerepo_v1/service.rb +291 -0
  190. data/generated/google/apis/spanner_v1.rb +35 -0
  191. data/generated/google/apis/spanner_v1/classes.rb +3294 -0
  192. data/generated/google/apis/spanner_v1/representations.rb +984 -0
  193. data/generated/google/apis/spanner_v1/service.rb +1504 -0
  194. data/generated/google/apis/speech_v1beta1.rb +1 -1
  195. data/generated/google/apis/speech_v1beta1/classes.rb +197 -196
  196. data/generated/google/apis/speech_v1beta1/representations.rb +53 -53
  197. data/generated/google/apis/speech_v1beta1/service.rb +27 -27
  198. data/generated/google/apis/storage_v1.rb +1 -1
  199. data/generated/google/apis/storage_v1/classes.rb +131 -0
  200. data/generated/google/apis/storage_v1/representations.rb +51 -0
  201. data/generated/google/apis/storage_v1/service.rb +182 -0
  202. data/generated/google/apis/storagetransfer_v1.rb +1 -1
  203. data/generated/google/apis/storagetransfer_v1/classes.rb +732 -661
  204. data/generated/google/apis/storagetransfer_v1/representations.rb +132 -132
  205. data/generated/google/apis/storagetransfer_v1/service.rb +174 -197
  206. data/generated/google/apis/surveys_v2.rb +40 -0
  207. data/generated/google/apis/surveys_v2/classes.rb +806 -0
  208. data/generated/google/apis/surveys_v2/representations.rb +347 -0
  209. data/generated/google/apis/surveys_v2/service.rb +477 -0
  210. data/generated/google/apis/tagmanager_v2.rb +52 -0
  211. data/generated/google/apis/tagmanager_v2/classes.rb +2435 -0
  212. data/generated/google/apis/tagmanager_v2/representations.rb +993 -0
  213. data/generated/google/apis/tagmanager_v2/service.rb +2865 -0
  214. data/generated/google/apis/toolresults_v1beta3.rb +34 -0
  215. data/generated/google/apis/toolresults_v1beta3/classes.rb +2160 -0
  216. data/generated/google/apis/toolresults_v1beta3/representations.rb +729 -0
  217. data/generated/google/apis/toolresults_v1beta3/service.rb +1236 -0
  218. data/generated/google/apis/tracing_v1.rb +40 -0
  219. data/generated/google/apis/tracing_v1/classes.rb +664 -0
  220. data/generated/google/apis/tracing_v1/representations.rb +279 -0
  221. data/generated/google/apis/tracing_v1/service.rb +225 -0
  222. data/generated/google/apis/vision_v1.rb +1 -1
  223. data/generated/google/apis/vision_v1/classes.rb +1223 -1222
  224. data/generated/google/apis/vision_v1/representations.rb +234 -234
  225. data/generated/google/apis/vision_v1/service.rb +10 -10
  226. data/generated/google/apis/webfonts_v1.rb +33 -0
  227. data/generated/google/apis/webfonts_v1/classes.rb +113 -0
  228. data/generated/google/apis/webfonts_v1/representations.rb +62 -0
  229. data/generated/google/apis/webfonts_v1/service.rb +102 -0
  230. data/generated/google/apis/youtube_analytics_v1.rb +1 -1
  231. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  232. data/generated/google/apis/youtube_partner_v1/classes.rb +31 -0
  233. data/generated/google/apis/youtube_partner_v1/representations.rb +6 -0
  234. data/generated/google/apis/youtube_partner_v1/service.rb +41 -0
  235. data/generated/google/apis/youtube_v3/classes.rb +1 -0
  236. data/generated/google/apis/youtubereporting_v1.rb +4 -4
  237. data/generated/google/apis/youtubereporting_v1/classes.rb +76 -76
  238. data/generated/google/apis/youtubereporting_v1/representations.rb +25 -25
  239. data/generated/google/apis/youtubereporting_v1/service.rb +95 -95
  240. data/lib/google/apis/generator/annotator.rb +5 -4
  241. data/lib/google/apis/generator/templates/_class.tmpl +3 -0
  242. data/lib/google/apis/version.rb +1 -1
  243. data/samples/cli/lib/samples/adsense.rb +99 -0
  244. data/samples/cli/lib/samples/analytics.rb +18 -0
  245. data/samples/cli/lib/samples/gmail.rb +33 -0
  246. data/samples/cli/lib/samples/vision.rb +69 -0
  247. metadata +89 -4
  248. data/sync.rb +0 -71
@@ -0,0 +1,34 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/toolresults_v1beta3/service.rb'
16
+ require 'google/apis/toolresults_v1beta3/classes.rb'
17
+ require 'google/apis/toolresults_v1beta3/representations.rb'
18
+
19
+ module Google
20
+ module Apis
21
+ # Cloud Tool Results API
22
+ #
23
+ # Reads and publishes results from Firebase Test Lab.
24
+ #
25
+ # @see https://firebase.google.com/docs/test-lab/
26
+ module ToolresultsV1beta3
27
+ VERSION = 'V1beta3'
28
+ REVISION = '20170330'
29
+
30
+ # View and manage your data across Google Cloud Platform services
31
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,2160 @@
1
+ # Copyright 2015 Google Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module ToolresultsV1beta3
24
+
25
+ # `Any` contains an arbitrary serialized protocol buffer message along with a
26
+ # URL that describes the type of the serialized message.
27
+ # Protobuf library provides support to pack/unpack Any values in the form of
28
+ # utility functions or additional generated methods of the Any type.
29
+ # Example 1: Pack and unpack a message in C++.
30
+ # Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) ` ... `
31
+ # Example 2: Pack and unpack a message in Java.
32
+ # Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) ` foo = any.
33
+ # unpack(Foo.class); `
34
+ # Example 3: Pack and unpack a message in Python.
35
+ # foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.
36
+ # Unpack(foo) ...
37
+ # The pack methods provided by protobuf library will by default use 'type.
38
+ # googleapis.com/full.type.name' as the type URL and the unpack methods only use
39
+ # the fully qualified type name after the last '/' in the type URL, for example "
40
+ # foo.bar.com/x/y.z" will yield type name "y.z".
41
+ # JSON ==== The JSON representation of an `Any` value uses the regular
42
+ # representation of the deserialized, embedded message, with an additional field
43
+ # `@type` which contains the type URL. Example:
44
+ # package google.profile; message Person ` string first_name = 1; string
45
+ # last_name = 2; `
46
+ # ` "@type": "type.googleapis.com/google.profile.Person", "firstName": , "
47
+ # lastName": `
48
+ # If the embedded message type is well-known and has a custom JSON
49
+ # representation, that representation will be embedded adding a field `value`
50
+ # which holds the custom JSON in addition to the `@type` field. Example (for
51
+ # message [google.protobuf.Duration][]):
52
+ # ` "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" `
53
+ class Any
54
+ include Google::Apis::Core::Hashable
55
+
56
+ # A URL/resource name whose content describes the type of the serialized
57
+ # protocol buffer message.
58
+ # For URLs which use the scheme `http`, `https`, or no scheme, the following
59
+ # restrictions and interpretations apply:
60
+ # * If no scheme is provided, `https` is assumed. * The last segment of the URL'
61
+ # s path must represent the fully qualified name of the type (as in `path/google.
62
+ # protobuf.Duration`). The name should be in a canonical form (e.g., leading "."
63
+ # is not accepted). * An HTTP GET on the URL must yield a [google.protobuf.Type][
64
+ # ] value in binary format, or produce an error. * Applications are allowed to
65
+ # cache lookup results based on the URL, or have them precompiled into a binary
66
+ # to avoid any lookup. Therefore, binary compatibility needs to be preserved on
67
+ # changes to types. (Use versioned type names to manage breaking changes.)
68
+ # Schemes other than `http`, `https` (or the empty scheme) might be used with
69
+ # implementation specific semantics.
70
+ # Corresponds to the JSON property `typeUrl`
71
+ # @return [String]
72
+ attr_accessor :type_url
73
+
74
+ # Must be a valid serialized protocol buffer of the above specified type.
75
+ # Corresponds to the JSON property `value`
76
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
77
+ # @return [String]
78
+ attr_accessor :value
79
+
80
+ def initialize(**args)
81
+ update!(**args)
82
+ end
83
+
84
+ # Update properties of this object
85
+ def update!(**args)
86
+ @type_url = args[:type_url] if args.key?(:type_url)
87
+ @value = args[:value] if args.key?(:value)
88
+ end
89
+ end
90
+
91
+ # Encapsulates the metadata for basic sample series represented by a line chart
92
+ class BasicPerfSampleSeries
93
+ include Google::Apis::Core::Hashable
94
+
95
+ #
96
+ # Corresponds to the JSON property `perfMetricType`
97
+ # @return [String]
98
+ attr_accessor :perf_metric_type
99
+
100
+ #
101
+ # Corresponds to the JSON property `perfUnit`
102
+ # @return [String]
103
+ attr_accessor :perf_unit
104
+
105
+ #
106
+ # Corresponds to the JSON property `sampleSeriesLabel`
107
+ # @return [String]
108
+ attr_accessor :sample_series_label
109
+
110
+ def initialize(**args)
111
+ update!(**args)
112
+ end
113
+
114
+ # Update properties of this object
115
+ def update!(**args)
116
+ @perf_metric_type = args[:perf_metric_type] if args.key?(:perf_metric_type)
117
+ @perf_unit = args[:perf_unit] if args.key?(:perf_unit)
118
+ @sample_series_label = args[:sample_series_label] if args.key?(:sample_series_label)
119
+ end
120
+ end
121
+
122
+ # The request must provide up to a maximum of 5000 samples to be created; a
123
+ # larger sample size will cause an INVALID_ARGUMENT error
124
+ class BatchCreatePerfSamplesRequest
125
+ include Google::Apis::Core::Hashable
126
+
127
+ # The set of PerfSamples to create should not include existing timestamps
128
+ # Corresponds to the JSON property `perfSamples`
129
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
130
+ attr_accessor :perf_samples
131
+
132
+ def initialize(**args)
133
+ update!(**args)
134
+ end
135
+
136
+ # Update properties of this object
137
+ def update!(**args)
138
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
139
+ end
140
+ end
141
+
142
+ #
143
+ class BatchCreatePerfSamplesResponse
144
+ include Google::Apis::Core::Hashable
145
+
146
+ #
147
+ # Corresponds to the JSON property `perfSamples`
148
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
149
+ attr_accessor :perf_samples
150
+
151
+ def initialize(**args)
152
+ update!(**args)
153
+ end
154
+
155
+ # Update properties of this object
156
+ def update!(**args)
157
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
158
+ end
159
+ end
160
+
161
+ #
162
+ class CpuInfo
163
+ include Google::Apis::Core::Hashable
164
+
165
+ # description of the device processor ie '1.8 GHz hexa core 64-bit ARMv8-A'
166
+ # Corresponds to the JSON property `cpuProcessor`
167
+ # @return [String]
168
+ attr_accessor :cpu_processor
169
+
170
+ # the CPU clock speed in GHz
171
+ # Corresponds to the JSON property `cpuSpeedInGhz`
172
+ # @return [Float]
173
+ attr_accessor :cpu_speed_in_ghz
174
+
175
+ # the number of CPU cores
176
+ # Corresponds to the JSON property `numberOfCores`
177
+ # @return [Fixnum]
178
+ attr_accessor :number_of_cores
179
+
180
+ def initialize(**args)
181
+ update!(**args)
182
+ end
183
+
184
+ # Update properties of this object
185
+ def update!(**args)
186
+ @cpu_processor = args[:cpu_processor] if args.key?(:cpu_processor)
187
+ @cpu_speed_in_ghz = args[:cpu_speed_in_ghz] if args.key?(:cpu_speed_in_ghz)
188
+ @number_of_cores = args[:number_of_cores] if args.key?(:number_of_cores)
189
+ end
190
+ end
191
+
192
+ # A Duration represents a signed, fixed-length span of time represented as a
193
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
194
+ # independent of any calendar and concepts like "day" or "month". It is related
195
+ # to Timestamp in that the difference between two Timestamp values is a Duration
196
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
197
+ # 10,000 years.
198
+ # # Examples
199
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
200
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
201
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
202
+ # start.nanos;
203
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
204
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
205
+ # 1; duration.nanos += 1000000000; `
206
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
207
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
208
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
209
+ # duration.nanos;
210
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
211
+ # Example 3: Compute Duration from datetime.timedelta in Python.
212
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
213
+ # FromTimedelta(td)
214
+ # # JSON Mapping
215
+ # In JSON format, the Duration type is encoded as a string rather than an object,
216
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
217
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
218
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
219
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
220
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
221
+ # format as "3.000001s".
222
+ class Duration
223
+ include Google::Apis::Core::Hashable
224
+
225
+ # Signed fractions of a second at nanosecond resolution of the span of time.
226
+ # Durations less than one second are represented with a 0 `seconds` field and a
227
+ # positive or negative `nanos` field. For durations of one second or more, a non-
228
+ # zero value for the `nanos` field must be of the same sign as the `seconds`
229
+ # field. Must be from -999,999,999 to +999,999,999 inclusive.
230
+ # Corresponds to the JSON property `nanos`
231
+ # @return [Fixnum]
232
+ attr_accessor :nanos
233
+
234
+ # Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,
235
+ # 000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/
236
+ # hr * 24 hr/day * 365.25 days/year * 10000 years
237
+ # Corresponds to the JSON property `seconds`
238
+ # @return [String]
239
+ attr_accessor :seconds
240
+
241
+ def initialize(**args)
242
+ update!(**args)
243
+ end
244
+
245
+ # Update properties of this object
246
+ def update!(**args)
247
+ @nanos = args[:nanos] if args.key?(:nanos)
248
+ @seconds = args[:seconds] if args.key?(:seconds)
249
+ end
250
+ end
251
+
252
+ # An Execution represents a collection of Steps. For instance, it could
253
+ # represent: - a mobile test executed across a range of device configurations -
254
+ # a jenkins job with a build step followed by a test step
255
+ # The maximum size of an execution message is 1 MiB.
256
+ # An Execution can be updated until its state is set to COMPLETE at which point
257
+ # it becomes immutable.
258
+ class Execution
259
+ include Google::Apis::Core::Hashable
260
+
261
+ # A Timestamp represents a point in time independent of any time zone or
262
+ # calendar, represented as seconds and fractions of seconds at nanosecond
263
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
264
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
265
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
266
+ # smeared" so that no leap second table is needed for interpretation. Range is
267
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
268
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
269
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
270
+ # txt).
271
+ # # Examples
272
+ # Example 1: Compute Timestamp from POSIX `time()`.
273
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
274
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
275
+ # struct timeval tv; gettimeofday(&tv, NULL);
276
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
277
+ # tv_usec * 1000);
278
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
279
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
280
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
281
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
282
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
283
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
284
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
285
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
286
+ # long millis = System.currentTimeMillis();
287
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
288
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
289
+ # Example 5: Compute Timestamp from current time in Python.
290
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
291
+ # # JSON Mapping
292
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
293
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
294
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
295
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
296
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
297
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
298
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
299
+ # indicated by "Z") is presently supported.
300
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
301
+ # January 15, 2017.
302
+ # In JavaScript, one can convert a Date object to this format using the standard
303
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
304
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
305
+ # datetime.datetime` object can be converted to this format using [`strftime`](
306
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
307
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
308
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
309
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
310
+ # formatter capable of generating timestamps in this format.
311
+ # Corresponds to the JSON property `completionTime`
312
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
313
+ attr_accessor :completion_time
314
+
315
+ # A Timestamp represents a point in time independent of any time zone or
316
+ # calendar, represented as seconds and fractions of seconds at nanosecond
317
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
318
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
319
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
320
+ # smeared" so that no leap second table is needed for interpretation. Range is
321
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
322
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
323
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
324
+ # txt).
325
+ # # Examples
326
+ # Example 1: Compute Timestamp from POSIX `time()`.
327
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
328
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
329
+ # struct timeval tv; gettimeofday(&tv, NULL);
330
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
331
+ # tv_usec * 1000);
332
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
333
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
334
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
335
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
336
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
337
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
338
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
339
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
340
+ # long millis = System.currentTimeMillis();
341
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
342
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
343
+ # Example 5: Compute Timestamp from current time in Python.
344
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
345
+ # # JSON Mapping
346
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
347
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
348
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
349
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
350
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
351
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
352
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
353
+ # indicated by "Z") is presently supported.
354
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
355
+ # January 15, 2017.
356
+ # In JavaScript, one can convert a Date object to this format using the standard
357
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
358
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
359
+ # datetime.datetime` object can be converted to this format using [`strftime`](
360
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
361
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
362
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
363
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
364
+ # formatter capable of generating timestamps in this format.
365
+ # Corresponds to the JSON property `creationTime`
366
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
367
+ attr_accessor :creation_time
368
+
369
+ # A unique identifier within a History for this Execution.
370
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
371
+ # - In response always set - In create/update request: never set
372
+ # Corresponds to the JSON property `executionId`
373
+ # @return [String]
374
+ attr_accessor :execution_id
375
+
376
+ # Interprets a result so that humans and machines can act on it.
377
+ # Corresponds to the JSON property `outcome`
378
+ # @return [Google::Apis::ToolresultsV1beta3::Outcome]
379
+ attr_accessor :outcome
380
+
381
+ # The initial state is IN_PROGRESS.
382
+ # The only legal state transitions is from IN_PROGRESS to COMPLETE.
383
+ # A PRECONDITION_FAILED will be returned if an invalid transition is requested.
384
+ # The state can only be set to COMPLETE once. A FAILED_PRECONDITION will be
385
+ # returned if the state is set to COMPLETE multiple times.
386
+ # If the state is set to COMPLETE, all the in-progress steps within the
387
+ # execution will be set as COMPLETE. If the outcome of the step is not set, the
388
+ # outcome will be set to INCONCLUSIVE.
389
+ # - In response always set - In create/update request: optional
390
+ # Corresponds to the JSON property `state`
391
+ # @return [String]
392
+ attr_accessor :state
393
+
394
+ # TestExecution Matrix ID that the Test Service uses.
395
+ # - In response: present if set by create - In create: optional - In update:
396
+ # never set
397
+ # Corresponds to the JSON property `testExecutionMatrixId`
398
+ # @return [String]
399
+ attr_accessor :test_execution_matrix_id
400
+
401
+ def initialize(**args)
402
+ update!(**args)
403
+ end
404
+
405
+ # Update properties of this object
406
+ def update!(**args)
407
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
408
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
409
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
410
+ @outcome = args[:outcome] if args.key?(:outcome)
411
+ @state = args[:state] if args.key?(:state)
412
+ @test_execution_matrix_id = args[:test_execution_matrix_id] if args.key?(:test_execution_matrix_id)
413
+ end
414
+ end
415
+
416
+ #
417
+ class FailureDetail
418
+ include Google::Apis::Core::Hashable
419
+
420
+ # If the failure was severe because the system under test crashed.
421
+ # Corresponds to the JSON property `crashed`
422
+ # @return [Boolean]
423
+ attr_accessor :crashed
424
+ alias_method :crashed?, :crashed
425
+
426
+ # If an app is not installed and thus no test can be run with the app. This
427
+ # might be caused by trying to run a test on an unsupported platform.
428
+ # Corresponds to the JSON property `notInstalled`
429
+ # @return [Boolean]
430
+ attr_accessor :not_installed
431
+ alias_method :not_installed?, :not_installed
432
+
433
+ # If a native process other than the app crashed.
434
+ # Corresponds to the JSON property `otherNativeCrash`
435
+ # @return [Boolean]
436
+ attr_accessor :other_native_crash
437
+ alias_method :other_native_crash?, :other_native_crash
438
+
439
+ # If the test overran some time limit, and that is why it failed.
440
+ # Corresponds to the JSON property `timedOut`
441
+ # @return [Boolean]
442
+ attr_accessor :timed_out
443
+ alias_method :timed_out?, :timed_out
444
+
445
+ # If the robo was unable to crawl the app; perhaps because the app did not start.
446
+ # Corresponds to the JSON property `unableToCrawl`
447
+ # @return [Boolean]
448
+ attr_accessor :unable_to_crawl
449
+ alias_method :unable_to_crawl?, :unable_to_crawl
450
+
451
+ def initialize(**args)
452
+ update!(**args)
453
+ end
454
+
455
+ # Update properties of this object
456
+ def update!(**args)
457
+ @crashed = args[:crashed] if args.key?(:crashed)
458
+ @not_installed = args[:not_installed] if args.key?(:not_installed)
459
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
460
+ @timed_out = args[:timed_out] if args.key?(:timed_out)
461
+ @unable_to_crawl = args[:unable_to_crawl] if args.key?(:unable_to_crawl)
462
+ end
463
+ end
464
+
465
+ # A reference to a file.
466
+ class FileReference
467
+ include Google::Apis::Core::Hashable
468
+
469
+ # The URI of a file stored in Google Cloud Storage.
470
+ # For example: http://storage.googleapis.com/mybucket/path/to/test.xml or in
471
+ # gsutil format: gs://mybucket/path/to/test.xml with version-specific info, gs://
472
+ # mybucket/path/to/test.xml#1360383693690000
473
+ # An INVALID_ARGUMENT error will be returned if the URI format is not supported.
474
+ # - In response: always set - In create/update request: always set
475
+ # Corresponds to the JSON property `fileUri`
476
+ # @return [String]
477
+ attr_accessor :file_uri
478
+
479
+ def initialize(**args)
480
+ update!(**args)
481
+ end
482
+
483
+ # Update properties of this object
484
+ def update!(**args)
485
+ @file_uri = args[:file_uri] if args.key?(:file_uri)
486
+ end
487
+ end
488
+
489
+ # A History represents a sorted list of Executions ordered by the
490
+ # start_timestamp_millis field (descending). It can be used to group all the
491
+ # Executions of a continuous build.
492
+ # Note that the ordering only operates on one-dimension. If a repository has
493
+ # multiple branches, it means that multiple histories will need to be used in
494
+ # order to order Executions per branch.
495
+ class History
496
+ include Google::Apis::Core::Hashable
497
+
498
+ # A short human-readable (plain text) name to display in the UI. Maximum of 100
499
+ # characters.
500
+ # - In response: present if set during create. - In create request: optional
501
+ # Corresponds to the JSON property `displayName`
502
+ # @return [String]
503
+ attr_accessor :display_name
504
+
505
+ # A unique identifier within a project for this History.
506
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
507
+ # - In response always set - In create request: never set
508
+ # Corresponds to the JSON property `historyId`
509
+ # @return [String]
510
+ attr_accessor :history_id
511
+
512
+ # A name to uniquely identify a history within a project. Maximum of 100
513
+ # characters.
514
+ # - In response always set - In create request: always set
515
+ # Corresponds to the JSON property `name`
516
+ # @return [String]
517
+ attr_accessor :name
518
+
519
+ def initialize(**args)
520
+ update!(**args)
521
+ end
522
+
523
+ # Update properties of this object
524
+ def update!(**args)
525
+ @display_name = args[:display_name] if args.key?(:display_name)
526
+ @history_id = args[:history_id] if args.key?(:history_id)
527
+ @name = args[:name] if args.key?(:name)
528
+ end
529
+ end
530
+
531
+ # An image, with a link to the main image and a thumbnail.
532
+ class Image
533
+ include Google::Apis::Core::Hashable
534
+
535
+ # The `Status` type defines a logical error model that is suitable for different
536
+ # programming environments, including REST APIs and RPC APIs. It is used by [
537
+ # gRPC](https://github.com/grpc). The error model is designed to be:
538
+ # - Simple to use and understand for most users - Flexible enough to meet
539
+ # unexpected needs
540
+ # # Overview
541
+ # The `Status` message contains three pieces of data: error code, error message,
542
+ # and error details. The error code should be an enum value of [google.rpc.Code][
543
+ # ], but it may accept additional error codes if needed. The error message
544
+ # should be a developer-facing English message that helps developers *understand*
545
+ # and *resolve* the error. If a localized user-facing error message is needed,
546
+ # put the localized message in the error details or localize it in the client.
547
+ # The optional error details may contain arbitrary information about the error.
548
+ # There is a predefined set of error detail types in the package `google.rpc`
549
+ # which can be used for common error conditions.
550
+ # # Language mapping
551
+ # The `Status` message is the logical representation of the error model, but it
552
+ # is not necessarily the actual wire format. When the `Status` message is
553
+ # exposed in different client libraries and different wire protocols, it can be
554
+ # mapped differently. For example, it will likely be mapped to some exceptions
555
+ # in Java, but more likely mapped to some error codes in C.
556
+ # # Other uses
557
+ # The error model and the `Status` message can be used in a variety of
558
+ # environments, either with or without APIs, to provide a consistent developer
559
+ # experience across different environments.
560
+ # Example uses of this error model include:
561
+ # - Partial errors. If a service needs to return partial errors to the client,
562
+ # it may embed the `Status` in the normal response to indicate the partial
563
+ # errors.
564
+ # - Workflow errors. A typical workflow has multiple steps. Each step may have a
565
+ # `Status` message for error reporting purpose.
566
+ # - Batch operations. If a client uses batch request and batch response, the `
567
+ # Status` message should be used directly inside batch response, one for each
568
+ # error sub-response.
569
+ # - Asynchronous operations. If an API call embeds asynchronous operation
570
+ # results in its response, the status of those operations should be represented
571
+ # directly using the `Status` message.
572
+ # - Logging. If some API errors are stored in logs, the message `Status` could
573
+ # be used directly after any stripping needed for security/privacy reasons.
574
+ # Corresponds to the JSON property `error`
575
+ # @return [Google::Apis::ToolresultsV1beta3::Status]
576
+ attr_accessor :error
577
+
578
+ # A reference to a ToolExecution output file.
579
+ # Corresponds to the JSON property `sourceImage`
580
+ # @return [Google::Apis::ToolresultsV1beta3::ToolOutputReference]
581
+ attr_accessor :source_image
582
+
583
+ # The step to which the image is attached.
584
+ # Always set.
585
+ # Corresponds to the JSON property `stepId`
586
+ # @return [String]
587
+ attr_accessor :step_id
588
+
589
+ # A single thumbnail, with its size and format.
590
+ # Corresponds to the JSON property `thumbnail`
591
+ # @return [Google::Apis::ToolresultsV1beta3::Thumbnail]
592
+ attr_accessor :thumbnail
593
+
594
+ def initialize(**args)
595
+ update!(**args)
596
+ end
597
+
598
+ # Update properties of this object
599
+ def update!(**args)
600
+ @error = args[:error] if args.key?(:error)
601
+ @source_image = args[:source_image] if args.key?(:source_image)
602
+ @step_id = args[:step_id] if args.key?(:step_id)
603
+ @thumbnail = args[:thumbnail] if args.key?(:thumbnail)
604
+ end
605
+ end
606
+
607
+ #
608
+ class InconclusiveDetail
609
+ include Google::Apis::Core::Hashable
610
+
611
+ # If the end user aborted the test execution before a pass or fail could be
612
+ # determined. For example, the user pressed ctrl-c which sent a kill signal to
613
+ # the test runner while the test was running.
614
+ # Corresponds to the JSON property `abortedByUser`
615
+ # @return [Boolean]
616
+ attr_accessor :aborted_by_user
617
+ alias_method :aborted_by_user?, :aborted_by_user
618
+
619
+ # If the test runner could not determine success or failure because the test
620
+ # depends on a component other than the system under test which failed.
621
+ # For example, a mobile test requires provisioning a device where the test
622
+ # executes, and that provisioning can fail.
623
+ # Corresponds to the JSON property `infrastructureFailure`
624
+ # @return [Boolean]
625
+ attr_accessor :infrastructure_failure
626
+ alias_method :infrastructure_failure?, :infrastructure_failure
627
+
628
+ def initialize(**args)
629
+ update!(**args)
630
+ end
631
+
632
+ # Update properties of this object
633
+ def update!(**args)
634
+ @aborted_by_user = args[:aborted_by_user] if args.key?(:aborted_by_user)
635
+ @infrastructure_failure = args[:infrastructure_failure] if args.key?(:infrastructure_failure)
636
+ end
637
+ end
638
+
639
+ #
640
+ class ListExecutionsResponse
641
+ include Google::Apis::Core::Hashable
642
+
643
+ # Executions.
644
+ # Always set.
645
+ # Corresponds to the JSON property `executions`
646
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Execution>]
647
+ attr_accessor :executions
648
+
649
+ # A continuation token to resume the query at the next item.
650
+ # Will only be set if there are more Executions to fetch.
651
+ # Corresponds to the JSON property `nextPageToken`
652
+ # @return [String]
653
+ attr_accessor :next_page_token
654
+
655
+ def initialize(**args)
656
+ update!(**args)
657
+ end
658
+
659
+ # Update properties of this object
660
+ def update!(**args)
661
+ @executions = args[:executions] if args.key?(:executions)
662
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
663
+ end
664
+ end
665
+
666
+ # Response message for HistoryService.List
667
+ class ListHistoriesResponse
668
+ include Google::Apis::Core::Hashable
669
+
670
+ # Histories.
671
+ # Corresponds to the JSON property `histories`
672
+ # @return [Array<Google::Apis::ToolresultsV1beta3::History>]
673
+ attr_accessor :histories
674
+
675
+ # A continuation token to resume the query at the next item.
676
+ # Will only be set if there are more histories to fetch.
677
+ # Tokens are valid for up to one hour from the time of the first list request.
678
+ # For instance, if you make a list request at 1PM and use the token from this
679
+ # first request 10 minutes later, the token from this second response will only
680
+ # be valid for 50 minutes.
681
+ # Corresponds to the JSON property `nextPageToken`
682
+ # @return [String]
683
+ attr_accessor :next_page_token
684
+
685
+ def initialize(**args)
686
+ update!(**args)
687
+ end
688
+
689
+ # Update properties of this object
690
+ def update!(**args)
691
+ @histories = args[:histories] if args.key?(:histories)
692
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
693
+ end
694
+ end
695
+
696
+ #
697
+ class ListPerfSampleSeriesResponse
698
+ include Google::Apis::Core::Hashable
699
+
700
+ # The resulting PerfSampleSeries sorted by id
701
+ # Corresponds to the JSON property `perfSampleSeries`
702
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSampleSeries>]
703
+ attr_accessor :perf_sample_series
704
+
705
+ def initialize(**args)
706
+ update!(**args)
707
+ end
708
+
709
+ # Update properties of this object
710
+ def update!(**args)
711
+ @perf_sample_series = args[:perf_sample_series] if args.key?(:perf_sample_series)
712
+ end
713
+ end
714
+
715
+ #
716
+ class ListPerfSamplesResponse
717
+ include Google::Apis::Core::Hashable
718
+
719
+ # Optional, returned if result size exceeds the page size specified in the
720
+ # request (or the default page size, 500, if unspecified). It indicates the last
721
+ # sample timestamp to be used as page_token in subsequent request
722
+ # Corresponds to the JSON property `nextPageToken`
723
+ # @return [String]
724
+ attr_accessor :next_page_token
725
+
726
+ #
727
+ # Corresponds to the JSON property `perfSamples`
728
+ # @return [Array<Google::Apis::ToolresultsV1beta3::PerfSample>]
729
+ attr_accessor :perf_samples
730
+
731
+ def initialize(**args)
732
+ update!(**args)
733
+ end
734
+
735
+ # Update properties of this object
736
+ def update!(**args)
737
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
738
+ @perf_samples = args[:perf_samples] if args.key?(:perf_samples)
739
+ end
740
+ end
741
+
742
+ # A response containing the thumbnails in a step.
743
+ class ListStepThumbnailsResponse
744
+ include Google::Apis::Core::Hashable
745
+
746
+ # A continuation token to resume the query at the next item.
747
+ # If set, indicates that there are more thumbnails to read, by calling list
748
+ # again with this value in the page_token field.
749
+ # Corresponds to the JSON property `nextPageToken`
750
+ # @return [String]
751
+ attr_accessor :next_page_token
752
+
753
+ # A list of image data.
754
+ # Images are returned in a deterministic order; they are ordered by these
755
+ # factors, in order of importance: * First, by their associated test case.
756
+ # Images without a test case are considered greater than images with one. *
757
+ # Second, by their creation time. Images without a creation time are greater
758
+ # than images with one. * Third, by the order in which they were added to the
759
+ # step (by calls to CreateStep or UpdateStep).
760
+ # Corresponds to the JSON property `thumbnails`
761
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Image>]
762
+ attr_accessor :thumbnails
763
+
764
+ def initialize(**args)
765
+ update!(**args)
766
+ end
767
+
768
+ # Update properties of this object
769
+ def update!(**args)
770
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
771
+ @thumbnails = args[:thumbnails] if args.key?(:thumbnails)
772
+ end
773
+ end
774
+
775
+ # Response message for StepService.List.
776
+ class ListStepsResponse
777
+ include Google::Apis::Core::Hashable
778
+
779
+ # A continuation token to resume the query at the next item.
780
+ # If set, indicates that there are more steps to read, by calling list again
781
+ # with this value in the page_token field.
782
+ # Corresponds to the JSON property `nextPageToken`
783
+ # @return [String]
784
+ attr_accessor :next_page_token
785
+
786
+ # Steps.
787
+ # Corresponds to the JSON property `steps`
788
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Step>]
789
+ attr_accessor :steps
790
+
791
+ def initialize(**args)
792
+ update!(**args)
793
+ end
794
+
795
+ # Update properties of this object
796
+ def update!(**args)
797
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
798
+ @steps = args[:steps] if args.key?(:steps)
799
+ end
800
+ end
801
+
802
+ #
803
+ class MemoryInfo
804
+ include Google::Apis::Core::Hashable
805
+
806
+ # Maximum memory that can be allocated to the process in KiB
807
+ # Corresponds to the JSON property `memoryCapInKibibyte`
808
+ # @return [String]
809
+ attr_accessor :memory_cap_in_kibibyte
810
+
811
+ # Total memory available on the device in KiB
812
+ # Corresponds to the JSON property `memoryTotalInKibibyte`
813
+ # @return [String]
814
+ attr_accessor :memory_total_in_kibibyte
815
+
816
+ def initialize(**args)
817
+ update!(**args)
818
+ end
819
+
820
+ # Update properties of this object
821
+ def update!(**args)
822
+ @memory_cap_in_kibibyte = args[:memory_cap_in_kibibyte] if args.key?(:memory_cap_in_kibibyte)
823
+ @memory_total_in_kibibyte = args[:memory_total_in_kibibyte] if args.key?(:memory_total_in_kibibyte)
824
+ end
825
+ end
826
+
827
+ # Interprets a result so that humans and machines can act on it.
828
+ class Outcome
829
+ include Google::Apis::Core::Hashable
830
+
831
+ # More information about a FAILURE outcome.
832
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not FAILURE.
833
+ # Optional
834
+ # Corresponds to the JSON property `failureDetail`
835
+ # @return [Google::Apis::ToolresultsV1beta3::FailureDetail]
836
+ attr_accessor :failure_detail
837
+
838
+ # More information about an INCONCLUSIVE outcome.
839
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not
840
+ # INCONCLUSIVE.
841
+ # Optional
842
+ # Corresponds to the JSON property `inconclusiveDetail`
843
+ # @return [Google::Apis::ToolresultsV1beta3::InconclusiveDetail]
844
+ attr_accessor :inconclusive_detail
845
+
846
+ # More information about a SKIPPED outcome.
847
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not SKIPPED.
848
+ # Optional
849
+ # Corresponds to the JSON property `skippedDetail`
850
+ # @return [Google::Apis::ToolresultsV1beta3::SkippedDetail]
851
+ attr_accessor :skipped_detail
852
+
853
+ # More information about a SUCCESS outcome.
854
+ # Returns INVALID_ARGUMENT if this field is set but the summary is not SUCCESS.
855
+ # Optional
856
+ # Corresponds to the JSON property `successDetail`
857
+ # @return [Google::Apis::ToolresultsV1beta3::SuccessDetail]
858
+ attr_accessor :success_detail
859
+
860
+ # The simplest way to interpret a result.
861
+ # Required
862
+ # Corresponds to the JSON property `summary`
863
+ # @return [String]
864
+ attr_accessor :summary
865
+
866
+ def initialize(**args)
867
+ update!(**args)
868
+ end
869
+
870
+ # Update properties of this object
871
+ def update!(**args)
872
+ @failure_detail = args[:failure_detail] if args.key?(:failure_detail)
873
+ @inconclusive_detail = args[:inconclusive_detail] if args.key?(:inconclusive_detail)
874
+ @skipped_detail = args[:skipped_detail] if args.key?(:skipped_detail)
875
+ @success_detail = args[:success_detail] if args.key?(:success_detail)
876
+ @summary = args[:summary] if args.key?(:summary)
877
+ end
878
+ end
879
+
880
+ # Encapsulates performance environment info
881
+ class PerfEnvironment
882
+ include Google::Apis::Core::Hashable
883
+
884
+ # CPU related environment info
885
+ # Corresponds to the JSON property `cpuInfo`
886
+ # @return [Google::Apis::ToolresultsV1beta3::CpuInfo]
887
+ attr_accessor :cpu_info
888
+
889
+ # Memory related environment info
890
+ # Corresponds to the JSON property `memoryInfo`
891
+ # @return [Google::Apis::ToolresultsV1beta3::MemoryInfo]
892
+ attr_accessor :memory_info
893
+
894
+ def initialize(**args)
895
+ update!(**args)
896
+ end
897
+
898
+ # Update properties of this object
899
+ def update!(**args)
900
+ @cpu_info = args[:cpu_info] if args.key?(:cpu_info)
901
+ @memory_info = args[:memory_info] if args.key?(:memory_info)
902
+ end
903
+ end
904
+
905
+ # A summary of perf metrics collected and performance environment info
906
+ class PerfMetricsSummary
907
+ include Google::Apis::Core::Hashable
908
+
909
+ # A tool results execution ID.
910
+ # Corresponds to the JSON property `executionId`
911
+ # @return [String]
912
+ attr_accessor :execution_id
913
+
914
+ # A tool results history ID.
915
+ # Corresponds to the JSON property `historyId`
916
+ # @return [String]
917
+ attr_accessor :history_id
918
+
919
+ # Encapsulates performance environment info
920
+ # Corresponds to the JSON property `perfEnvironment`
921
+ # @return [Google::Apis::ToolresultsV1beta3::PerfEnvironment]
922
+ attr_accessor :perf_environment
923
+
924
+ # Set of resource collected
925
+ # Corresponds to the JSON property `perfMetrics`
926
+ # @return [Array<String>]
927
+ attr_accessor :perf_metrics
928
+
929
+ # The cloud project
930
+ # Corresponds to the JSON property `projectId`
931
+ # @return [String]
932
+ attr_accessor :project_id
933
+
934
+ # A tool results step ID.
935
+ # Corresponds to the JSON property `stepId`
936
+ # @return [String]
937
+ attr_accessor :step_id
938
+
939
+ def initialize(**args)
940
+ update!(**args)
941
+ end
942
+
943
+ # Update properties of this object
944
+ def update!(**args)
945
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
946
+ @history_id = args[:history_id] if args.key?(:history_id)
947
+ @perf_environment = args[:perf_environment] if args.key?(:perf_environment)
948
+ @perf_metrics = args[:perf_metrics] if args.key?(:perf_metrics)
949
+ @project_id = args[:project_id] if args.key?(:project_id)
950
+ @step_id = args[:step_id] if args.key?(:step_id)
951
+ end
952
+ end
953
+
954
+ # Resource representing a single performance measure or data point
955
+ class PerfSample
956
+ include Google::Apis::Core::Hashable
957
+
958
+ # A Timestamp represents a point in time independent of any time zone or
959
+ # calendar, represented as seconds and fractions of seconds at nanosecond
960
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
961
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
962
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
963
+ # smeared" so that no leap second table is needed for interpretation. Range is
964
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
965
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
966
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
967
+ # txt).
968
+ # # Examples
969
+ # Example 1: Compute Timestamp from POSIX `time()`.
970
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
971
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
972
+ # struct timeval tv; gettimeofday(&tv, NULL);
973
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
974
+ # tv_usec * 1000);
975
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
976
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
977
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
978
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
979
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
980
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
981
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
982
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
983
+ # long millis = System.currentTimeMillis();
984
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
985
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
986
+ # Example 5: Compute Timestamp from current time in Python.
987
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
988
+ # # JSON Mapping
989
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
990
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
991
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
992
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
993
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
994
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
995
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
996
+ # indicated by "Z") is presently supported.
997
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
998
+ # January 15, 2017.
999
+ # In JavaScript, one can convert a Date object to this format using the standard
1000
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1001
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1002
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1003
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1004
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1005
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1006
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1007
+ # formatter capable of generating timestamps in this format.
1008
+ # Corresponds to the JSON property `sampleTime`
1009
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
1010
+ attr_accessor :sample_time
1011
+
1012
+ # Value observed
1013
+ # Corresponds to the JSON property `value`
1014
+ # @return [Float]
1015
+ attr_accessor :value
1016
+
1017
+ def initialize(**args)
1018
+ update!(**args)
1019
+ end
1020
+
1021
+ # Update properties of this object
1022
+ def update!(**args)
1023
+ @sample_time = args[:sample_time] if args.key?(:sample_time)
1024
+ @value = args[:value] if args.key?(:value)
1025
+ end
1026
+ end
1027
+
1028
+ # Resource representing a collection of performance samples (or data points)
1029
+ class PerfSampleSeries
1030
+ include Google::Apis::Core::Hashable
1031
+
1032
+ # Encapsulates the metadata for basic sample series represented by a line chart
1033
+ # Corresponds to the JSON property `basicPerfSampleSeries`
1034
+ # @return [Google::Apis::ToolresultsV1beta3::BasicPerfSampleSeries]
1035
+ attr_accessor :basic_perf_sample_series
1036
+
1037
+ # A tool results execution ID.
1038
+ # Corresponds to the JSON property `executionId`
1039
+ # @return [String]
1040
+ attr_accessor :execution_id
1041
+
1042
+ # A tool results history ID.
1043
+ # Corresponds to the JSON property `historyId`
1044
+ # @return [String]
1045
+ attr_accessor :history_id
1046
+
1047
+ # The cloud project
1048
+ # Corresponds to the JSON property `projectId`
1049
+ # @return [String]
1050
+ attr_accessor :project_id
1051
+
1052
+ # A sample series id
1053
+ # Corresponds to the JSON property `sampleSeriesId`
1054
+ # @return [String]
1055
+ attr_accessor :sample_series_id
1056
+
1057
+ # A tool results step ID.
1058
+ # Corresponds to the JSON property `stepId`
1059
+ # @return [String]
1060
+ attr_accessor :step_id
1061
+
1062
+ def initialize(**args)
1063
+ update!(**args)
1064
+ end
1065
+
1066
+ # Update properties of this object
1067
+ def update!(**args)
1068
+ @basic_perf_sample_series = args[:basic_perf_sample_series] if args.key?(:basic_perf_sample_series)
1069
+ @execution_id = args[:execution_id] if args.key?(:execution_id)
1070
+ @history_id = args[:history_id] if args.key?(:history_id)
1071
+ @project_id = args[:project_id] if args.key?(:project_id)
1072
+ @sample_series_id = args[:sample_series_id] if args.key?(:sample_series_id)
1073
+ @step_id = args[:step_id] if args.key?(:step_id)
1074
+ end
1075
+ end
1076
+
1077
+ # Per-project settings for the Tool Results service.
1078
+ class ProjectSettings
1079
+ include Google::Apis::Core::Hashable
1080
+
1081
+ # The name of the Google Cloud Storage bucket to which results are written.
1082
+ # By default, this is unset.
1083
+ # In update request: optional In response: optional
1084
+ # Corresponds to the JSON property `defaultBucket`
1085
+ # @return [String]
1086
+ attr_accessor :default_bucket
1087
+
1088
+ # The name of the project's settings.
1089
+ # Always of the form: projects/`project-id`/settings
1090
+ # In update request: never set In response: always set
1091
+ # Corresponds to the JSON property `name`
1092
+ # @return [String]
1093
+ attr_accessor :name
1094
+
1095
+ def initialize(**args)
1096
+ update!(**args)
1097
+ end
1098
+
1099
+ # Update properties of this object
1100
+ def update!(**args)
1101
+ @default_bucket = args[:default_bucket] if args.key?(:default_bucket)
1102
+ @name = args[:name] if args.key?(:name)
1103
+ end
1104
+ end
1105
+
1106
+ # Request message for StepService.PublishXunitXmlFiles.
1107
+ class PublishXunitXmlFilesRequest
1108
+ include Google::Apis::Core::Hashable
1109
+
1110
+ # URI of the Xunit XML files to publish.
1111
+ # The maximum size of the file this reference is pointing to is 50MB.
1112
+ # Required.
1113
+ # Corresponds to the JSON property `xunitXmlFiles`
1114
+ # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>]
1115
+ attr_accessor :xunit_xml_files
1116
+
1117
+ def initialize(**args)
1118
+ update!(**args)
1119
+ end
1120
+
1121
+ # Update properties of this object
1122
+ def update!(**args)
1123
+ @xunit_xml_files = args[:xunit_xml_files] if args.key?(:xunit_xml_files)
1124
+ end
1125
+ end
1126
+
1127
+ #
1128
+ class SkippedDetail
1129
+ include Google::Apis::Core::Hashable
1130
+
1131
+ # If the App doesn't support the specific API level.
1132
+ # Corresponds to the JSON property `incompatibleAppVersion`
1133
+ # @return [Boolean]
1134
+ attr_accessor :incompatible_app_version
1135
+ alias_method :incompatible_app_version?, :incompatible_app_version
1136
+
1137
+ # If the App doesn't run on the specific architecture, for example, x86.
1138
+ # Corresponds to the JSON property `incompatibleArchitecture`
1139
+ # @return [Boolean]
1140
+ attr_accessor :incompatible_architecture
1141
+ alias_method :incompatible_architecture?, :incompatible_architecture
1142
+
1143
+ # If the requested OS version doesn't run on the specific device model.
1144
+ # Corresponds to the JSON property `incompatibleDevice`
1145
+ # @return [Boolean]
1146
+ attr_accessor :incompatible_device
1147
+ alias_method :incompatible_device?, :incompatible_device
1148
+
1149
+ def initialize(**args)
1150
+ update!(**args)
1151
+ end
1152
+
1153
+ # Update properties of this object
1154
+ def update!(**args)
1155
+ @incompatible_app_version = args[:incompatible_app_version] if args.key?(:incompatible_app_version)
1156
+ @incompatible_architecture = args[:incompatible_architecture] if args.key?(:incompatible_architecture)
1157
+ @incompatible_device = args[:incompatible_device] if args.key?(:incompatible_device)
1158
+ end
1159
+ end
1160
+
1161
+ # A stacktrace.
1162
+ class StackTrace
1163
+ include Google::Apis::Core::Hashable
1164
+
1165
+ # The stack trace message.
1166
+ # Required
1167
+ # Corresponds to the JSON property `exception`
1168
+ # @return [String]
1169
+ attr_accessor :exception
1170
+
1171
+ def initialize(**args)
1172
+ update!(**args)
1173
+ end
1174
+
1175
+ # Update properties of this object
1176
+ def update!(**args)
1177
+ @exception = args[:exception] if args.key?(:exception)
1178
+ end
1179
+ end
1180
+
1181
+ # The `Status` type defines a logical error model that is suitable for different
1182
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1183
+ # gRPC](https://github.com/grpc). The error model is designed to be:
1184
+ # - Simple to use and understand for most users - Flexible enough to meet
1185
+ # unexpected needs
1186
+ # # Overview
1187
+ # The `Status` message contains three pieces of data: error code, error message,
1188
+ # and error details. The error code should be an enum value of [google.rpc.Code][
1189
+ # ], but it may accept additional error codes if needed. The error message
1190
+ # should be a developer-facing English message that helps developers *understand*
1191
+ # and *resolve* the error. If a localized user-facing error message is needed,
1192
+ # put the localized message in the error details or localize it in the client.
1193
+ # The optional error details may contain arbitrary information about the error.
1194
+ # There is a predefined set of error detail types in the package `google.rpc`
1195
+ # which can be used for common error conditions.
1196
+ # # Language mapping
1197
+ # The `Status` message is the logical representation of the error model, but it
1198
+ # is not necessarily the actual wire format. When the `Status` message is
1199
+ # exposed in different client libraries and different wire protocols, it can be
1200
+ # mapped differently. For example, it will likely be mapped to some exceptions
1201
+ # in Java, but more likely mapped to some error codes in C.
1202
+ # # Other uses
1203
+ # The error model and the `Status` message can be used in a variety of
1204
+ # environments, either with or without APIs, to provide a consistent developer
1205
+ # experience across different environments.
1206
+ # Example uses of this error model include:
1207
+ # - Partial errors. If a service needs to return partial errors to the client,
1208
+ # it may embed the `Status` in the normal response to indicate the partial
1209
+ # errors.
1210
+ # - Workflow errors. A typical workflow has multiple steps. Each step may have a
1211
+ # `Status` message for error reporting purpose.
1212
+ # - Batch operations. If a client uses batch request and batch response, the `
1213
+ # Status` message should be used directly inside batch response, one for each
1214
+ # error sub-response.
1215
+ # - Asynchronous operations. If an API call embeds asynchronous operation
1216
+ # results in its response, the status of those operations should be represented
1217
+ # directly using the `Status` message.
1218
+ # - Logging. If some API errors are stored in logs, the message `Status` could
1219
+ # be used directly after any stripping needed for security/privacy reasons.
1220
+ class Status
1221
+ include Google::Apis::Core::Hashable
1222
+
1223
+ # The status code, which should be an enum value of [google.rpc.Code][].
1224
+ # Corresponds to the JSON property `code`
1225
+ # @return [Fixnum]
1226
+ attr_accessor :code
1227
+
1228
+ # A list of messages that carry the error details. There will be a common set of
1229
+ # message types for APIs to use.
1230
+ # Corresponds to the JSON property `details`
1231
+ # @return [Array<Google::Apis::ToolresultsV1beta3::Any>]
1232
+ attr_accessor :details
1233
+
1234
+ # A developer-facing error message, which should be in English. Any user-facing
1235
+ # error message should be localized and sent in the [google.rpc.Status.details][]
1236
+ # field, or localized by the client.
1237
+ # Corresponds to the JSON property `message`
1238
+ # @return [String]
1239
+ attr_accessor :message
1240
+
1241
+ def initialize(**args)
1242
+ update!(**args)
1243
+ end
1244
+
1245
+ # Update properties of this object
1246
+ def update!(**args)
1247
+ @code = args[:code] if args.key?(:code)
1248
+ @details = args[:details] if args.key?(:details)
1249
+ @message = args[:message] if args.key?(:message)
1250
+ end
1251
+ end
1252
+
1253
+ # A Step represents a single operation performed as part of Execution. A step
1254
+ # can be used to represent the execution of a tool ( for example a test runner
1255
+ # execution or an execution of a compiler).
1256
+ # Steps can overlap (for instance two steps might have the same start time if
1257
+ # some operations are done in parallel).
1258
+ # Here is an example, let's consider that we have a continuous build is
1259
+ # executing a test runner for each iteration. The workflow would look like: -
1260
+ # user creates a Execution with id 1 - user creates an TestExecutionStep with id
1261
+ # 100 for Execution 1 - user update TestExecutionStep with id 100 to add a raw
1262
+ # xml log + the service parses the xml logs and returns a TestExecutionStep with
1263
+ # updated TestResult(s). - user update the status of TestExecutionStep with id
1264
+ # 100 to COMPLETE
1265
+ # A Step can be updated until its state is set to COMPLETE at which points it
1266
+ # becomes immutable.
1267
+ class Step
1268
+ include Google::Apis::Core::Hashable
1269
+
1270
+ # A Timestamp represents a point in time independent of any time zone or
1271
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1272
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1273
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1274
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1275
+ # smeared" so that no leap second table is needed for interpretation. Range is
1276
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1277
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1278
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1279
+ # txt).
1280
+ # # Examples
1281
+ # Example 1: Compute Timestamp from POSIX `time()`.
1282
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1283
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1284
+ # struct timeval tv; gettimeofday(&tv, NULL);
1285
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1286
+ # tv_usec * 1000);
1287
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1288
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1289
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1290
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1291
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1292
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1293
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1294
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1295
+ # long millis = System.currentTimeMillis();
1296
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1297
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1298
+ # Example 5: Compute Timestamp from current time in Python.
1299
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1300
+ # # JSON Mapping
1301
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1302
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1303
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1304
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1305
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1306
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1307
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1308
+ # indicated by "Z") is presently supported.
1309
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1310
+ # January 15, 2017.
1311
+ # In JavaScript, one can convert a Date object to this format using the standard
1312
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1313
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1314
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1315
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1316
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1317
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1318
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1319
+ # formatter capable of generating timestamps in this format.
1320
+ # Corresponds to the JSON property `completionTime`
1321
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
1322
+ attr_accessor :completion_time
1323
+
1324
+ # A Timestamp represents a point in time independent of any time zone or
1325
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1326
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1327
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1328
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1329
+ # smeared" so that no leap second table is needed for interpretation. Range is
1330
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1331
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1332
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1333
+ # txt).
1334
+ # # Examples
1335
+ # Example 1: Compute Timestamp from POSIX `time()`.
1336
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1337
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1338
+ # struct timeval tv; gettimeofday(&tv, NULL);
1339
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1340
+ # tv_usec * 1000);
1341
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1342
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1343
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1344
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1345
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1346
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1347
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1348
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1349
+ # long millis = System.currentTimeMillis();
1350
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1351
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1352
+ # Example 5: Compute Timestamp from current time in Python.
1353
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1354
+ # # JSON Mapping
1355
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1356
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1357
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1358
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1359
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1360
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1361
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1362
+ # indicated by "Z") is presently supported.
1363
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1364
+ # January 15, 2017.
1365
+ # In JavaScript, one can convert a Date object to this format using the standard
1366
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1367
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1368
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1369
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1370
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1371
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1372
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1373
+ # formatter capable of generating timestamps in this format.
1374
+ # Corresponds to the JSON property `creationTime`
1375
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
1376
+ attr_accessor :creation_time
1377
+
1378
+ # A description of this tool For example: mvn clean package -D skipTests=true
1379
+ # - In response: present if set by create/update request - In create/update
1380
+ # request: optional
1381
+ # Corresponds to the JSON property `description`
1382
+ # @return [String]
1383
+ attr_accessor :description
1384
+
1385
+ # A Duration represents a signed, fixed-length span of time represented as a
1386
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1387
+ # independent of any calendar and concepts like "day" or "month". It is related
1388
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1389
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1390
+ # 10,000 years.
1391
+ # # Examples
1392
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
1393
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
1394
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
1395
+ # start.nanos;
1396
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
1397
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
1398
+ # 1; duration.nanos += 1000000000; `
1399
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
1400
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
1401
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
1402
+ # duration.nanos;
1403
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
1404
+ # Example 3: Compute Duration from datetime.timedelta in Python.
1405
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
1406
+ # FromTimedelta(td)
1407
+ # # JSON Mapping
1408
+ # In JSON format, the Duration type is encoded as a string rather than an object,
1409
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
1410
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
1411
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
1412
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
1413
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
1414
+ # format as "3.000001s".
1415
+ # Corresponds to the JSON property `deviceUsageDuration`
1416
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
1417
+ attr_accessor :device_usage_duration
1418
+
1419
+ # If the execution containing this step has any dimension_definition set, then
1420
+ # this field allows the child to specify the values of the dimensions.
1421
+ # The keys must exactly match the dimension_definition of the execution.
1422
+ # For example, if the execution has `dimension_definition = ['attempt', 'device']
1423
+ # ` then a step must define values for those dimensions, eg. `dimension_value = [
1424
+ # 'attempt': '1', 'device': 'Nexus 6']`
1425
+ # If a step does not participate in one dimension of the matrix, the value for
1426
+ # that dimension should be empty string. For example, if one of the tests is
1427
+ # executed by a runner which does not support retries, the step could have `
1428
+ # dimension_value = ['attempt': '', 'device': 'Nexus 6']`
1429
+ # If the step does not participate in any dimensions of the matrix, it may leave
1430
+ # dimension_value unset.
1431
+ # A PRECONDITION_FAILED will be returned if any of the keys do not exist in the
1432
+ # dimension_definition of the execution.
1433
+ # A PRECONDITION_FAILED will be returned if another step in this execution
1434
+ # already has the same name and dimension_value, but differs on other data
1435
+ # fields, for example, step field is different.
1436
+ # A PRECONDITION_FAILED will be returned if dimension_value is set, and there is
1437
+ # a dimension_definition in the execution which is not specified as one of the
1438
+ # keys.
1439
+ # - In response: present if set by create - In create request: optional - In
1440
+ # update request: never set
1441
+ # Corresponds to the JSON property `dimensionValue`
1442
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StepDimensionValueEntry>]
1443
+ attr_accessor :dimension_value
1444
+
1445
+ # Whether any of the outputs of this step are images whose thumbnails can be
1446
+ # fetched with ListThumbnails.
1447
+ # - In response: always set - In create/update request: never set
1448
+ # Corresponds to the JSON property `hasImages`
1449
+ # @return [Boolean]
1450
+ attr_accessor :has_images
1451
+ alias_method :has_images?, :has_images
1452
+
1453
+ # Arbitrary user-supplied key/value pairs that are associated with the step.
1454
+ # Users are responsible for managing the key namespace such that keys don't
1455
+ # accidentally collide.
1456
+ # An INVALID_ARGUMENT will be returned if the number of labels exceeds 100 or if
1457
+ # the length of any of the keys or values exceeds 100 characters.
1458
+ # - In response: always set - In create request: optional - In update request:
1459
+ # optional; any new key/value pair will be added to the map, and any new value
1460
+ # for an existing key will update that key's value
1461
+ # Corresponds to the JSON property `labels`
1462
+ # @return [Array<Google::Apis::ToolresultsV1beta3::StepLabelsEntry>]
1463
+ attr_accessor :labels
1464
+
1465
+ # A short human-readable name to display in the UI. Maximum of 100 characters.
1466
+ # For example: Clean build
1467
+ # A PRECONDITION_FAILED will be returned upon creating a new step if it shares
1468
+ # its name and dimension_value with an existing step. If two steps represent a
1469
+ # similar action, but have different dimension values, they should share the
1470
+ # same name. For instance, if the same set of tests is run on two different
1471
+ # platforms, the two steps should have the same name.
1472
+ # - In response: always set - In create request: always set - In update request:
1473
+ # never set
1474
+ # Corresponds to the JSON property `name`
1475
+ # @return [String]
1476
+ attr_accessor :name
1477
+
1478
+ # Interprets a result so that humans and machines can act on it.
1479
+ # Corresponds to the JSON property `outcome`
1480
+ # @return [Google::Apis::ToolresultsV1beta3::Outcome]
1481
+ attr_accessor :outcome
1482
+
1483
+ # A Duration represents a signed, fixed-length span of time represented as a
1484
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1485
+ # independent of any calendar and concepts like "day" or "month". It is related
1486
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1487
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1488
+ # 10,000 years.
1489
+ # # Examples
1490
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
1491
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
1492
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
1493
+ # start.nanos;
1494
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
1495
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
1496
+ # 1; duration.nanos += 1000000000; `
1497
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
1498
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
1499
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
1500
+ # duration.nanos;
1501
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
1502
+ # Example 3: Compute Duration from datetime.timedelta in Python.
1503
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
1504
+ # FromTimedelta(td)
1505
+ # # JSON Mapping
1506
+ # In JSON format, the Duration type is encoded as a string rather than an object,
1507
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
1508
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
1509
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
1510
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
1511
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
1512
+ # format as "3.000001s".
1513
+ # Corresponds to the JSON property `runDuration`
1514
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
1515
+ attr_accessor :run_duration
1516
+
1517
+ # The initial state is IN_PROGRESS. The only legal state transitions are *
1518
+ # IN_PROGRESS -> COMPLETE
1519
+ # A PRECONDITION_FAILED will be returned if an invalid transition is requested.
1520
+ # It is valid to create Step with a state set to COMPLETE. The state can only be
1521
+ # set to COMPLETE once. A PRECONDITION_FAILED will be returned if the state is
1522
+ # set to COMPLETE multiple times.
1523
+ # - In response: always set - In create/update request: optional
1524
+ # Corresponds to the JSON property `state`
1525
+ # @return [String]
1526
+ attr_accessor :state
1527
+
1528
+ # A unique identifier within a Execution for this Step.
1529
+ # Returns INVALID_ARGUMENT if this field is set or overwritten by the caller.
1530
+ # - In response: always set - In create/update request: never set
1531
+ # Corresponds to the JSON property `stepId`
1532
+ # @return [String]
1533
+ attr_accessor :step_id
1534
+
1535
+ # A step that represents running tests.
1536
+ # It accepts ant-junit xml files which will be parsed into structured test
1537
+ # results by the service. Xml file paths are updated in order to append more
1538
+ # files, however they can't be deleted.
1539
+ # Users can also add test results manually by using the test_result field.
1540
+ # Corresponds to the JSON property `testExecutionStep`
1541
+ # @return [Google::Apis::ToolresultsV1beta3::TestExecutionStep]
1542
+ attr_accessor :test_execution_step
1543
+
1544
+ # Generic tool step to be used for binaries we do not explicitly support. For
1545
+ # example: running cp to copy artifacts from one location to another.
1546
+ # Corresponds to the JSON property `toolExecutionStep`
1547
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecutionStep]
1548
+ attr_accessor :tool_execution_step
1549
+
1550
+ def initialize(**args)
1551
+ update!(**args)
1552
+ end
1553
+
1554
+ # Update properties of this object
1555
+ def update!(**args)
1556
+ @completion_time = args[:completion_time] if args.key?(:completion_time)
1557
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
1558
+ @description = args[:description] if args.key?(:description)
1559
+ @device_usage_duration = args[:device_usage_duration] if args.key?(:device_usage_duration)
1560
+ @dimension_value = args[:dimension_value] if args.key?(:dimension_value)
1561
+ @has_images = args[:has_images] if args.key?(:has_images)
1562
+ @labels = args[:labels] if args.key?(:labels)
1563
+ @name = args[:name] if args.key?(:name)
1564
+ @outcome = args[:outcome] if args.key?(:outcome)
1565
+ @run_duration = args[:run_duration] if args.key?(:run_duration)
1566
+ @state = args[:state] if args.key?(:state)
1567
+ @step_id = args[:step_id] if args.key?(:step_id)
1568
+ @test_execution_step = args[:test_execution_step] if args.key?(:test_execution_step)
1569
+ @tool_execution_step = args[:tool_execution_step] if args.key?(:tool_execution_step)
1570
+ end
1571
+ end
1572
+
1573
+ #
1574
+ class StepDimensionValueEntry
1575
+ include Google::Apis::Core::Hashable
1576
+
1577
+ #
1578
+ # Corresponds to the JSON property `key`
1579
+ # @return [String]
1580
+ attr_accessor :key
1581
+
1582
+ #
1583
+ # Corresponds to the JSON property `value`
1584
+ # @return [String]
1585
+ attr_accessor :value
1586
+
1587
+ def initialize(**args)
1588
+ update!(**args)
1589
+ end
1590
+
1591
+ # Update properties of this object
1592
+ def update!(**args)
1593
+ @key = args[:key] if args.key?(:key)
1594
+ @value = args[:value] if args.key?(:value)
1595
+ end
1596
+ end
1597
+
1598
+ #
1599
+ class StepLabelsEntry
1600
+ include Google::Apis::Core::Hashable
1601
+
1602
+ #
1603
+ # Corresponds to the JSON property `key`
1604
+ # @return [String]
1605
+ attr_accessor :key
1606
+
1607
+ #
1608
+ # Corresponds to the JSON property `value`
1609
+ # @return [String]
1610
+ attr_accessor :value
1611
+
1612
+ def initialize(**args)
1613
+ update!(**args)
1614
+ end
1615
+
1616
+ # Update properties of this object
1617
+ def update!(**args)
1618
+ @key = args[:key] if args.key?(:key)
1619
+ @value = args[:value] if args.key?(:value)
1620
+ end
1621
+ end
1622
+
1623
+ #
1624
+ class SuccessDetail
1625
+ include Google::Apis::Core::Hashable
1626
+
1627
+ # If a native process other than the app crashed.
1628
+ # Corresponds to the JSON property `otherNativeCrash`
1629
+ # @return [Boolean]
1630
+ attr_accessor :other_native_crash
1631
+ alias_method :other_native_crash?, :other_native_crash
1632
+
1633
+ def initialize(**args)
1634
+ update!(**args)
1635
+ end
1636
+
1637
+ # Update properties of this object
1638
+ def update!(**args)
1639
+ @other_native_crash = args[:other_native_crash] if args.key?(:other_native_crash)
1640
+ end
1641
+ end
1642
+
1643
+ # A reference to a test case.
1644
+ # Test case references are canonically ordered lexicographically by these three
1645
+ # factors: * First, by test_suite_name. * Second, by class_name. * Third, by
1646
+ # name.
1647
+ class TestCaseReference
1648
+ include Google::Apis::Core::Hashable
1649
+
1650
+ # The name of the class.
1651
+ # Corresponds to the JSON property `className`
1652
+ # @return [String]
1653
+ attr_accessor :class_name
1654
+
1655
+ # The name of the test case.
1656
+ # Required.
1657
+ # Corresponds to the JSON property `name`
1658
+ # @return [String]
1659
+ attr_accessor :name
1660
+
1661
+ # The name of the test suite to which this test case belongs.
1662
+ # Corresponds to the JSON property `testSuiteName`
1663
+ # @return [String]
1664
+ attr_accessor :test_suite_name
1665
+
1666
+ def initialize(**args)
1667
+ update!(**args)
1668
+ end
1669
+
1670
+ # Update properties of this object
1671
+ def update!(**args)
1672
+ @class_name = args[:class_name] if args.key?(:class_name)
1673
+ @name = args[:name] if args.key?(:name)
1674
+ @test_suite_name = args[:test_suite_name] if args.key?(:test_suite_name)
1675
+ end
1676
+ end
1677
+
1678
+ # A step that represents running tests.
1679
+ # It accepts ant-junit xml files which will be parsed into structured test
1680
+ # results by the service. Xml file paths are updated in order to append more
1681
+ # files, however they can't be deleted.
1682
+ # Users can also add test results manually by using the test_result field.
1683
+ class TestExecutionStep
1684
+ include Google::Apis::Core::Hashable
1685
+
1686
+ # Issues observed during the test execution.
1687
+ # For example, if the mobile app under test crashed during the test, the error
1688
+ # message and the stack trace content can be recorded here to assist debugging.
1689
+ # - In response: present if set by create or update - In create/update request:
1690
+ # optional
1691
+ # Corresponds to the JSON property `testIssues`
1692
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestIssue>]
1693
+ attr_accessor :test_issues
1694
+
1695
+ # List of test suite overview contents. This could be parsed from xUnit XML log
1696
+ # by server, or uploaded directly by user. This references should only be called
1697
+ # when test suites are fully parsed or uploaded.
1698
+ # The maximum allowed number of test suite overviews per step is 1000.
1699
+ # - In response: always set - In create request: optional - In update request:
1700
+ # never (use publishXunitXmlFiles custom method instead)
1701
+ # Corresponds to the JSON property `testSuiteOverviews`
1702
+ # @return [Array<Google::Apis::ToolresultsV1beta3::TestSuiteOverview>]
1703
+ attr_accessor :test_suite_overviews
1704
+
1705
+ # Testing timing break down to know phases.
1706
+ # Corresponds to the JSON property `testTiming`
1707
+ # @return [Google::Apis::ToolresultsV1beta3::TestTiming]
1708
+ attr_accessor :test_timing
1709
+
1710
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
1711
+ # artifacts or deploying code.
1712
+ # Corresponds to the JSON property `toolExecution`
1713
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecution]
1714
+ attr_accessor :tool_execution
1715
+
1716
+ def initialize(**args)
1717
+ update!(**args)
1718
+ end
1719
+
1720
+ # Update properties of this object
1721
+ def update!(**args)
1722
+ @test_issues = args[:test_issues] if args.key?(:test_issues)
1723
+ @test_suite_overviews = args[:test_suite_overviews] if args.key?(:test_suite_overviews)
1724
+ @test_timing = args[:test_timing] if args.key?(:test_timing)
1725
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
1726
+ end
1727
+ end
1728
+
1729
+ # An abnormal event observed during the test execution.
1730
+ class TestIssue
1731
+ include Google::Apis::Core::Hashable
1732
+
1733
+ # A brief human-readable message describing the abnormal event.
1734
+ # Required.
1735
+ # Corresponds to the JSON property `errorMessage`
1736
+ # @return [String]
1737
+ attr_accessor :error_message
1738
+
1739
+ # A stacktrace.
1740
+ # Corresponds to the JSON property `stackTrace`
1741
+ # @return [Google::Apis::ToolresultsV1beta3::StackTrace]
1742
+ attr_accessor :stack_trace
1743
+
1744
+ def initialize(**args)
1745
+ update!(**args)
1746
+ end
1747
+
1748
+ # Update properties of this object
1749
+ def update!(**args)
1750
+ @error_message = args[:error_message] if args.key?(:error_message)
1751
+ @stack_trace = args[:stack_trace] if args.key?(:stack_trace)
1752
+ end
1753
+ end
1754
+
1755
+ # A summary of a test suite result either parsed from XML or uploaded directly
1756
+ # by a user.
1757
+ # Note: the API related comments are for StepService only. This message is also
1758
+ # being used in ExecutionService in a read only mode for the corresponding step.
1759
+ class TestSuiteOverview
1760
+ include Google::Apis::Core::Hashable
1761
+
1762
+ # Number of test cases in error, typically set by the service by parsing the
1763
+ # xml_source.
1764
+ # - In create/response: always set - In update request: never
1765
+ # Corresponds to the JSON property `errorCount`
1766
+ # @return [Fixnum]
1767
+ attr_accessor :error_count
1768
+
1769
+ # Number of failed test cases, typically set by the service by parsing the
1770
+ # xml_source. May also be set by the user.
1771
+ # - In create/response: always set - In update request: never
1772
+ # Corresponds to the JSON property `failureCount`
1773
+ # @return [Fixnum]
1774
+ attr_accessor :failure_count
1775
+
1776
+ # The name of the test suite.
1777
+ # - In create/response: always set - In update request: never
1778
+ # Corresponds to the JSON property `name`
1779
+ # @return [String]
1780
+ attr_accessor :name
1781
+
1782
+ # Number of test cases not run, typically set by the service by parsing the
1783
+ # xml_source.
1784
+ # - In create/response: always set - In update request: never
1785
+ # Corresponds to the JSON property `skippedCount`
1786
+ # @return [Fixnum]
1787
+ attr_accessor :skipped_count
1788
+
1789
+ # Number of test cases, typically set by the service by parsing the xml_source.
1790
+ # - In create/response: always set - In update request: never
1791
+ # Corresponds to the JSON property `totalCount`
1792
+ # @return [Fixnum]
1793
+ attr_accessor :total_count
1794
+
1795
+ # A reference to a file.
1796
+ # Corresponds to the JSON property `xmlSource`
1797
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
1798
+ attr_accessor :xml_source
1799
+
1800
+ def initialize(**args)
1801
+ update!(**args)
1802
+ end
1803
+
1804
+ # Update properties of this object
1805
+ def update!(**args)
1806
+ @error_count = args[:error_count] if args.key?(:error_count)
1807
+ @failure_count = args[:failure_count] if args.key?(:failure_count)
1808
+ @name = args[:name] if args.key?(:name)
1809
+ @skipped_count = args[:skipped_count] if args.key?(:skipped_count)
1810
+ @total_count = args[:total_count] if args.key?(:total_count)
1811
+ @xml_source = args[:xml_source] if args.key?(:xml_source)
1812
+ end
1813
+ end
1814
+
1815
+ # Testing timing break down to know phases.
1816
+ class TestTiming
1817
+ include Google::Apis::Core::Hashable
1818
+
1819
+ # A Duration represents a signed, fixed-length span of time represented as a
1820
+ # count of seconds and fractions of seconds at nanosecond resolution. It is
1821
+ # independent of any calendar and concepts like "day" or "month". It is related
1822
+ # to Timestamp in that the difference between two Timestamp values is a Duration
1823
+ # and it can be added or subtracted from a Timestamp. Range is approximately +-
1824
+ # 10,000 years.
1825
+ # # Examples
1826
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
1827
+ # Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
1828
+ # duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos -
1829
+ # start.nanos;
1830
+ # if (duration.seconds 0) ` duration.seconds += 1; duration.nanos -= 1000000000;
1831
+ # ` else if (durations.seconds > 0 && duration.nanos < 0) ` duration.seconds -=
1832
+ # 1; duration.nanos += 1000000000; `
1833
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
1834
+ # Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
1835
+ # end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos +
1836
+ # duration.nanos;
1837
+ # if (end.nanos = 1000000000) ` end.seconds += 1; end.nanos -= 1000000000; `
1838
+ # Example 3: Compute Duration from datetime.timedelta in Python.
1839
+ # td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.
1840
+ # FromTimedelta(td)
1841
+ # # JSON Mapping
1842
+ # In JSON format, the Duration type is encoded as a string rather than an object,
1843
+ # where the string ends in the suffix "s" (indicating seconds) and is preceded
1844
+ # by the number of seconds, with nanoseconds expressed as fractional seconds.
1845
+ # For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "
1846
+ # 3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.
1847
+ # 000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
1848
+ # format as "3.000001s".
1849
+ # Corresponds to the JSON property `testProcessDuration`
1850
+ # @return [Google::Apis::ToolresultsV1beta3::Duration]
1851
+ attr_accessor :test_process_duration
1852
+
1853
+ def initialize(**args)
1854
+ update!(**args)
1855
+ end
1856
+
1857
+ # Update properties of this object
1858
+ def update!(**args)
1859
+ @test_process_duration = args[:test_process_duration] if args.key?(:test_process_duration)
1860
+ end
1861
+ end
1862
+
1863
+ # A single thumbnail, with its size and format.
1864
+ class Thumbnail
1865
+ include Google::Apis::Core::Hashable
1866
+
1867
+ # The thumbnail's content type, i.e. "image/png".
1868
+ # Always set.
1869
+ # Corresponds to the JSON property `contentType`
1870
+ # @return [String]
1871
+ attr_accessor :content_type
1872
+
1873
+ # The thumbnail file itself.
1874
+ # That is, the bytes here are precisely the bytes that make up the thumbnail
1875
+ # file; they can be served as an image as-is (with the appropriate content type.)
1876
+ # Always set.
1877
+ # Corresponds to the JSON property `data`
1878
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1879
+ # @return [String]
1880
+ attr_accessor :data
1881
+
1882
+ # The height of the thumbnail, in pixels.
1883
+ # Always set.
1884
+ # Corresponds to the JSON property `heightPx`
1885
+ # @return [Fixnum]
1886
+ attr_accessor :height_px
1887
+
1888
+ # The width of the thumbnail, in pixels.
1889
+ # Always set.
1890
+ # Corresponds to the JSON property `widthPx`
1891
+ # @return [Fixnum]
1892
+ attr_accessor :width_px
1893
+
1894
+ def initialize(**args)
1895
+ update!(**args)
1896
+ end
1897
+
1898
+ # Update properties of this object
1899
+ def update!(**args)
1900
+ @content_type = args[:content_type] if args.key?(:content_type)
1901
+ @data = args[:data] if args.key?(:data)
1902
+ @height_px = args[:height_px] if args.key?(:height_px)
1903
+ @width_px = args[:width_px] if args.key?(:width_px)
1904
+ end
1905
+ end
1906
+
1907
+ # A Timestamp represents a point in time independent of any time zone or
1908
+ # calendar, represented as seconds and fractions of seconds at nanosecond
1909
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
1910
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
1911
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
1912
+ # smeared" so that no leap second table is needed for interpretation. Range is
1913
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
1914
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
1915
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
1916
+ # txt).
1917
+ # # Examples
1918
+ # Example 1: Compute Timestamp from POSIX `time()`.
1919
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
1920
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
1921
+ # struct timeval tv; gettimeofday(&tv, NULL);
1922
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
1923
+ # tv_usec * 1000);
1924
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
1925
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
1926
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
1927
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
1928
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
1929
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
1930
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
1931
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
1932
+ # long millis = System.currentTimeMillis();
1933
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
1934
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
1935
+ # Example 5: Compute Timestamp from current time in Python.
1936
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
1937
+ # # JSON Mapping
1938
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
1939
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
1940
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
1941
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
1942
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
1943
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
1944
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
1945
+ # indicated by "Z") is presently supported.
1946
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
1947
+ # January 15, 2017.
1948
+ # In JavaScript, one can convert a Date object to this format using the standard
1949
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
1950
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
1951
+ # datetime.datetime` object can be converted to this format using [`strftime`](
1952
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
1953
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
1954
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
1955
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
1956
+ # formatter capable of generating timestamps in this format.
1957
+ class Timestamp
1958
+ include Google::Apis::Core::Hashable
1959
+
1960
+ # Non-negative fractions of a second at nanosecond resolution. Negative second
1961
+ # values with fractions must still have non-negative nanos values that count
1962
+ # forward in time. Must be from 0 to 999,999,999 inclusive.
1963
+ # Corresponds to the JSON property `nanos`
1964
+ # @return [Fixnum]
1965
+ attr_accessor :nanos
1966
+
1967
+ # Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be
1968
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
1969
+ # Corresponds to the JSON property `seconds`
1970
+ # @return [String]
1971
+ attr_accessor :seconds
1972
+
1973
+ def initialize(**args)
1974
+ update!(**args)
1975
+ end
1976
+
1977
+ # Update properties of this object
1978
+ def update!(**args)
1979
+ @nanos = args[:nanos] if args.key?(:nanos)
1980
+ @seconds = args[:seconds] if args.key?(:seconds)
1981
+ end
1982
+ end
1983
+
1984
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
1985
+ # artifacts or deploying code.
1986
+ class ToolExecution
1987
+ include Google::Apis::Core::Hashable
1988
+
1989
+ # The full tokenized command line including the program name (equivalent to argv
1990
+ # in a C program).
1991
+ # - In response: present if set by create request - In create request: optional -
1992
+ # In update request: never set
1993
+ # Corresponds to the JSON property `commandLineArguments`
1994
+ # @return [Array<String>]
1995
+ attr_accessor :command_line_arguments
1996
+
1997
+ # Exit code from a tool execution.
1998
+ # Corresponds to the JSON property `exitCode`
1999
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExitCode]
2000
+ attr_accessor :exit_code
2001
+
2002
+ # References to any plain text logs output the tool execution.
2003
+ # This field can be set before the tool has exited in order to be able to have
2004
+ # access to a live view of the logs while the tool is running.
2005
+ # The maximum allowed number of tool logs per step is 1000.
2006
+ # - In response: present if set by create/update request - In create request:
2007
+ # optional - In update request: optional, any value provided will be appended to
2008
+ # the existing list
2009
+ # Corresponds to the JSON property `toolLogs`
2010
+ # @return [Array<Google::Apis::ToolresultsV1beta3::FileReference>]
2011
+ attr_accessor :tool_logs
2012
+
2013
+ # References to opaque files of any format output by the tool execution.
2014
+ # The maximum allowed number of tool outputs per step is 1000.
2015
+ # - In response: present if set by create/update request - In create request:
2016
+ # optional - In update request: optional, any value provided will be appended to
2017
+ # the existing list
2018
+ # Corresponds to the JSON property `toolOutputs`
2019
+ # @return [Array<Google::Apis::ToolresultsV1beta3::ToolOutputReference>]
2020
+ attr_accessor :tool_outputs
2021
+
2022
+ def initialize(**args)
2023
+ update!(**args)
2024
+ end
2025
+
2026
+ # Update properties of this object
2027
+ def update!(**args)
2028
+ @command_line_arguments = args[:command_line_arguments] if args.key?(:command_line_arguments)
2029
+ @exit_code = args[:exit_code] if args.key?(:exit_code)
2030
+ @tool_logs = args[:tool_logs] if args.key?(:tool_logs)
2031
+ @tool_outputs = args[:tool_outputs] if args.key?(:tool_outputs)
2032
+ end
2033
+ end
2034
+
2035
+ # Generic tool step to be used for binaries we do not explicitly support. For
2036
+ # example: running cp to copy artifacts from one location to another.
2037
+ class ToolExecutionStep
2038
+ include Google::Apis::Core::Hashable
2039
+
2040
+ # An execution of an arbitrary tool. It could be a test runner or a tool copying
2041
+ # artifacts or deploying code.
2042
+ # Corresponds to the JSON property `toolExecution`
2043
+ # @return [Google::Apis::ToolresultsV1beta3::ToolExecution]
2044
+ attr_accessor :tool_execution
2045
+
2046
+ def initialize(**args)
2047
+ update!(**args)
2048
+ end
2049
+
2050
+ # Update properties of this object
2051
+ def update!(**args)
2052
+ @tool_execution = args[:tool_execution] if args.key?(:tool_execution)
2053
+ end
2054
+ end
2055
+
2056
+ # Exit code from a tool execution.
2057
+ class ToolExitCode
2058
+ include Google::Apis::Core::Hashable
2059
+
2060
+ # Tool execution exit code. A value of 0 means that the execution was successful.
2061
+ # - In response: always set - In create/update request: always set
2062
+ # Corresponds to the JSON property `number`
2063
+ # @return [Fixnum]
2064
+ attr_accessor :number
2065
+
2066
+ def initialize(**args)
2067
+ update!(**args)
2068
+ end
2069
+
2070
+ # Update properties of this object
2071
+ def update!(**args)
2072
+ @number = args[:number] if args.key?(:number)
2073
+ end
2074
+ end
2075
+
2076
+ # A reference to a ToolExecution output file.
2077
+ class ToolOutputReference
2078
+ include Google::Apis::Core::Hashable
2079
+
2080
+ # A Timestamp represents a point in time independent of any time zone or
2081
+ # calendar, represented as seconds and fractions of seconds at nanosecond
2082
+ # resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian
2083
+ # Calendar which extends the Gregorian calendar backwards to year one. It is
2084
+ # encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "
2085
+ # smeared" so that no leap second table is needed for interpretation. Range is
2086
+ # from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to
2087
+ # that range, we ensure that we can convert to and from RFC 3339 date strings.
2088
+ # See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.
2089
+ # txt).
2090
+ # # Examples
2091
+ # Example 1: Compute Timestamp from POSIX `time()`.
2092
+ # Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
2093
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
2094
+ # struct timeval tv; gettimeofday(&tv, NULL);
2095
+ # Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.
2096
+ # tv_usec * 1000);
2097
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
2098
+ # FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.
2099
+ # dwHighDateTime) << 32) | ft.dwLowDateTime;
2100
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is
2101
+ # 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp
2102
+ # timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
2103
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
2104
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
2105
+ # long millis = System.currentTimeMillis();
2106
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .
2107
+ # setNanos((int) ((millis % 1000) * 1000000)).build();
2108
+ # Example 5: Compute Timestamp from current time in Python.
2109
+ # timestamp = Timestamp() timestamp.GetCurrentTime()
2110
+ # # JSON Mapping
2111
+ # In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](
2112
+ # https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "`year`-`
2113
+ # month`-`day`T`hour`:`min`:`sec`[.`frac_sec`]Z" where `year` is always
2114
+ # expressed using four digits while `month`, `day`, `hour`, `min`, and `sec` are
2115
+ # zero-padded to two digits each. The fractional seconds, which can go up to 9
2116
+ # digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
2117
+ # indicates the timezone ("UTC"); the timezone is required, though only UTC (as
2118
+ # indicated by "Z") is presently supported.
2119
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
2120
+ # January 15, 2017.
2121
+ # In JavaScript, one can convert a Date object to this format using the standard
2122
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/
2123
+ # Reference/Global_Objects/Date/toISOString] method. In Python, a standard `
2124
+ # datetime.datetime` object can be converted to this format using [`strftime`](
2125
+ # https://docs.python.org/2/library/time.html#time.strftime) with the time
2126
+ # format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda
2127
+ # Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/
2128
+ # apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a
2129
+ # formatter capable of generating timestamps in this format.
2130
+ # Corresponds to the JSON property `creationTime`
2131
+ # @return [Google::Apis::ToolresultsV1beta3::Timestamp]
2132
+ attr_accessor :creation_time
2133
+
2134
+ # A reference to a file.
2135
+ # Corresponds to the JSON property `output`
2136
+ # @return [Google::Apis::ToolresultsV1beta3::FileReference]
2137
+ attr_accessor :output
2138
+
2139
+ # A reference to a test case.
2140
+ # Test case references are canonically ordered lexicographically by these three
2141
+ # factors: * First, by test_suite_name. * Second, by class_name. * Third, by
2142
+ # name.
2143
+ # Corresponds to the JSON property `testCase`
2144
+ # @return [Google::Apis::ToolresultsV1beta3::TestCaseReference]
2145
+ attr_accessor :test_case
2146
+
2147
+ def initialize(**args)
2148
+ update!(**args)
2149
+ end
2150
+
2151
+ # Update properties of this object
2152
+ def update!(**args)
2153
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
2154
+ @output = args[:output] if args.key?(:output)
2155
+ @test_case = args[:test_case] if args.key?(:test_case)
2156
+ end
2157
+ end
2158
+ end
2159
+ end
2160
+ end