google-api-client 0.13.2 → 0.13.3

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