google-api-client 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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