1// Copyright 2020 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package testing provides access to the Cloud Testing API.
8//
9// For product documentation, see: https://developers.google.com/cloud-test-lab/
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/testing/v1"
16//   ...
17//   ctx := context.Background()
18//   testingService, err := testing.NewService(ctx)
19//
20// In this example, Google Application Default Credentials are used for authentication.
21//
22// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
23//
24// Other authentication options
25//
26// By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes:
27//
28//   testingService, err := testing.NewService(ctx, option.WithScopes(testing.CloudPlatformReadOnlyScope))
29//
30// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
31//
32//   testingService, err := testing.NewService(ctx, option.WithAPIKey("AIza..."))
33//
34// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
35//
36//   config := &oauth2.Config{...}
37//   // ...
38//   token, err := config.Exchange(ctx, ...)
39//   testingService, err := testing.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
40//
41// See https://godoc.org/google.golang.org/api/option/ for details on options.
42package testing // import "google.golang.org/api/testing/v1"
43
44import (
45	"bytes"
46	"context"
47	"encoding/json"
48	"errors"
49	"fmt"
50	"io"
51	"net/http"
52	"net/url"
53	"strconv"
54	"strings"
55
56	googleapi "google.golang.org/api/googleapi"
57	gensupport "google.golang.org/api/internal/gensupport"
58	option "google.golang.org/api/option"
59	internaloption "google.golang.org/api/option/internaloption"
60	htransport "google.golang.org/api/transport/http"
61)
62
63// Always reference these packages, just in case the auto-generated code
64// below doesn't.
65var _ = bytes.NewBuffer
66var _ = strconv.Itoa
67var _ = fmt.Sprintf
68var _ = json.NewDecoder
69var _ = io.Copy
70var _ = url.Parse
71var _ = gensupport.MarshalJSON
72var _ = googleapi.Version
73var _ = errors.New
74var _ = strings.Replace
75var _ = context.Canceled
76var _ = internaloption.WithDefaultEndpoint
77
78const apiId = "testing:v1"
79const apiName = "testing"
80const apiVersion = "v1"
81const basePath = "https://testing.googleapis.com/"
82
83// OAuth2 scopes used by this API.
84const (
85	// View and manage your data across Google Cloud Platform services
86	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
87
88	// View your data across Google Cloud Platform services
89	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"
90)
91
92// NewService creates a new Service.
93func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
94	scopesOption := option.WithScopes(
95		"https://www.googleapis.com/auth/cloud-platform",
96		"https://www.googleapis.com/auth/cloud-platform.read-only",
97	)
98	// NOTE: prepend, so we don't override user-specified scopes.
99	opts = append([]option.ClientOption{scopesOption}, opts...)
100	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
101	client, endpoint, err := htransport.NewClient(ctx, opts...)
102	if err != nil {
103		return nil, err
104	}
105	s, err := New(client)
106	if err != nil {
107		return nil, err
108	}
109	if endpoint != "" {
110		s.BasePath = endpoint
111	}
112	return s, nil
113}
114
115// New creates a new Service. It uses the provided http.Client for requests.
116//
117// Deprecated: please use NewService instead.
118// To provide a custom HTTP client, use option.WithHTTPClient.
119// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
120func New(client *http.Client) (*Service, error) {
121	if client == nil {
122		return nil, errors.New("client is nil")
123	}
124	s := &Service{client: client, BasePath: basePath}
125	s.ApplicationDetailService = NewApplicationDetailServiceService(s)
126	s.Projects = NewProjectsService(s)
127	s.TestEnvironmentCatalog = NewTestEnvironmentCatalogService(s)
128	return s, nil
129}
130
131type Service struct {
132	client    *http.Client
133	BasePath  string // API endpoint base URL
134	UserAgent string // optional additional User-Agent fragment
135
136	ApplicationDetailService *ApplicationDetailServiceService
137
138	Projects *ProjectsService
139
140	TestEnvironmentCatalog *TestEnvironmentCatalogService
141}
142
143func (s *Service) userAgent() string {
144	if s.UserAgent == "" {
145		return googleapi.UserAgent
146	}
147	return googleapi.UserAgent + " " + s.UserAgent
148}
149
150func NewApplicationDetailServiceService(s *Service) *ApplicationDetailServiceService {
151	rs := &ApplicationDetailServiceService{s: s}
152	return rs
153}
154
155type ApplicationDetailServiceService struct {
156	s *Service
157}
158
159func NewProjectsService(s *Service) *ProjectsService {
160	rs := &ProjectsService{s: s}
161	rs.TestMatrices = NewProjectsTestMatricesService(s)
162	return rs
163}
164
165type ProjectsService struct {
166	s *Service
167
168	TestMatrices *ProjectsTestMatricesService
169}
170
171func NewProjectsTestMatricesService(s *Service) *ProjectsTestMatricesService {
172	rs := &ProjectsTestMatricesService{s: s}
173	return rs
174}
175
176type ProjectsTestMatricesService struct {
177	s *Service
178}
179
180func NewTestEnvironmentCatalogService(s *Service) *TestEnvironmentCatalogService {
181	rs := &TestEnvironmentCatalogService{s: s}
182	return rs
183}
184
185type TestEnvironmentCatalogService struct {
186	s *Service
187}
188
189// Account: Identifies an account and how to log into it.
190type Account struct {
191	// GoogleAuto: An automatic google login account.
192	GoogleAuto *GoogleAuto `json:"googleAuto,omitempty"`
193
194	// ForceSendFields is a list of field names (e.g. "GoogleAuto") to
195	// unconditionally include in API requests. By default, fields with
196	// empty values are omitted from API requests. However, any non-pointer,
197	// non-interface field appearing in ForceSendFields will be sent to the
198	// server regardless of whether the field is empty or not. This may be
199	// used to include empty fields in Patch requests.
200	ForceSendFields []string `json:"-"`
201
202	// NullFields is a list of field names (e.g. "GoogleAuto") to include in
203	// API requests with the JSON null value. By default, fields with empty
204	// values are omitted from API requests. However, any field with an
205	// empty value appearing in NullFields will be sent to the server as
206	// null. It is an error if a field in this list has a non-empty value.
207	// This may be used to include null fields in Patch requests.
208	NullFields []string `json:"-"`
209}
210
211func (s *Account) MarshalJSON() ([]byte, error) {
212	type NoMethod Account
213	raw := NoMethod(*s)
214	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
215}
216
217// AndroidDevice: A single Android device.
218type AndroidDevice struct {
219	// AndroidModelId: Required. The id of the Android device to be
220	// used.
221	// Use the TestEnvironmentDiscoveryService to get supported options.
222	AndroidModelId string `json:"androidModelId,omitempty"`
223
224	// AndroidVersionId: Required. The id of the Android OS version to be
225	// used.
226	// Use the TestEnvironmentDiscoveryService to get supported options.
227	AndroidVersionId string `json:"androidVersionId,omitempty"`
228
229	// Locale: Required. The locale the test device used for testing.
230	// Use the TestEnvironmentDiscoveryService to get supported options.
231	Locale string `json:"locale,omitempty"`
232
233	// Orientation: Required. How the device is oriented during the
234	// test.
235	// Use the TestEnvironmentDiscoveryService to get supported options.
236	Orientation string `json:"orientation,omitempty"`
237
238	// ForceSendFields is a list of field names (e.g. "AndroidModelId") to
239	// unconditionally include in API requests. By default, fields with
240	// empty values are omitted from API requests. However, any non-pointer,
241	// non-interface field appearing in ForceSendFields will be sent to the
242	// server regardless of whether the field is empty or not. This may be
243	// used to include empty fields in Patch requests.
244	ForceSendFields []string `json:"-"`
245
246	// NullFields is a list of field names (e.g. "AndroidModelId") to
247	// include in API requests with the JSON null value. By default, fields
248	// with empty values are omitted from API requests. However, any field
249	// with an empty value appearing in NullFields will be sent to the
250	// server as null. It is an error if a field in this list has a
251	// non-empty value. This may be used to include null fields in Patch
252	// requests.
253	NullFields []string `json:"-"`
254}
255
256func (s *AndroidDevice) MarshalJSON() ([]byte, error) {
257	type NoMethod AndroidDevice
258	raw := NoMethod(*s)
259	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
260}
261
262// AndroidDeviceCatalog: The currently supported Android devices.
263type AndroidDeviceCatalog struct {
264	// Models: The set of supported Android device models.
265	Models []*AndroidModel `json:"models,omitempty"`
266
267	// RuntimeConfiguration: The set of supported runtime configurations.
268	RuntimeConfiguration *AndroidRuntimeConfiguration `json:"runtimeConfiguration,omitempty"`
269
270	// Versions: The set of supported Android OS versions.
271	Versions []*AndroidVersion `json:"versions,omitempty"`
272
273	// ForceSendFields is a list of field names (e.g. "Models") to
274	// unconditionally include in API requests. By default, fields with
275	// empty values are omitted from API requests. However, any non-pointer,
276	// non-interface field appearing in ForceSendFields will be sent to the
277	// server regardless of whether the field is empty or not. This may be
278	// used to include empty fields in Patch requests.
279	ForceSendFields []string `json:"-"`
280
281	// NullFields is a list of field names (e.g. "Models") to include in API
282	// requests with the JSON null value. By default, fields with empty
283	// values are omitted from API requests. However, any field with an
284	// empty value appearing in NullFields will be sent to the server as
285	// null. It is an error if a field in this list has a non-empty value.
286	// This may be used to include null fields in Patch requests.
287	NullFields []string `json:"-"`
288}
289
290func (s *AndroidDeviceCatalog) MarshalJSON() ([]byte, error) {
291	type NoMethod AndroidDeviceCatalog
292	raw := NoMethod(*s)
293	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
294}
295
296// AndroidDeviceList: A list of Android device configurations in which
297// the test is to be executed.
298type AndroidDeviceList struct {
299	// AndroidDevices: Required. A list of Android devices.
300	AndroidDevices []*AndroidDevice `json:"androidDevices,omitempty"`
301
302	// ForceSendFields is a list of field names (e.g. "AndroidDevices") to
303	// unconditionally include in API requests. By default, fields with
304	// empty values are omitted from API requests. However, any non-pointer,
305	// non-interface field appearing in ForceSendFields will be sent to the
306	// server regardless of whether the field is empty or not. This may be
307	// used to include empty fields in Patch requests.
308	ForceSendFields []string `json:"-"`
309
310	// NullFields is a list of field names (e.g. "AndroidDevices") to
311	// include in API requests with the JSON null value. By default, fields
312	// with empty values are omitted from API requests. However, any field
313	// with an empty value appearing in NullFields will be sent to the
314	// server as null. It is an error if a field in this list has a
315	// non-empty value. This may be used to include null fields in Patch
316	// requests.
317	NullFields []string `json:"-"`
318}
319
320func (s *AndroidDeviceList) MarshalJSON() ([]byte, error) {
321	type NoMethod AndroidDeviceList
322	raw := NoMethod(*s)
323	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
324}
325
326// AndroidInstrumentationTest: A test of an Android application that can
327// control an Android component
328// independently of its normal lifecycle.
329// Android instrumentation tests run an application APK and test APK
330// inside the
331// same process on a virtual or physical AndroidDevice.  They also
332// specify
333// a test runner class, such as com.google.GoogleTestRunner, which can
334// vary
335// on the specific instrumentation framework chosen.
336//
337// See <http://developer.android.com/tools/testing/testing_android.html>
338// for
339// more information on types of Android tests.
340type AndroidInstrumentationTest struct {
341	// AppApk: The APK for the application under test.
342	AppApk *FileReference `json:"appApk,omitempty"`
343
344	// AppBundle: A multi-apk app bundle for the application under test.
345	AppBundle *AppBundle `json:"appBundle,omitempty"`
346
347	// AppPackageId: The java package for the application under test.
348	// The default value is determined by examining the application's
349	// manifest.
350	AppPackageId string `json:"appPackageId,omitempty"`
351
352	// OrchestratorOption: The option of whether running each test within
353	// its own invocation of
354	// instrumentation with Android Test Orchestrator or not.
355	// ** Orchestrator is only compatible with AndroidJUnitRunner version
356	// 1.0 or
357	// higher! **
358	// Orchestrator offers the following benefits:
359	//  - No shared state
360	//  - Crashes are isolated
361	//  - Logs are scoped per
362	// test
363	//
364	// See
365	// <https://developer.android.com/training/testing/junit-runner
366	// .html#using-android-test-orchestrator>
367	// for more information about Android Test Orchestrator.
368	//
369	// If not set, the test will be run without the orchestrator.
370	//
371	// Possible values:
372	//   "ORCHESTRATOR_OPTION_UNSPECIFIED" - Default value: the server will
373	// choose the mode. Currently implies that
374	// the test will run without the orchestrator. In the future,
375	// all instrumentation tests will be run with the orchestrator.
376	// Using the orchestrator is highly encouraged because of all the
377	// benefits it
378	// offers.
379	//   "USE_ORCHESTRATOR" - Run test using orchestrator.
380	// ** Only compatible with AndroidJUnitRunner version 1.0 or higher!
381	// **
382	// Recommended.
383	//   "DO_NOT_USE_ORCHESTRATOR" - Run test without using orchestrator.
384	OrchestratorOption string `json:"orchestratorOption,omitempty"`
385
386	// ShardingOption: The option to run tests in multiple shards in
387	// parallel.
388	ShardingOption *ShardingOption `json:"shardingOption,omitempty"`
389
390	// TestApk: Required. The APK containing the test code to be executed.
391	TestApk *FileReference `json:"testApk,omitempty"`
392
393	// TestPackageId: The java package for the test to be executed.
394	// The default value is determined by examining the application's
395	// manifest.
396	TestPackageId string `json:"testPackageId,omitempty"`
397
398	// TestRunnerClass: The InstrumentationTestRunner class.
399	// The default value is determined by examining the application's
400	// manifest.
401	TestRunnerClass string `json:"testRunnerClass,omitempty"`
402
403	// TestTargets: Each target must be fully qualified with the package
404	// name or class name,
405	// in one of these formats:
406	//  - "package package_name"
407	//  - "class package_name.class_name"
408	//  - "class package_name.class_name#method_name"
409	//
410	// If empty, all targets in the module will be run.
411	TestTargets []string `json:"testTargets,omitempty"`
412
413	// ForceSendFields is a list of field names (e.g. "AppApk") to
414	// unconditionally include in API requests. By default, fields with
415	// empty values are omitted from API requests. However, any non-pointer,
416	// non-interface field appearing in ForceSendFields will be sent to the
417	// server regardless of whether the field is empty or not. This may be
418	// used to include empty fields in Patch requests.
419	ForceSendFields []string `json:"-"`
420
421	// NullFields is a list of field names (e.g. "AppApk") to include in API
422	// requests with the JSON null value. By default, fields with empty
423	// values are omitted from API requests. However, any field with an
424	// empty value appearing in NullFields will be sent to the server as
425	// null. It is an error if a field in this list has a non-empty value.
426	// This may be used to include null fields in Patch requests.
427	NullFields []string `json:"-"`
428}
429
430func (s *AndroidInstrumentationTest) MarshalJSON() ([]byte, error) {
431	type NoMethod AndroidInstrumentationTest
432	raw := NoMethod(*s)
433	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
434}
435
436// AndroidMatrix: A set of Android device configuration permutations is
437// defined by the
438// the cross-product of the given axes. Internally, the given
439// AndroidMatrix
440// will be expanded into a set of AndroidDevices.
441//
442// Only supported permutations will be instantiated.  Invalid
443// permutations
444// (e.g., incompatible models/versions) are ignored.
445type AndroidMatrix struct {
446	// AndroidModelIds: Required. The ids of the set of Android device to be
447	// used.
448	// Use the TestEnvironmentDiscoveryService to get supported options.
449	AndroidModelIds []string `json:"androidModelIds,omitempty"`
450
451	// AndroidVersionIds: Required. The ids of the set of Android OS version
452	// to be used.
453	// Use the TestEnvironmentDiscoveryService to get supported options.
454	AndroidVersionIds []string `json:"androidVersionIds,omitempty"`
455
456	// Locales: Required. The set of locales the test device will enable for
457	// testing.
458	// Use the TestEnvironmentDiscoveryService to get supported options.
459	Locales []string `json:"locales,omitempty"`
460
461	// Orientations: Required. The set of orientations to test with.
462	// Use the TestEnvironmentDiscoveryService to get supported options.
463	Orientations []string `json:"orientations,omitempty"`
464
465	// ForceSendFields is a list of field names (e.g. "AndroidModelIds") to
466	// unconditionally include in API requests. By default, fields with
467	// empty values are omitted from API requests. However, any non-pointer,
468	// non-interface field appearing in ForceSendFields will be sent to the
469	// server regardless of whether the field is empty or not. This may be
470	// used to include empty fields in Patch requests.
471	ForceSendFields []string `json:"-"`
472
473	// NullFields is a list of field names (e.g. "AndroidModelIds") to
474	// include in API requests with the JSON null value. By default, fields
475	// with empty values are omitted from API requests. However, any field
476	// with an empty value appearing in NullFields will be sent to the
477	// server as null. It is an error if a field in this list has a
478	// non-empty value. This may be used to include null fields in Patch
479	// requests.
480	NullFields []string `json:"-"`
481}
482
483func (s *AndroidMatrix) MarshalJSON() ([]byte, error) {
484	type NoMethod AndroidMatrix
485	raw := NoMethod(*s)
486	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
487}
488
489// AndroidModel: A description of an Android device tests may be run on.
490type AndroidModel struct {
491	// Brand: The company that this device is branded with.
492	// Example: "Google", "Samsung".
493	Brand string `json:"brand,omitempty"`
494
495	// Codename: The name of the industrial design.
496	// This corresponds to android.os.Build.DEVICE.
497	Codename string `json:"codename,omitempty"`
498
499	// Form: Whether this device is virtual or physical.
500	//
501	// Possible values:
502	//   "DEVICE_FORM_UNSPECIFIED" - Do not use.  For proto versioning only.
503	//   "VIRTUAL" - A software stack that simulates the device.
504	//   "PHYSICAL" - Actual hardware.
505	Form string `json:"form,omitempty"`
506
507	// FormFactor: Whether this device is a phone, tablet, wearable, etc.
508	//
509	// Possible values:
510	//   "DEVICE_FORM_FACTOR_UNSPECIFIED" - Do not use. For proto versioning
511	// only.
512	//   "PHONE" - This device has the shape of a phone.
513	//   "TABLET" - This device has the shape of a tablet.
514	//   "WEARABLE" - This device has the shape of a watch or other
515	// wearable.
516	FormFactor string `json:"formFactor,omitempty"`
517
518	// Id: The unique opaque id for this model.
519	// Use this for invoking the TestExecutionService.
520	Id string `json:"id,omitempty"`
521
522	// LowFpsVideoRecording: True if and only if tests with this model are
523	// recorded by stitching
524	// together screenshots. See use_low_spec_video_recording in device
525	// config.
526	LowFpsVideoRecording bool `json:"lowFpsVideoRecording,omitempty"`
527
528	// Manufacturer: The manufacturer of this device.
529	Manufacturer string `json:"manufacturer,omitempty"`
530
531	// Name: The human-readable marketing name for this device
532	// model.
533	// Examples: "Nexus 5", "Galaxy S5".
534	Name string `json:"name,omitempty"`
535
536	// ScreenDensity: Screen density in DPI.
537	// This corresponds to ro.sf.lcd_density
538	ScreenDensity int64 `json:"screenDensity,omitempty"`
539
540	// ScreenX: Screen size in the horizontal (X) dimension measured in
541	// pixels.
542	ScreenX int64 `json:"screenX,omitempty"`
543
544	// ScreenY: Screen size in the vertical (Y) dimension measured in
545	// pixels.
546	ScreenY int64 `json:"screenY,omitempty"`
547
548	// SupportedAbis: The list of supported ABIs for this device.
549	// This corresponds to either android.os.Build.SUPPORTED_ABIS (for API
550	// level
551	// 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.
552	// The most preferred ABI is the first element in the list.
553	//
554	// Elements are optionally prefixed by "version_id:" (where version_id
555	// is
556	// the id of an AndroidVersion), denoting an ABI that is supported only
557	// on
558	// a particular version.
559	SupportedAbis []string `json:"supportedAbis,omitempty"`
560
561	// SupportedVersionIds: The set of Android versions this device
562	// supports.
563	SupportedVersionIds []string `json:"supportedVersionIds,omitempty"`
564
565	// Tags: Tags for this dimension.
566	// Examples: "default", "preview", "deprecated".
567	Tags []string `json:"tags,omitempty"`
568
569	// ForceSendFields is a list of field names (e.g. "Brand") to
570	// unconditionally include in API requests. By default, fields with
571	// empty values are omitted from API requests. However, any non-pointer,
572	// non-interface field appearing in ForceSendFields will be sent to the
573	// server regardless of whether the field is empty or not. This may be
574	// used to include empty fields in Patch requests.
575	ForceSendFields []string `json:"-"`
576
577	// NullFields is a list of field names (e.g. "Brand") to include in API
578	// requests with the JSON null value. By default, fields with empty
579	// values are omitted from API requests. However, any field with an
580	// empty value appearing in NullFields will be sent to the server as
581	// null. It is an error if a field in this list has a non-empty value.
582	// This may be used to include null fields in Patch requests.
583	NullFields []string `json:"-"`
584}
585
586func (s *AndroidModel) MarshalJSON() ([]byte, error) {
587	type NoMethod AndroidModel
588	raw := NoMethod(*s)
589	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
590}
591
592// AndroidRoboTest: A test of an android application that explores the
593// application on a virtual
594// or physical Android Device, finding culprits and crashes as it goes.
595type AndroidRoboTest struct {
596	// AppApk: The APK for the application under test.
597	AppApk *FileReference `json:"appApk,omitempty"`
598
599	// AppBundle: A multi-apk app bundle for the application under test.
600	AppBundle *AppBundle `json:"appBundle,omitempty"`
601
602	// AppInitialActivity: The initial activity that should be used to start
603	// the app.
604	AppInitialActivity string `json:"appInitialActivity,omitempty"`
605
606	// AppPackageId: The java package for the application under test.
607	// The default value is determined by examining the application's
608	// manifest.
609	AppPackageId string `json:"appPackageId,omitempty"`
610
611	// MaxDepth: The max depth of the traversal stack Robo can explore.
612	// Needs to be at least
613	// 2 to make Robo explore the app beyond the first activity.
614	// Default is 50.
615	MaxDepth int64 `json:"maxDepth,omitempty"`
616
617	// MaxSteps: The max number of steps Robo can execute.
618	// Default is no limit.
619	MaxSteps int64 `json:"maxSteps,omitempty"`
620
621	// RoboDirectives: A set of directives Robo should apply during the
622	// crawl.
623	// This allows users to customize the crawl. For example, the username
624	// and
625	// password for a test account can be provided.
626	RoboDirectives []*RoboDirective `json:"roboDirectives,omitempty"`
627
628	// RoboScript: A JSON file with a sequence of actions Robo should
629	// perform as a prologue
630	// for the crawl.
631	RoboScript *FileReference `json:"roboScript,omitempty"`
632
633	// StartingIntents: The intents used to launch the app for the crawl.
634	// If none are provided, then the main launcher activity is launched.
635	// If some are provided, then only those provided are launched (the
636	// main
637	// launcher activity must be provided explicitly).
638	StartingIntents []*RoboStartingIntent `json:"startingIntents,omitempty"`
639
640	// ForceSendFields is a list of field names (e.g. "AppApk") to
641	// unconditionally include in API requests. By default, fields with
642	// empty values are omitted from API requests. However, any non-pointer,
643	// non-interface field appearing in ForceSendFields will be sent to the
644	// server regardless of whether the field is empty or not. This may be
645	// used to include empty fields in Patch requests.
646	ForceSendFields []string `json:"-"`
647
648	// NullFields is a list of field names (e.g. "AppApk") to include in API
649	// requests with the JSON null value. By default, fields with empty
650	// values are omitted from API requests. However, any field with an
651	// empty value appearing in NullFields will be sent to the server as
652	// null. It is an error if a field in this list has a non-empty value.
653	// This may be used to include null fields in Patch requests.
654	NullFields []string `json:"-"`
655}
656
657func (s *AndroidRoboTest) MarshalJSON() ([]byte, error) {
658	type NoMethod AndroidRoboTest
659	raw := NoMethod(*s)
660	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
661}
662
663// AndroidRuntimeConfiguration: Android configuration that can be
664// selected at the time a test is run.
665type AndroidRuntimeConfiguration struct {
666	// Locales: The set of available locales.
667	Locales []*Locale `json:"locales,omitempty"`
668
669	// Orientations: The set of available orientations.
670	Orientations []*Orientation `json:"orientations,omitempty"`
671
672	// ForceSendFields is a list of field names (e.g. "Locales") to
673	// unconditionally include in API requests. By default, fields with
674	// empty values are omitted from API requests. However, any non-pointer,
675	// non-interface field appearing in ForceSendFields will be sent to the
676	// server regardless of whether the field is empty or not. This may be
677	// used to include empty fields in Patch requests.
678	ForceSendFields []string `json:"-"`
679
680	// NullFields is a list of field names (e.g. "Locales") to include in
681	// API requests with the JSON null value. By default, fields with empty
682	// values are omitted from API requests. However, any field with an
683	// empty value appearing in NullFields will be sent to the server as
684	// null. It is an error if a field in this list has a non-empty value.
685	// This may be used to include null fields in Patch requests.
686	NullFields []string `json:"-"`
687}
688
689func (s *AndroidRuntimeConfiguration) MarshalJSON() ([]byte, error) {
690	type NoMethod AndroidRuntimeConfiguration
691	raw := NoMethod(*s)
692	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
693}
694
695// AndroidTestLoop: A test of an Android Application with a Test
696// Loop.
697// The intent \<intent-name\> will be implicitly added, since Games is
698// the only
699// user of this api, for the time being.
700type AndroidTestLoop struct {
701	// AppApk: The APK for the application under test.
702	AppApk *FileReference `json:"appApk,omitempty"`
703
704	// AppBundle: A multi-apk app bundle for the application under test.
705	AppBundle *AppBundle `json:"appBundle,omitempty"`
706
707	// AppPackageId: The java package for the application under test.
708	// The default is determined by examining the application's manifest.
709	AppPackageId string `json:"appPackageId,omitempty"`
710
711	// ScenarioLabels: The list of scenario labels that should be run during
712	// the test.
713	// The scenario labels should map to labels defined in the
714	// application's
715	// manifest. For example, player_experience
716	// and
717	// com.google.test.loops.player_experience add all of the loops labeled
718	// in the
719	// manifest with the com.google.test.loops.player_experience name to
720	// the
721	// execution.
722	// Scenarios can also be specified in the scenarios field.
723	ScenarioLabels []string `json:"scenarioLabels,omitempty"`
724
725	// Scenarios: The list of scenarios that should be run during the
726	// test.
727	// The default is all test loops, derived from the
728	// application's
729	// manifest.
730	Scenarios []int64 `json:"scenarios,omitempty"`
731
732	// ForceSendFields is a list of field names (e.g. "AppApk") to
733	// unconditionally include in API requests. By default, fields with
734	// empty values are omitted from API requests. However, any non-pointer,
735	// non-interface field appearing in ForceSendFields will be sent to the
736	// server regardless of whether the field is empty or not. This may be
737	// used to include empty fields in Patch requests.
738	ForceSendFields []string `json:"-"`
739
740	// NullFields is a list of field names (e.g. "AppApk") to include in API
741	// requests with the JSON null value. By default, fields with empty
742	// values are omitted from API requests. However, any field with an
743	// empty value appearing in NullFields will be sent to the server as
744	// null. It is an error if a field in this list has a non-empty value.
745	// This may be used to include null fields in Patch requests.
746	NullFields []string `json:"-"`
747}
748
749func (s *AndroidTestLoop) MarshalJSON() ([]byte, error) {
750	type NoMethod AndroidTestLoop
751	raw := NoMethod(*s)
752	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
753}
754
755// AndroidVersion: A version of the Android OS.
756type AndroidVersion struct {
757	// ApiLevel: The API level for this Android version.
758	// Examples: 18, 19.
759	ApiLevel int64 `json:"apiLevel,omitempty"`
760
761	// CodeName: The code name for this Android version.
762	// Examples: "JellyBean", "KitKat".
763	CodeName string `json:"codeName,omitempty"`
764
765	// Distribution: Market share for this version.
766	Distribution *Distribution `json:"distribution,omitempty"`
767
768	// Id: An opaque id for this Android version.
769	// Use this id to invoke the TestExecutionService.
770	Id string `json:"id,omitempty"`
771
772	// ReleaseDate: The date this Android version became available in the
773	// market.
774	ReleaseDate *Date `json:"releaseDate,omitempty"`
775
776	// Tags: Tags for this dimension.
777	// Examples: "default", "preview", "deprecated".
778	Tags []string `json:"tags,omitempty"`
779
780	// VersionString: A string representing this version of the Android
781	// OS.
782	// Examples: "4.3", "4.4".
783	VersionString string `json:"versionString,omitempty"`
784
785	// ForceSendFields is a list of field names (e.g. "ApiLevel") to
786	// unconditionally include in API requests. By default, fields with
787	// empty values are omitted from API requests. However, any non-pointer,
788	// non-interface field appearing in ForceSendFields will be sent to the
789	// server regardless of whether the field is empty or not. This may be
790	// used to include empty fields in Patch requests.
791	ForceSendFields []string `json:"-"`
792
793	// NullFields is a list of field names (e.g. "ApiLevel") to include in
794	// API requests with the JSON null value. By default, fields with empty
795	// values are omitted from API requests. However, any field with an
796	// empty value appearing in NullFields will be sent to the server as
797	// null. It is an error if a field in this list has a non-empty value.
798	// This may be used to include null fields in Patch requests.
799	NullFields []string `json:"-"`
800}
801
802func (s *AndroidVersion) MarshalJSON() ([]byte, error) {
803	type NoMethod AndroidVersion
804	raw := NoMethod(*s)
805	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
806}
807
808// Apk: An Android package file to install.
809type Apk struct {
810	// Location: The path to an APK to be installed on the device before the
811	// test begins.
812	Location *FileReference `json:"location,omitempty"`
813
814	// PackageName: The java package for the APK to be installed.
815	// Value is determined by examining the application's manifest.
816	PackageName string `json:"packageName,omitempty"`
817
818	// ForceSendFields is a list of field names (e.g. "Location") to
819	// unconditionally include in API requests. By default, fields with
820	// empty values are omitted from API requests. However, any non-pointer,
821	// non-interface field appearing in ForceSendFields will be sent to the
822	// server regardless of whether the field is empty or not. This may be
823	// used to include empty fields in Patch requests.
824	ForceSendFields []string `json:"-"`
825
826	// NullFields is a list of field names (e.g. "Location") to include in
827	// API requests with the JSON null value. By default, fields with empty
828	// values are omitted from API requests. However, any field with an
829	// empty value appearing in NullFields will be sent to the server as
830	// null. It is an error if a field in this list has a non-empty value.
831	// This may be used to include null fields in Patch requests.
832	NullFields []string `json:"-"`
833}
834
835func (s *Apk) MarshalJSON() ([]byte, error) {
836	type NoMethod Apk
837	raw := NoMethod(*s)
838	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
839}
840
841// ApkDetail: Android application details based on application manifest
842// and apk archive
843// contents.
844type ApkDetail struct {
845	ApkManifest *ApkManifest `json:"apkManifest,omitempty"`
846
847	// ForceSendFields is a list of field names (e.g. "ApkManifest") to
848	// unconditionally include in API requests. By default, fields with
849	// empty values are omitted from API requests. However, any non-pointer,
850	// non-interface field appearing in ForceSendFields will be sent to the
851	// server regardless of whether the field is empty or not. This may be
852	// used to include empty fields in Patch requests.
853	ForceSendFields []string `json:"-"`
854
855	// NullFields is a list of field names (e.g. "ApkManifest") to include
856	// in API requests with the JSON null value. By default, fields with
857	// empty values are omitted from API requests. However, any field with
858	// an empty value appearing in NullFields will be sent to the server as
859	// null. It is an error if a field in this list has a non-empty value.
860	// This may be used to include null fields in Patch requests.
861	NullFields []string `json:"-"`
862}
863
864func (s *ApkDetail) MarshalJSON() ([]byte, error) {
865	type NoMethod ApkDetail
866	raw := NoMethod(*s)
867	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
868}
869
870// ApkManifest: An Android app manifest.
871// See
872// http://developer.android.com/guide/topics/manifest/manifest-intro.
873// html
874type ApkManifest struct {
875	// ApplicationLabel: User-readable name for the application.
876	ApplicationLabel string `json:"applicationLabel,omitempty"`
877
878	IntentFilters []*IntentFilter `json:"intentFilters,omitempty"`
879
880	// MaxSdkVersion: Maximum API level on which the application is designed
881	// to run.
882	MaxSdkVersion int64 `json:"maxSdkVersion,omitempty"`
883
884	// MinSdkVersion: Minimum API level required for the application to run.
885	MinSdkVersion int64 `json:"minSdkVersion,omitempty"`
886
887	// PackageName: Full Java-style package name for this application,
888	// e.g.
889	// "com.example.foo".
890	PackageName string `json:"packageName,omitempty"`
891
892	// TargetSdkVersion: Specifies the API Level on which the application is
893	// designed to run.
894	TargetSdkVersion int64 `json:"targetSdkVersion,omitempty"`
895
896	// ForceSendFields is a list of field names (e.g. "ApplicationLabel") to
897	// unconditionally include in API requests. By default, fields with
898	// empty values are omitted from API requests. However, any non-pointer,
899	// non-interface field appearing in ForceSendFields will be sent to the
900	// server regardless of whether the field is empty or not. This may be
901	// used to include empty fields in Patch requests.
902	ForceSendFields []string `json:"-"`
903
904	// NullFields is a list of field names (e.g. "ApplicationLabel") to
905	// include in API requests with the JSON null value. By default, fields
906	// with empty values are omitted from API requests. However, any field
907	// with an empty value appearing in NullFields will be sent to the
908	// server as null. It is an error if a field in this list has a
909	// non-empty value. This may be used to include null fields in Patch
910	// requests.
911	NullFields []string `json:"-"`
912}
913
914func (s *ApkManifest) MarshalJSON() ([]byte, error) {
915	type NoMethod ApkManifest
916	raw := NoMethod(*s)
917	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
918}
919
920// AppBundle: An Android App Bundle file format, containing a
921// BundleConfig.pb file,
922// a base module directory, zero or more dynamic feature module
923// directories.
924// <p>See https://developer.android.com/guide/app-bundle/build for
925// guidance on
926// building App Bundles.
927type AppBundle struct {
928	// BundleLocation: .aab file representing the app bundle under test.
929	BundleLocation *FileReference `json:"bundleLocation,omitempty"`
930
931	// ForceSendFields is a list of field names (e.g. "BundleLocation") to
932	// unconditionally include in API requests. By default, fields with
933	// empty values are omitted from API requests. However, any non-pointer,
934	// non-interface field appearing in ForceSendFields will be sent to the
935	// server regardless of whether the field is empty or not. This may be
936	// used to include empty fields in Patch requests.
937	ForceSendFields []string `json:"-"`
938
939	// NullFields is a list of field names (e.g. "BundleLocation") to
940	// include in API requests with the JSON null value. By default, fields
941	// with empty values are omitted from API requests. However, any field
942	// with an empty value appearing in NullFields will be sent to the
943	// server as null. It is an error if a field in this list has a
944	// non-empty value. This may be used to include null fields in Patch
945	// requests.
946	NullFields []string `json:"-"`
947}
948
949func (s *AppBundle) MarshalJSON() ([]byte, error) {
950	type NoMethod AppBundle
951	raw := NoMethod(*s)
952	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
953}
954
955// CancelTestMatrixResponse: Response containing the current state of
956// the specified test matrix.
957type CancelTestMatrixResponse struct {
958	// TestState: The current rolled-up state of the test matrix.
959	// If this state is already final, then the cancelation request
960	// will
961	// have no effect.
962	//
963	// Possible values:
964	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
965	//   "VALIDATING" - The execution or matrix is being validated.
966	//   "PENDING" - The execution or matrix is waiting for resources to
967	// become available.
968	//   "RUNNING" - The execution is currently being processed.
969	//
970	// Can only be set on an execution.
971	//   "FINISHED" - The execution or matrix has terminated normally.
972	//
973	// On a matrix this means that the matrix level processing completed
974	// normally,
975	// but individual executions may be in an ERROR state.
976	//   "ERROR" - The execution or matrix has stopped because it
977	// encountered an
978	// infrastructure failure.
979	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
980	// corresponds to a unsupported
981	// environment.
982	//
983	// Can only be set on an execution.
984	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
985	// provided inputs are incompatible with
986	// the requested environment.
987	//
988	// Example: requested AndroidVersion is lower than APK's
989	// minSdkVersion
990	//
991	// Can only be set on an execution.
992	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
993	// provided inputs are incompatible with
994	// the requested architecture.
995	//
996	// Example: requested device does not support running the native code
997	// in
998	// the supplied APK
999	//
1000	// Can only be set on an execution.
1001	//   "CANCELLED" - The user cancelled the execution.
1002	//
1003	// Can only be set on an execution.
1004	//   "INVALID" - The execution or matrix was not run because the
1005	// provided inputs are not
1006	// valid.
1007	//
1008	// Examples: input file is not of the expected type, is
1009	// malformed/corrupt, or
1010	// was flagged as malware
1011	TestState string `json:"testState,omitempty"`
1012
1013	// ServerResponse contains the HTTP response code and headers from the
1014	// server.
1015	googleapi.ServerResponse `json:"-"`
1016
1017	// ForceSendFields is a list of field names (e.g. "TestState") to
1018	// unconditionally include in API requests. By default, fields with
1019	// empty values are omitted from API requests. However, any non-pointer,
1020	// non-interface field appearing in ForceSendFields will be sent to the
1021	// server regardless of whether the field is empty or not. This may be
1022	// used to include empty fields in Patch requests.
1023	ForceSendFields []string `json:"-"`
1024
1025	// NullFields is a list of field names (e.g. "TestState") to include in
1026	// API requests with the JSON null value. By default, fields with empty
1027	// values are omitted from API requests. However, any field with an
1028	// empty value appearing in NullFields will be sent to the server as
1029	// null. It is an error if a field in this list has a non-empty value.
1030	// This may be used to include null fields in Patch requests.
1031	NullFields []string `json:"-"`
1032}
1033
1034func (s *CancelTestMatrixResponse) MarshalJSON() ([]byte, error) {
1035	type NoMethod CancelTestMatrixResponse
1036	raw := NoMethod(*s)
1037	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1038}
1039
1040// ClientInfo: Information about the client which invoked the test.
1041type ClientInfo struct {
1042	// ClientInfoDetails: The list of detailed information about client.
1043	ClientInfoDetails []*ClientInfoDetail `json:"clientInfoDetails,omitempty"`
1044
1045	// Name: Required. Client name, such as gcloud.
1046	Name string `json:"name,omitempty"`
1047
1048	// ForceSendFields is a list of field names (e.g. "ClientInfoDetails")
1049	// to unconditionally include in API requests. By default, fields with
1050	// empty values are omitted from API requests. However, any non-pointer,
1051	// non-interface field appearing in ForceSendFields will be sent to the
1052	// server regardless of whether the field is empty or not. This may be
1053	// used to include empty fields in Patch requests.
1054	ForceSendFields []string `json:"-"`
1055
1056	// NullFields is a list of field names (e.g. "ClientInfoDetails") to
1057	// include in API requests with the JSON null value. By default, fields
1058	// with empty values are omitted from API requests. However, any field
1059	// with an empty value appearing in NullFields will be sent to the
1060	// server as null. It is an error if a field in this list has a
1061	// non-empty value. This may be used to include null fields in Patch
1062	// requests.
1063	NullFields []string `json:"-"`
1064}
1065
1066func (s *ClientInfo) MarshalJSON() ([]byte, error) {
1067	type NoMethod ClientInfo
1068	raw := NoMethod(*s)
1069	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1070}
1071
1072// ClientInfoDetail: Key-value pair of detailed information about the
1073// client which invoked the
1074// test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.
1075type ClientInfoDetail struct {
1076	// Key: Required. The key of detailed client information.
1077	Key string `json:"key,omitempty"`
1078
1079	// Value: Required. The value of detailed client information.
1080	Value string `json:"value,omitempty"`
1081
1082	// ForceSendFields is a list of field names (e.g. "Key") to
1083	// unconditionally include in API requests. By default, fields with
1084	// empty values are omitted from API requests. However, any non-pointer,
1085	// non-interface field appearing in ForceSendFields will be sent to the
1086	// server regardless of whether the field is empty or not. This may be
1087	// used to include empty fields in Patch requests.
1088	ForceSendFields []string `json:"-"`
1089
1090	// NullFields is a list of field names (e.g. "Key") to include in API
1091	// requests with the JSON null value. By default, fields with empty
1092	// values are omitted from API requests. However, any field with an
1093	// empty value appearing in NullFields will be sent to the server as
1094	// null. It is an error if a field in this list has a non-empty value.
1095	// This may be used to include null fields in Patch requests.
1096	NullFields []string `json:"-"`
1097}
1098
1099func (s *ClientInfoDetail) MarshalJSON() ([]byte, error) {
1100	type NoMethod ClientInfoDetail
1101	raw := NoMethod(*s)
1102	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1103}
1104
1105// Date: Represents a whole or partial calendar date, e.g. a birthday.
1106// The time of day
1107// and time zone are either specified elsewhere or are not significant.
1108// The date
1109// is relative to the Proleptic Gregorian Calendar. This can
1110// represent:
1111//
1112// * A full date, with non-zero year, month and day values
1113// * A month and day value, with a zero year, e.g. an anniversary
1114// * A year on its own, with zero month and day values
1115// * A year and month value, with a zero day, e.g. a credit card
1116// expiration date
1117//
1118// Related types are google.type.TimeOfDay and
1119// `google.protobuf.Timestamp`.
1120type Date struct {
1121	// Day: Day of month. Must be from 1 to 31 and valid for the year and
1122	// month, or 0
1123	// if specifying a year by itself or a year and month where the day is
1124	// not
1125	// significant.
1126	Day int64 `json:"day,omitempty"`
1127
1128	// Month: Month of year. Must be from 1 to 12, or 0 if specifying a year
1129	// without a
1130	// month and day.
1131	Month int64 `json:"month,omitempty"`
1132
1133	// Year: Year of date. Must be from 1 to 9999, or 0 if specifying a date
1134	// without
1135	// a year.
1136	Year int64 `json:"year,omitempty"`
1137
1138	// ForceSendFields is a list of field names (e.g. "Day") to
1139	// unconditionally include in API requests. By default, fields with
1140	// empty values are omitted from API requests. However, any non-pointer,
1141	// non-interface field appearing in ForceSendFields will be sent to the
1142	// server regardless of whether the field is empty or not. This may be
1143	// used to include empty fields in Patch requests.
1144	ForceSendFields []string `json:"-"`
1145
1146	// NullFields is a list of field names (e.g. "Day") to include in API
1147	// requests with the JSON null value. By default, fields with empty
1148	// values are omitted from API requests. However, any field with an
1149	// empty value appearing in NullFields will be sent to the server as
1150	// null. It is an error if a field in this list has a non-empty value.
1151	// This may be used to include null fields in Patch requests.
1152	NullFields []string `json:"-"`
1153}
1154
1155func (s *Date) MarshalJSON() ([]byte, error) {
1156	type NoMethod Date
1157	raw := NoMethod(*s)
1158	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1159}
1160
1161// DeviceFile: A single device file description.
1162type DeviceFile struct {
1163	// ObbFile: A reference to an opaque binary blob file.
1164	ObbFile *ObbFile `json:"obbFile,omitempty"`
1165
1166	// RegularFile: A reference to a regular file.
1167	RegularFile *RegularFile `json:"regularFile,omitempty"`
1168
1169	// ForceSendFields is a list of field names (e.g. "ObbFile") to
1170	// unconditionally include in API requests. By default, fields with
1171	// empty values are omitted from API requests. However, any non-pointer,
1172	// non-interface field appearing in ForceSendFields will be sent to the
1173	// server regardless of whether the field is empty or not. This may be
1174	// used to include empty fields in Patch requests.
1175	ForceSendFields []string `json:"-"`
1176
1177	// NullFields is a list of field names (e.g. "ObbFile") to include in
1178	// API requests with the JSON null value. By default, fields with empty
1179	// values are omitted from API requests. However, any field with an
1180	// empty value appearing in NullFields will be sent to the server as
1181	// null. It is an error if a field in this list has a non-empty value.
1182	// This may be used to include null fields in Patch requests.
1183	NullFields []string `json:"-"`
1184}
1185
1186func (s *DeviceFile) MarshalJSON() ([]byte, error) {
1187	type NoMethod DeviceFile
1188	raw := NoMethod(*s)
1189	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1190}
1191
1192// Distribution: Data about the relative number of devices running
1193// a
1194// given configuration of the Android platform.
1195type Distribution struct {
1196	// MarketShare: Output only. The estimated fraction (0-1) of the total
1197	// market with this
1198	// configuration.
1199	MarketShare float64 `json:"marketShare,omitempty"`
1200
1201	// MeasurementTime: Output only. The time this distribution was
1202	// measured.
1203	MeasurementTime string `json:"measurementTime,omitempty"`
1204
1205	// ForceSendFields is a list of field names (e.g. "MarketShare") to
1206	// unconditionally include in API requests. By default, fields with
1207	// empty values are omitted from API requests. However, any non-pointer,
1208	// non-interface field appearing in ForceSendFields will be sent to the
1209	// server regardless of whether the field is empty or not. This may be
1210	// used to include empty fields in Patch requests.
1211	ForceSendFields []string `json:"-"`
1212
1213	// NullFields is a list of field names (e.g. "MarketShare") to include
1214	// in API requests with the JSON null value. By default, fields with
1215	// empty values are omitted from API requests. However, any field with
1216	// an empty value appearing in NullFields will be sent to the server as
1217	// null. It is an error if a field in this list has a non-empty value.
1218	// This may be used to include null fields in Patch requests.
1219	NullFields []string `json:"-"`
1220}
1221
1222func (s *Distribution) MarshalJSON() ([]byte, error) {
1223	type NoMethod Distribution
1224	raw := NoMethod(*s)
1225	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1226}
1227
1228func (s *Distribution) UnmarshalJSON(data []byte) error {
1229	type NoMethod Distribution
1230	var s1 struct {
1231		MarketShare gensupport.JSONFloat64 `json:"marketShare"`
1232		*NoMethod
1233	}
1234	s1.NoMethod = (*NoMethod)(s)
1235	if err := json.Unmarshal(data, &s1); err != nil {
1236		return err
1237	}
1238	s.MarketShare = float64(s1.MarketShare)
1239	return nil
1240}
1241
1242// Environment: The environment in which the test is run.
1243type Environment struct {
1244	// AndroidDevice: An Android device which must be used with an Android
1245	// test.
1246	AndroidDevice *AndroidDevice `json:"androidDevice,omitempty"`
1247
1248	// IosDevice: An iOS device which must be used with an iOS test.
1249	IosDevice *IosDevice `json:"iosDevice,omitempty"`
1250
1251	// ForceSendFields is a list of field names (e.g. "AndroidDevice") to
1252	// unconditionally include in API requests. By default, fields with
1253	// empty values are omitted from API requests. However, any non-pointer,
1254	// non-interface field appearing in ForceSendFields will be sent to the
1255	// server regardless of whether the field is empty or not. This may be
1256	// used to include empty fields in Patch requests.
1257	ForceSendFields []string `json:"-"`
1258
1259	// NullFields is a list of field names (e.g. "AndroidDevice") to include
1260	// in API requests with the JSON null value. By default, fields with
1261	// empty values are omitted from API requests. However, any field with
1262	// an empty value appearing in NullFields will be sent to the server as
1263	// null. It is an error if a field in this list has a non-empty value.
1264	// This may be used to include null fields in Patch requests.
1265	NullFields []string `json:"-"`
1266}
1267
1268func (s *Environment) MarshalJSON() ([]byte, error) {
1269	type NoMethod Environment
1270	raw := NoMethod(*s)
1271	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1272}
1273
1274// EnvironmentMatrix: The matrix of environments in which the test is to
1275// be executed.
1276type EnvironmentMatrix struct {
1277	// AndroidDeviceList: A list of Android devices; the test will be run
1278	// only on the specified
1279	// devices.
1280	AndroidDeviceList *AndroidDeviceList `json:"androidDeviceList,omitempty"`
1281
1282	// AndroidMatrix: A matrix of Android devices.
1283	AndroidMatrix *AndroidMatrix `json:"androidMatrix,omitempty"`
1284
1285	// IosDeviceList: A list of iOS devices.
1286	IosDeviceList *IosDeviceList `json:"iosDeviceList,omitempty"`
1287
1288	// ForceSendFields is a list of field names (e.g. "AndroidDeviceList")
1289	// to unconditionally include in API requests. By default, fields with
1290	// empty values are omitted from API requests. However, any non-pointer,
1291	// non-interface field appearing in ForceSendFields will be sent to the
1292	// server regardless of whether the field is empty or not. This may be
1293	// used to include empty fields in Patch requests.
1294	ForceSendFields []string `json:"-"`
1295
1296	// NullFields is a list of field names (e.g. "AndroidDeviceList") to
1297	// include in API requests with the JSON null value. By default, fields
1298	// with empty values are omitted from API requests. However, any field
1299	// with an empty value appearing in NullFields will be sent to the
1300	// server as null. It is an error if a field in this list has a
1301	// non-empty value. This may be used to include null fields in Patch
1302	// requests.
1303	NullFields []string `json:"-"`
1304}
1305
1306func (s *EnvironmentMatrix) MarshalJSON() ([]byte, error) {
1307	type NoMethod EnvironmentMatrix
1308	raw := NoMethod(*s)
1309	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1310}
1311
1312// EnvironmentVariable: A key-value pair passed as an environment
1313// variable to the test.
1314type EnvironmentVariable struct {
1315	// Key: Key for the environment variable.
1316	Key string `json:"key,omitempty"`
1317
1318	// Value: Value for the environment variable.
1319	Value string `json:"value,omitempty"`
1320
1321	// ForceSendFields is a list of field names (e.g. "Key") to
1322	// unconditionally include in API requests. By default, fields with
1323	// empty values are omitted from API requests. However, any non-pointer,
1324	// non-interface field appearing in ForceSendFields will be sent to the
1325	// server regardless of whether the field is empty or not. This may be
1326	// used to include empty fields in Patch requests.
1327	ForceSendFields []string `json:"-"`
1328
1329	// NullFields is a list of field names (e.g. "Key") to include in API
1330	// requests with the JSON null value. By default, fields with empty
1331	// values are omitted from API requests. However, any field with an
1332	// empty value appearing in NullFields will be sent to the server as
1333	// null. It is an error if a field in this list has a non-empty value.
1334	// This may be used to include null fields in Patch requests.
1335	NullFields []string `json:"-"`
1336}
1337
1338func (s *EnvironmentVariable) MarshalJSON() ([]byte, error) {
1339	type NoMethod EnvironmentVariable
1340	raw := NoMethod(*s)
1341	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1342}
1343
1344// FileReference: A reference to a file, used for user inputs.
1345type FileReference struct {
1346	// GcsPath: A path to a file in Google Cloud Storage.
1347	// Example: gs://build-app-1414623860166/app-debug-unaligned.apk
1348	GcsPath string `json:"gcsPath,omitempty"`
1349
1350	// ForceSendFields is a list of field names (e.g. "GcsPath") to
1351	// unconditionally include in API requests. By default, fields with
1352	// empty values are omitted from API requests. However, any non-pointer,
1353	// non-interface field appearing in ForceSendFields will be sent to the
1354	// server regardless of whether the field is empty or not. This may be
1355	// used to include empty fields in Patch requests.
1356	ForceSendFields []string `json:"-"`
1357
1358	// NullFields is a list of field names (e.g. "GcsPath") to include in
1359	// API requests with the JSON null value. By default, fields with empty
1360	// values are omitted from API requests. However, any field with an
1361	// empty value appearing in NullFields will be sent to the server as
1362	// null. It is an error if a field in this list has a non-empty value.
1363	// This may be used to include null fields in Patch requests.
1364	NullFields []string `json:"-"`
1365}
1366
1367func (s *FileReference) MarshalJSON() ([]byte, error) {
1368	type NoMethod FileReference
1369	raw := NoMethod(*s)
1370	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1371}
1372
1373// GetApkDetailsResponse: Response containing the details of the
1374// specified Android application APK.
1375type GetApkDetailsResponse struct {
1376	// ApkDetail: Details of the Android APK.
1377	ApkDetail *ApkDetail `json:"apkDetail,omitempty"`
1378
1379	// ServerResponse contains the HTTP response code and headers from the
1380	// server.
1381	googleapi.ServerResponse `json:"-"`
1382
1383	// ForceSendFields is a list of field names (e.g. "ApkDetail") to
1384	// unconditionally include in API requests. By default, fields with
1385	// empty values are omitted from API requests. However, any non-pointer,
1386	// non-interface field appearing in ForceSendFields will be sent to the
1387	// server regardless of whether the field is empty or not. This may be
1388	// used to include empty fields in Patch requests.
1389	ForceSendFields []string `json:"-"`
1390
1391	// NullFields is a list of field names (e.g. "ApkDetail") to include in
1392	// API requests with the JSON null value. By default, fields with empty
1393	// values are omitted from API requests. However, any field with an
1394	// empty value appearing in NullFields will be sent to the server as
1395	// null. It is an error if a field in this list has a non-empty value.
1396	// This may be used to include null fields in Patch requests.
1397	NullFields []string `json:"-"`
1398}
1399
1400func (s *GetApkDetailsResponse) MarshalJSON() ([]byte, error) {
1401	type NoMethod GetApkDetailsResponse
1402	raw := NoMethod(*s)
1403	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1404}
1405
1406// GoogleAuto: Enables automatic Google account login.
1407// If set, the service automatically generates a Google test account and
1408// adds
1409// it to the device, before executing the test. Note that test accounts
1410// might be
1411// reused.
1412// Many applications show their full set of functionalities when an
1413// account is
1414// present on the device. Logging into the device with these generated
1415// accounts
1416// allows testing more functionalities.
1417type GoogleAuto struct {
1418}
1419
1420// GoogleCloudStorage: A storage location within Google cloud storage
1421// (GCS).
1422type GoogleCloudStorage struct {
1423	// GcsPath: Required. The path to a directory in GCS that
1424	// will
1425	// eventually contain the results for this test.
1426	// The requesting user must have write access on the bucket in the
1427	// supplied
1428	// path.
1429	GcsPath string `json:"gcsPath,omitempty"`
1430
1431	// ForceSendFields is a list of field names (e.g. "GcsPath") to
1432	// unconditionally include in API requests. By default, fields with
1433	// empty values are omitted from API requests. However, any non-pointer,
1434	// non-interface field appearing in ForceSendFields will be sent to the
1435	// server regardless of whether the field is empty or not. This may be
1436	// used to include empty fields in Patch requests.
1437	ForceSendFields []string `json:"-"`
1438
1439	// NullFields is a list of field names (e.g. "GcsPath") to include in
1440	// API requests with the JSON null value. By default, fields with empty
1441	// values are omitted from API requests. However, any field with an
1442	// empty value appearing in NullFields will be sent to the server as
1443	// null. It is an error if a field in this list has a non-empty value.
1444	// This may be used to include null fields in Patch requests.
1445	NullFields []string `json:"-"`
1446}
1447
1448func (s *GoogleCloudStorage) MarshalJSON() ([]byte, error) {
1449	type NoMethod GoogleCloudStorage
1450	raw := NoMethod(*s)
1451	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1452}
1453
1454// IntentFilter: The <intent-filter> section of an <activity>
1455// tag.
1456// https://developer.android.com/guide/topics/manifest/intent-filter
1457// -element.html
1458type IntentFilter struct {
1459	// ActionNames: The android:name value of the <action> tag.
1460	ActionNames []string `json:"actionNames,omitempty"`
1461
1462	// CategoryNames: The android:name value of the <category> tag.
1463	CategoryNames []string `json:"categoryNames,omitempty"`
1464
1465	// MimeType: The android:mimeType value of the <data> tag.
1466	MimeType string `json:"mimeType,omitempty"`
1467
1468	// ForceSendFields is a list of field names (e.g. "ActionNames") to
1469	// unconditionally include in API requests. By default, fields with
1470	// empty values are omitted from API requests. However, any non-pointer,
1471	// non-interface field appearing in ForceSendFields will be sent to the
1472	// server regardless of whether the field is empty or not. This may be
1473	// used to include empty fields in Patch requests.
1474	ForceSendFields []string `json:"-"`
1475
1476	// NullFields is a list of field names (e.g. "ActionNames") to include
1477	// in API requests with the JSON null value. By default, fields with
1478	// empty values are omitted from API requests. However, any field with
1479	// an empty value appearing in NullFields will be sent to the server as
1480	// null. It is an error if a field in this list has a non-empty value.
1481	// This may be used to include null fields in Patch requests.
1482	NullFields []string `json:"-"`
1483}
1484
1485func (s *IntentFilter) MarshalJSON() ([]byte, error) {
1486	type NoMethod IntentFilter
1487	raw := NoMethod(*s)
1488	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1489}
1490
1491// IosDevice: A single iOS device.
1492type IosDevice struct {
1493	// IosModelId: Required. The id of the iOS device to be used.
1494	// Use the TestEnvironmentDiscoveryService to get supported options.
1495	IosModelId string `json:"iosModelId,omitempty"`
1496
1497	// IosVersionId: Required. The id of the iOS major software version to
1498	// be used.
1499	// Use the TestEnvironmentDiscoveryService to get supported options.
1500	IosVersionId string `json:"iosVersionId,omitempty"`
1501
1502	// Locale: Required. The locale the test device used for testing.
1503	// Use the TestEnvironmentDiscoveryService to get supported options.
1504	Locale string `json:"locale,omitempty"`
1505
1506	// Orientation: Required. How the device is oriented during the
1507	// test.
1508	// Use the TestEnvironmentDiscoveryService to get supported options.
1509	Orientation string `json:"orientation,omitempty"`
1510
1511	// ForceSendFields is a list of field names (e.g. "IosModelId") to
1512	// unconditionally include in API requests. By default, fields with
1513	// empty values are omitted from API requests. However, any non-pointer,
1514	// non-interface field appearing in ForceSendFields will be sent to the
1515	// server regardless of whether the field is empty or not. This may be
1516	// used to include empty fields in Patch requests.
1517	ForceSendFields []string `json:"-"`
1518
1519	// NullFields is a list of field names (e.g. "IosModelId") to include in
1520	// API requests with the JSON null value. By default, fields with empty
1521	// values are omitted from API requests. However, any field with an
1522	// empty value appearing in NullFields will be sent to the server as
1523	// null. It is an error if a field in this list has a non-empty value.
1524	// This may be used to include null fields in Patch requests.
1525	NullFields []string `json:"-"`
1526}
1527
1528func (s *IosDevice) MarshalJSON() ([]byte, error) {
1529	type NoMethod IosDevice
1530	raw := NoMethod(*s)
1531	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1532}
1533
1534// IosDeviceCatalog: The currently supported iOS devices.
1535type IosDeviceCatalog struct {
1536	// Models: The set of supported iOS device models.
1537	Models []*IosModel `json:"models,omitempty"`
1538
1539	// RuntimeConfiguration: The set of supported runtime configurations.
1540	RuntimeConfiguration *IosRuntimeConfiguration `json:"runtimeConfiguration,omitempty"`
1541
1542	// Versions: The set of supported iOS software versions.
1543	Versions []*IosVersion `json:"versions,omitempty"`
1544
1545	// XcodeVersions: The set of supported Xcode versions.
1546	XcodeVersions []*XcodeVersion `json:"xcodeVersions,omitempty"`
1547
1548	// ForceSendFields is a list of field names (e.g. "Models") to
1549	// unconditionally include in API requests. By default, fields with
1550	// empty values are omitted from API requests. However, any non-pointer,
1551	// non-interface field appearing in ForceSendFields will be sent to the
1552	// server regardless of whether the field is empty or not. This may be
1553	// used to include empty fields in Patch requests.
1554	ForceSendFields []string `json:"-"`
1555
1556	// NullFields is a list of field names (e.g. "Models") to include in API
1557	// requests with the JSON null value. By default, fields with empty
1558	// values are omitted from API requests. However, any field with an
1559	// empty value appearing in NullFields will be sent to the server as
1560	// null. It is an error if a field in this list has a non-empty value.
1561	// This may be used to include null fields in Patch requests.
1562	NullFields []string `json:"-"`
1563}
1564
1565func (s *IosDeviceCatalog) MarshalJSON() ([]byte, error) {
1566	type NoMethod IosDeviceCatalog
1567	raw := NoMethod(*s)
1568	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1569}
1570
1571// IosDeviceList: A list of iOS device configurations in which the test
1572// is to be executed.
1573type IosDeviceList struct {
1574	// IosDevices: Required. A list of iOS devices.
1575	IosDevices []*IosDevice `json:"iosDevices,omitempty"`
1576
1577	// ForceSendFields is a list of field names (e.g. "IosDevices") to
1578	// unconditionally include in API requests. By default, fields with
1579	// empty values are omitted from API requests. However, any non-pointer,
1580	// non-interface field appearing in ForceSendFields will be sent to the
1581	// server regardless of whether the field is empty or not. This may be
1582	// used to include empty fields in Patch requests.
1583	ForceSendFields []string `json:"-"`
1584
1585	// NullFields is a list of field names (e.g. "IosDevices") to include in
1586	// API requests with the JSON null value. By default, fields with empty
1587	// values are omitted from API requests. However, any field with an
1588	// empty value appearing in NullFields will be sent to the server as
1589	// null. It is an error if a field in this list has a non-empty value.
1590	// This may be used to include null fields in Patch requests.
1591	NullFields []string `json:"-"`
1592}
1593
1594func (s *IosDeviceList) MarshalJSON() ([]byte, error) {
1595	type NoMethod IosDeviceList
1596	raw := NoMethod(*s)
1597	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1598}
1599
1600// IosModel: A description of an iOS device tests may be run on.
1601// Next tag: 11
1602type IosModel struct {
1603	// DeviceCapabilities: Device capabilities.
1604	// Copied
1605	// from
1606	// https://developer.apple.com/library/archive/documentation/DeviceI
1607	// nformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/
1608	// DeviceCompatibilityMatrix.html
1609	DeviceCapabilities []string `json:"deviceCapabilities,omitempty"`
1610
1611	// FormFactor: Whether this device is a phone, tablet, wearable, etc.
1612	//
1613	// Possible values:
1614	//   "DEVICE_FORM_FACTOR_UNSPECIFIED" - Do not use. For proto versioning
1615	// only.
1616	//   "PHONE" - This device has the shape of a phone.
1617	//   "TABLET" - This device has the shape of a tablet.
1618	//   "WEARABLE" - This device has the shape of a watch or other
1619	// wearable.
1620	FormFactor string `json:"formFactor,omitempty"`
1621
1622	// Id: The unique opaque id for this model.
1623	// Use this for invoking the TestExecutionService.
1624	Id string `json:"id,omitempty"`
1625
1626	// Name: The human-readable name for this device model.
1627	// Examples: "iPhone 4s", "iPad Mini 2".
1628	Name string `json:"name,omitempty"`
1629
1630	// ScreenDensity: Screen density in DPI.
1631	ScreenDensity int64 `json:"screenDensity,omitempty"`
1632
1633	// ScreenX: Screen size in the horizontal (X) dimension measured in
1634	// pixels.
1635	ScreenX int64 `json:"screenX,omitempty"`
1636
1637	// ScreenY: Screen size in the vertical (Y) dimension measured in
1638	// pixels.
1639	ScreenY int64 `json:"screenY,omitempty"`
1640
1641	// SupportedVersionIds: The set of iOS major software versions this
1642	// device supports.
1643	SupportedVersionIds []string `json:"supportedVersionIds,omitempty"`
1644
1645	// Tags: Tags for this dimension.
1646	// Examples: "default", "preview", "deprecated".
1647	Tags []string `json:"tags,omitempty"`
1648
1649	// ForceSendFields is a list of field names (e.g. "DeviceCapabilities")
1650	// to unconditionally include in API requests. By default, fields with
1651	// empty values are omitted from API requests. However, any non-pointer,
1652	// non-interface field appearing in ForceSendFields will be sent to the
1653	// server regardless of whether the field is empty or not. This may be
1654	// used to include empty fields in Patch requests.
1655	ForceSendFields []string `json:"-"`
1656
1657	// NullFields is a list of field names (e.g. "DeviceCapabilities") to
1658	// include in API requests with the JSON null value. By default, fields
1659	// with empty values are omitted from API requests. However, any field
1660	// with an empty value appearing in NullFields will be sent to the
1661	// server as null. It is an error if a field in this list has a
1662	// non-empty value. This may be used to include null fields in Patch
1663	// requests.
1664	NullFields []string `json:"-"`
1665}
1666
1667func (s *IosModel) MarshalJSON() ([]byte, error) {
1668	type NoMethod IosModel
1669	raw := NoMethod(*s)
1670	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1671}
1672
1673// IosRuntimeConfiguration: iOS configuration that can be selected at
1674// the time a test is run.
1675type IosRuntimeConfiguration struct {
1676	// Locales: The set of available locales.
1677	Locales []*Locale `json:"locales,omitempty"`
1678
1679	// Orientations: The set of available orientations.
1680	Orientations []*Orientation `json:"orientations,omitempty"`
1681
1682	// ForceSendFields is a list of field names (e.g. "Locales") to
1683	// unconditionally include in API requests. By default, fields with
1684	// empty values are omitted from API requests. However, any non-pointer,
1685	// non-interface field appearing in ForceSendFields will be sent to the
1686	// server regardless of whether the field is empty or not. This may be
1687	// used to include empty fields in Patch requests.
1688	ForceSendFields []string `json:"-"`
1689
1690	// NullFields is a list of field names (e.g. "Locales") to include in
1691	// API requests with the JSON null value. By default, fields with empty
1692	// values are omitted from API requests. However, any field with an
1693	// empty value appearing in NullFields will be sent to the server as
1694	// null. It is an error if a field in this list has a non-empty value.
1695	// This may be used to include null fields in Patch requests.
1696	NullFields []string `json:"-"`
1697}
1698
1699func (s *IosRuntimeConfiguration) MarshalJSON() ([]byte, error) {
1700	type NoMethod IosRuntimeConfiguration
1701	raw := NoMethod(*s)
1702	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1703}
1704
1705// IosTestLoop: A test of an iOS application that implements one or more
1706// game loop scenarios.
1707// This test type accepts an archived application (.ipa file) and a list
1708// of
1709// integer scenarios that will be executed on the app sequentially.
1710type IosTestLoop struct {
1711	// AppBundleId: Output only. The bundle id for the application under
1712	// test.
1713	AppBundleId string `json:"appBundleId,omitempty"`
1714
1715	// AppIpa: Required. The .ipa of the application to test.
1716	AppIpa *FileReference `json:"appIpa,omitempty"`
1717
1718	// Scenarios: The list of scenarios that should be run during the test.
1719	// Defaults to the
1720	// single scenario 0 if unspecified.
1721	Scenarios []int64 `json:"scenarios,omitempty"`
1722
1723	// ForceSendFields is a list of field names (e.g. "AppBundleId") to
1724	// unconditionally include in API requests. By default, fields with
1725	// empty values are omitted from API requests. However, any non-pointer,
1726	// non-interface field appearing in ForceSendFields will be sent to the
1727	// server regardless of whether the field is empty or not. This may be
1728	// used to include empty fields in Patch requests.
1729	ForceSendFields []string `json:"-"`
1730
1731	// NullFields is a list of field names (e.g. "AppBundleId") to include
1732	// in API requests with the JSON null value. By default, fields with
1733	// empty values are omitted from API requests. However, any field with
1734	// an empty value appearing in NullFields will be sent to the server as
1735	// null. It is an error if a field in this list has a non-empty value.
1736	// This may be used to include null fields in Patch requests.
1737	NullFields []string `json:"-"`
1738}
1739
1740func (s *IosTestLoop) MarshalJSON() ([]byte, error) {
1741	type NoMethod IosTestLoop
1742	raw := NoMethod(*s)
1743	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1744}
1745
1746// IosTestSetup: A description of how to set up an iOS device prior to
1747// running the test.
1748type IosTestSetup struct {
1749	// NetworkProfile: The network traffic profile used for running the
1750	// test.
1751	// Available network profiles can be queried by using
1752	// the
1753	// NETWORK_CONFIGURATION environment type when
1754	// calling
1755	// TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
1756	NetworkProfile string `json:"networkProfile,omitempty"`
1757
1758	// ForceSendFields is a list of field names (e.g. "NetworkProfile") to
1759	// unconditionally include in API requests. By default, fields with
1760	// empty values are omitted from API requests. However, any non-pointer,
1761	// non-interface field appearing in ForceSendFields will be sent to the
1762	// server regardless of whether the field is empty or not. This may be
1763	// used to include empty fields in Patch requests.
1764	ForceSendFields []string `json:"-"`
1765
1766	// NullFields is a list of field names (e.g. "NetworkProfile") to
1767	// include in API requests with the JSON null value. By default, fields
1768	// with empty values are omitted from API requests. However, any field
1769	// with an empty value appearing in NullFields will be sent to the
1770	// server as null. It is an error if a field in this list has a
1771	// non-empty value. This may be used to include null fields in Patch
1772	// requests.
1773	NullFields []string `json:"-"`
1774}
1775
1776func (s *IosTestSetup) MarshalJSON() ([]byte, error) {
1777	type NoMethod IosTestSetup
1778	raw := NoMethod(*s)
1779	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1780}
1781
1782// IosVersion: An iOS version.
1783type IosVersion struct {
1784	// Id: An opaque id for this iOS version.
1785	// Use this id to invoke the TestExecutionService.
1786	Id string `json:"id,omitempty"`
1787
1788	// MajorVersion: An integer representing the major iOS
1789	// version.
1790	// Examples: "8", "9".
1791	MajorVersion int64 `json:"majorVersion,omitempty"`
1792
1793	// MinorVersion: An integer representing the minor iOS
1794	// version.
1795	// Examples: "1", "2".
1796	MinorVersion int64 `json:"minorVersion,omitempty"`
1797
1798	// SupportedXcodeVersionIds: The available Xcode versions for this
1799	// version.
1800	SupportedXcodeVersionIds []string `json:"supportedXcodeVersionIds,omitempty"`
1801
1802	// Tags: Tags for this dimension.
1803	// Examples: "default", "preview", "deprecated".
1804	Tags []string `json:"tags,omitempty"`
1805
1806	// ForceSendFields is a list of field names (e.g. "Id") to
1807	// unconditionally include in API requests. By default, fields with
1808	// empty values are omitted from API requests. However, any non-pointer,
1809	// non-interface field appearing in ForceSendFields will be sent to the
1810	// server regardless of whether the field is empty or not. This may be
1811	// used to include empty fields in Patch requests.
1812	ForceSendFields []string `json:"-"`
1813
1814	// NullFields is a list of field names (e.g. "Id") to include in API
1815	// requests with the JSON null value. By default, fields with empty
1816	// values are omitted from API requests. However, any field with an
1817	// empty value appearing in NullFields will be sent to the server as
1818	// null. It is an error if a field in this list has a non-empty value.
1819	// This may be used to include null fields in Patch requests.
1820	NullFields []string `json:"-"`
1821}
1822
1823func (s *IosVersion) MarshalJSON() ([]byte, error) {
1824	type NoMethod IosVersion
1825	raw := NoMethod(*s)
1826	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1827}
1828
1829// IosXcTest: A test of an iOS application that uses the XCTest
1830// framework.
1831// Xcode supports the option to "build for testing", which generates
1832// an
1833// .xctestrun file that contains a test specification (arguments, test
1834// methods,
1835// etc). This test type accepts a zip file containing the .xctestrun
1836// file and
1837// the corresponding contents of the Build/Products directory that
1838// contains all
1839// the binaries needed to run the tests.
1840type IosXcTest struct {
1841	// AppBundleId: Output only. The bundle id for the application under
1842	// test.
1843	AppBundleId string `json:"appBundleId,omitempty"`
1844
1845	// TestsZip: Required. The .zip containing the .xctestrun file and the
1846	// contents of the
1847	// DerivedData/Build/Products directory.
1848	// The .xctestrun file in this zip is ignored if the xctestrun field
1849	// is
1850	// specified.
1851	TestsZip *FileReference `json:"testsZip,omitempty"`
1852
1853	// XcodeVersion: The Xcode version that should be used for the test.
1854	// Use the TestEnvironmentDiscoveryService to get supported
1855	// options.
1856	// Defaults to the latest Xcode version Firebase Test Lab supports.
1857	XcodeVersion string `json:"xcodeVersion,omitempty"`
1858
1859	// Xctestrun: An .xctestrun file that will override the .xctestrun file
1860	// in the
1861	// tests zip. Because the .xctestrun file contains environment variables
1862	// along
1863	// with test methods to run and/or ignore, this can be useful for
1864	// sharding
1865	// tests. Default is taken from the tests zip.
1866	Xctestrun *FileReference `json:"xctestrun,omitempty"`
1867
1868	// ForceSendFields is a list of field names (e.g. "AppBundleId") to
1869	// unconditionally include in API requests. By default, fields with
1870	// empty values are omitted from API requests. However, any non-pointer,
1871	// non-interface field appearing in ForceSendFields will be sent to the
1872	// server regardless of whether the field is empty or not. This may be
1873	// used to include empty fields in Patch requests.
1874	ForceSendFields []string `json:"-"`
1875
1876	// NullFields is a list of field names (e.g. "AppBundleId") to include
1877	// in API requests with the JSON null value. By default, fields with
1878	// empty values are omitted from API requests. However, any field with
1879	// an empty value appearing in NullFields will be sent to the server as
1880	// null. It is an error if a field in this list has a non-empty value.
1881	// This may be used to include null fields in Patch requests.
1882	NullFields []string `json:"-"`
1883}
1884
1885func (s *IosXcTest) MarshalJSON() ([]byte, error) {
1886	type NoMethod IosXcTest
1887	raw := NoMethod(*s)
1888	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1889}
1890
1891// LauncherActivityIntent: Specifies an intent that starts the main
1892// launcher activity.
1893type LauncherActivityIntent struct {
1894}
1895
1896// Locale: A location/region designation for language.
1897type Locale struct {
1898	// Id: The id for this locale.
1899	// Example: "en_US".
1900	Id string `json:"id,omitempty"`
1901
1902	// Name: A human-friendly name for this language/locale.
1903	// Example: "English".
1904	Name string `json:"name,omitempty"`
1905
1906	// Region: A human-friendly string representing the region for
1907	// this
1908	// locale. Example: "United States". Not present for every locale.
1909	Region string `json:"region,omitempty"`
1910
1911	// Tags: Tags for this dimension.
1912	// Example: "default".
1913	Tags []string `json:"tags,omitempty"`
1914
1915	// ForceSendFields is a list of field names (e.g. "Id") to
1916	// unconditionally include in API requests. By default, fields with
1917	// empty values are omitted from API requests. However, any non-pointer,
1918	// non-interface field appearing in ForceSendFields will be sent to the
1919	// server regardless of whether the field is empty or not. This may be
1920	// used to include empty fields in Patch requests.
1921	ForceSendFields []string `json:"-"`
1922
1923	// NullFields is a list of field names (e.g. "Id") to include in API
1924	// requests with the JSON null value. By default, fields with empty
1925	// values are omitted from API requests. However, any field with an
1926	// empty value appearing in NullFields will be sent to the server as
1927	// null. It is an error if a field in this list has a non-empty value.
1928	// This may be used to include null fields in Patch requests.
1929	NullFields []string `json:"-"`
1930}
1931
1932func (s *Locale) MarshalJSON() ([]byte, error) {
1933	type NoMethod Locale
1934	raw := NoMethod(*s)
1935	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1936}
1937
1938// ManualSharding: Shards test cases into the specified groups of
1939// packages, classes, and/or
1940// methods.
1941//
1942// With manual sharding enabled, specifying test targets
1943// via
1944// environment_variables or in InstrumentationTest is invalid.
1945type ManualSharding struct {
1946	// TestTargetsForShard: Required. Group of packages, classes, and/or
1947	// test methods to be run for
1948	// each shard. The number of shard_test_targets must be >= 1 and <= 50.
1949	TestTargetsForShard []*TestTargetsForShard `json:"testTargetsForShard,omitempty"`
1950
1951	// ForceSendFields is a list of field names (e.g. "TestTargetsForShard")
1952	// to unconditionally include in API requests. By default, fields with
1953	// empty values are omitted from API requests. However, any non-pointer,
1954	// non-interface field appearing in ForceSendFields will be sent to the
1955	// server regardless of whether the field is empty or not. This may be
1956	// used to include empty fields in Patch requests.
1957	ForceSendFields []string `json:"-"`
1958
1959	// NullFields is a list of field names (e.g. "TestTargetsForShard") to
1960	// include in API requests with the JSON null value. By default, fields
1961	// with empty values are omitted from API requests. However, any field
1962	// with an empty value appearing in NullFields will be sent to the
1963	// server as null. It is an error if a field in this list has a
1964	// non-empty value. This may be used to include null fields in Patch
1965	// requests.
1966	NullFields []string `json:"-"`
1967}
1968
1969func (s *ManualSharding) MarshalJSON() ([]byte, error) {
1970	type NoMethod ManualSharding
1971	raw := NoMethod(*s)
1972	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1973}
1974
1975type NetworkConfiguration struct {
1976	// DownRule: The emulation rule applying to the download traffic.
1977	DownRule *TrafficRule `json:"downRule,omitempty"`
1978
1979	// Id: The unique opaque id for this network traffic configuration.
1980	Id string `json:"id,omitempty"`
1981
1982	// UpRule: The emulation rule applying to the upload traffic.
1983	UpRule *TrafficRule `json:"upRule,omitempty"`
1984
1985	// ForceSendFields is a list of field names (e.g. "DownRule") to
1986	// unconditionally include in API requests. By default, fields with
1987	// empty values are omitted from API requests. However, any non-pointer,
1988	// non-interface field appearing in ForceSendFields will be sent to the
1989	// server regardless of whether the field is empty or not. This may be
1990	// used to include empty fields in Patch requests.
1991	ForceSendFields []string `json:"-"`
1992
1993	// NullFields is a list of field names (e.g. "DownRule") to include in
1994	// API requests with the JSON null value. By default, fields with empty
1995	// values are omitted from API requests. However, any field with an
1996	// empty value appearing in NullFields will be sent to the server as
1997	// null. It is an error if a field in this list has a non-empty value.
1998	// This may be used to include null fields in Patch requests.
1999	NullFields []string `json:"-"`
2000}
2001
2002func (s *NetworkConfiguration) MarshalJSON() ([]byte, error) {
2003	type NoMethod NetworkConfiguration
2004	raw := NoMethod(*s)
2005	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2006}
2007
2008type NetworkConfigurationCatalog struct {
2009	Configurations []*NetworkConfiguration `json:"configurations,omitempty"`
2010
2011	// ForceSendFields is a list of field names (e.g. "Configurations") to
2012	// unconditionally include in API requests. By default, fields with
2013	// empty values are omitted from API requests. However, any non-pointer,
2014	// non-interface field appearing in ForceSendFields will be sent to the
2015	// server regardless of whether the field is empty or not. This may be
2016	// used to include empty fields in Patch requests.
2017	ForceSendFields []string `json:"-"`
2018
2019	// NullFields is a list of field names (e.g. "Configurations") to
2020	// include in API requests with the JSON null value. By default, fields
2021	// with empty values are omitted from API requests. However, any field
2022	// with an empty value appearing in NullFields will be sent to the
2023	// server as null. It is an error if a field in this list has a
2024	// non-empty value. This may be used to include null fields in Patch
2025	// requests.
2026	NullFields []string `json:"-"`
2027}
2028
2029func (s *NetworkConfigurationCatalog) MarshalJSON() ([]byte, error) {
2030	type NoMethod NetworkConfigurationCatalog
2031	raw := NoMethod(*s)
2032	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2033}
2034
2035// ObbFile: An opaque binary blob file to install on the device before
2036// the test starts.
2037type ObbFile struct {
2038	// Obb: Required. Opaque Binary Blob (OBB) file(s) to install on the
2039	// device.
2040	Obb *FileReference `json:"obb,omitempty"`
2041
2042	// ObbFileName: Required. OBB file name which must conform to the format
2043	// as specified by
2044	// Android
2045	// e.g. [main|patch].0300110.com.example.android.obb
2046	// which will be installed into
2047	//   \<shared-storage\>/Android/obb/\<package-name\>/
2048	// on the device.
2049	ObbFileName string `json:"obbFileName,omitempty"`
2050
2051	// ForceSendFields is a list of field names (e.g. "Obb") to
2052	// unconditionally include in API requests. By default, fields with
2053	// empty values are omitted from API requests. However, any non-pointer,
2054	// non-interface field appearing in ForceSendFields will be sent to the
2055	// server regardless of whether the field is empty or not. This may be
2056	// used to include empty fields in Patch requests.
2057	ForceSendFields []string `json:"-"`
2058
2059	// NullFields is a list of field names (e.g. "Obb") to include in API
2060	// requests with the JSON null value. By default, fields with empty
2061	// values are omitted from API requests. However, any field with an
2062	// empty value appearing in NullFields will be sent to the server as
2063	// null. It is an error if a field in this list has a non-empty value.
2064	// This may be used to include null fields in Patch requests.
2065	NullFields []string `json:"-"`
2066}
2067
2068func (s *ObbFile) MarshalJSON() ([]byte, error) {
2069	type NoMethod ObbFile
2070	raw := NoMethod(*s)
2071	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2072}
2073
2074// Orientation: Screen orientation of the device.
2075type Orientation struct {
2076	// Id: The id for this orientation.
2077	// Example: "portrait".
2078	Id string `json:"id,omitempty"`
2079
2080	// Name: A human-friendly name for this orientation.
2081	// Example: "portrait".
2082	Name string `json:"name,omitempty"`
2083
2084	// Tags: Tags for this dimension.
2085	// Example: "default".
2086	Tags []string `json:"tags,omitempty"`
2087
2088	// ForceSendFields is a list of field names (e.g. "Id") to
2089	// unconditionally include in API requests. By default, fields with
2090	// empty values are omitted from API requests. However, any non-pointer,
2091	// non-interface field appearing in ForceSendFields will be sent to the
2092	// server regardless of whether the field is empty or not. This may be
2093	// used to include empty fields in Patch requests.
2094	ForceSendFields []string `json:"-"`
2095
2096	// NullFields is a list of field names (e.g. "Id") to include in API
2097	// requests with the JSON null value. By default, fields with empty
2098	// values are omitted from API requests. However, any field with an
2099	// empty value appearing in NullFields will be sent to the server as
2100	// null. It is an error if a field in this list has a non-empty value.
2101	// This may be used to include null fields in Patch requests.
2102	NullFields []string `json:"-"`
2103}
2104
2105func (s *Orientation) MarshalJSON() ([]byte, error) {
2106	type NoMethod Orientation
2107	raw := NoMethod(*s)
2108	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2109}
2110
2111// ProvidedSoftwareCatalog: The currently provided software environment
2112// on the devices under test.
2113type ProvidedSoftwareCatalog struct {
2114	// OrchestratorVersion: A string representing the current version of
2115	// Android Test
2116	// Orchestrator that is provided by TestExecutionService.
2117	// Example: "1.0.2 beta".
2118	OrchestratorVersion string `json:"orchestratorVersion,omitempty"`
2119
2120	// ForceSendFields is a list of field names (e.g. "OrchestratorVersion")
2121	// to unconditionally include in API requests. By default, fields with
2122	// empty values are omitted from API requests. However, any non-pointer,
2123	// non-interface field appearing in ForceSendFields will be sent to the
2124	// server regardless of whether the field is empty or not. This may be
2125	// used to include empty fields in Patch requests.
2126	ForceSendFields []string `json:"-"`
2127
2128	// NullFields is a list of field names (e.g. "OrchestratorVersion") to
2129	// include in API requests with the JSON null value. By default, fields
2130	// with empty values are omitted from API requests. However, any field
2131	// with an empty value appearing in NullFields will be sent to the
2132	// server as null. It is an error if a field in this list has a
2133	// non-empty value. This may be used to include null fields in Patch
2134	// requests.
2135	NullFields []string `json:"-"`
2136}
2137
2138func (s *ProvidedSoftwareCatalog) MarshalJSON() ([]byte, error) {
2139	type NoMethod ProvidedSoftwareCatalog
2140	raw := NoMethod(*s)
2141	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2142}
2143
2144// RegularFile: A file or directory to install on the device before the
2145// test starts.
2146type RegularFile struct {
2147	// Content: Required. The source file.
2148	Content *FileReference `json:"content,omitempty"`
2149
2150	// DevicePath: Required. Where to put the content on the device. Must be
2151	// an absolute,
2152	// whitelisted path. If the file exists, it will be replaced.
2153	// The following device-side directories and any of their subdirectories
2154	// are
2155	// whitelisted:
2156	// <p>${EXTERNAL_STORAGE}, or /sdcard</p>
2157	// <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
2158	// <p>Specifying a path outside of these directory trees is
2159	// invalid.
2160	//
2161	// <p> The paths /sdcard and /data will be made available and treated
2162	// as
2163	// implicit path substitutions. E.g. if /sdcard on a particular device
2164	// does
2165	// not map to external storage, the system will replace it with the
2166	// external
2167	// storage path prefix for that device and copy the file there.
2168	//
2169	// <p> It is strongly advised to use the <a
2170	// href=
2171	// "http://developer.android.com/reference/android/os/Environment.h
2172	// tml">
2173	// Environment API</a> in app and test code to access files on the
2174	// device in a
2175	// portable way.
2176	DevicePath string `json:"devicePath,omitempty"`
2177
2178	// ForceSendFields is a list of field names (e.g. "Content") to
2179	// unconditionally include in API requests. By default, fields with
2180	// empty values are omitted from API requests. However, any non-pointer,
2181	// non-interface field appearing in ForceSendFields will be sent to the
2182	// server regardless of whether the field is empty or not. This may be
2183	// used to include empty fields in Patch requests.
2184	ForceSendFields []string `json:"-"`
2185
2186	// NullFields is a list of field names (e.g. "Content") to include in
2187	// API requests with the JSON null value. By default, fields with empty
2188	// values are omitted from API requests. However, any field with an
2189	// empty value appearing in NullFields will be sent to the server as
2190	// null. It is an error if a field in this list has a non-empty value.
2191	// This may be used to include null fields in Patch requests.
2192	NullFields []string `json:"-"`
2193}
2194
2195func (s *RegularFile) MarshalJSON() ([]byte, error) {
2196	type NoMethod RegularFile
2197	raw := NoMethod(*s)
2198	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2199}
2200
2201// ResultStorage: Locations where the results of running the test are
2202// stored.
2203type ResultStorage struct {
2204	// GoogleCloudStorage: Required.
2205	GoogleCloudStorage *GoogleCloudStorage `json:"googleCloudStorage,omitempty"`
2206
2207	// ResultsUrl: Output only. URL to the results in the Firebase Web
2208	// Console.
2209	ResultsUrl string `json:"resultsUrl,omitempty"`
2210
2211	// ToolResultsExecution: Output only. The tool results execution that
2212	// results are written to.
2213	ToolResultsExecution *ToolResultsExecution `json:"toolResultsExecution,omitempty"`
2214
2215	// ToolResultsHistory: The tool results history that contains the tool
2216	// results execution that
2217	// results are written to.
2218	//
2219	// If not provided, the service will choose an appropriate value.
2220	ToolResultsHistory *ToolResultsHistory `json:"toolResultsHistory,omitempty"`
2221
2222	// ForceSendFields is a list of field names (e.g. "GoogleCloudStorage")
2223	// to unconditionally include in API requests. By default, fields with
2224	// empty values are omitted from API requests. However, any non-pointer,
2225	// non-interface field appearing in ForceSendFields will be sent to the
2226	// server regardless of whether the field is empty or not. This may be
2227	// used to include empty fields in Patch requests.
2228	ForceSendFields []string `json:"-"`
2229
2230	// NullFields is a list of field names (e.g. "GoogleCloudStorage") to
2231	// include in API requests with the JSON null value. By default, fields
2232	// with empty values are omitted from API requests. However, any field
2233	// with an empty value appearing in NullFields will be sent to the
2234	// server as null. It is an error if a field in this list has a
2235	// non-empty value. This may be used to include null fields in Patch
2236	// requests.
2237	NullFields []string `json:"-"`
2238}
2239
2240func (s *ResultStorage) MarshalJSON() ([]byte, error) {
2241	type NoMethod ResultStorage
2242	raw := NoMethod(*s)
2243	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2244}
2245
2246// RoboDirective: Directs Robo to interact with a specific UI element if
2247// it is encountered
2248// during the crawl. Currently, Robo can perform text entry or element
2249// click.
2250type RoboDirective struct {
2251	// ActionType: Required. The type of action that Robo should perform on
2252	// the specified
2253	// element.
2254	//
2255	// Possible values:
2256	//   "ACTION_TYPE_UNSPECIFIED" - DO NOT USE. For proto versioning only.
2257	//   "SINGLE_CLICK" - Direct Robo to click on the specified element.
2258	// No-op if specified element
2259	// is not clickable.
2260	//   "ENTER_TEXT" - Direct Robo to enter text on the specified element.
2261	// No-op if specified
2262	// element is not enabled or does not allow text entry.
2263	//   "IGNORE" - Direct Robo to ignore interactions with a specific
2264	// element.
2265	ActionType string `json:"actionType,omitempty"`
2266
2267	// InputText: The text that Robo is directed to set. If left empty, the
2268	// directive will be
2269	// treated as a CLICK on the element matching the resource_name.
2270	InputText string `json:"inputText,omitempty"`
2271
2272	// ResourceName: Required. The android resource name of the target UI
2273	// element.
2274	// For example,
2275	//    in Java: R.string.foo
2276	//    in xml: @string/foo
2277	// Only the "foo" part is needed.
2278	// Reference
2279	// doc:
2280	// https://developer.android.com/guide/topics/resources/accessing-re
2281	// sources.html
2282	ResourceName string `json:"resourceName,omitempty"`
2283
2284	// ForceSendFields is a list of field names (e.g. "ActionType") to
2285	// unconditionally include in API requests. By default, fields with
2286	// empty values are omitted from API requests. However, any non-pointer,
2287	// non-interface field appearing in ForceSendFields will be sent to the
2288	// server regardless of whether the field is empty or not. This may be
2289	// used to include empty fields in Patch requests.
2290	ForceSendFields []string `json:"-"`
2291
2292	// NullFields is a list of field names (e.g. "ActionType") to include in
2293	// API requests with the JSON null value. By default, fields with empty
2294	// values are omitted from API requests. However, any field with an
2295	// empty value appearing in NullFields will be sent to the server as
2296	// null. It is an error if a field in this list has a non-empty value.
2297	// This may be used to include null fields in Patch requests.
2298	NullFields []string `json:"-"`
2299}
2300
2301func (s *RoboDirective) MarshalJSON() ([]byte, error) {
2302	type NoMethod RoboDirective
2303	raw := NoMethod(*s)
2304	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2305}
2306
2307// RoboStartingIntent: Message for specifying the start activities to
2308// crawl.
2309type RoboStartingIntent struct {
2310	// LauncherActivity: An intent that starts the main launcher activity.
2311	LauncherActivity *LauncherActivityIntent `json:"launcherActivity,omitempty"`
2312
2313	// StartActivity: An intent that starts an activity with specific
2314	// details.
2315	StartActivity *StartActivityIntent `json:"startActivity,omitempty"`
2316
2317	// Timeout: Timeout in seconds for each intent.
2318	Timeout string `json:"timeout,omitempty"`
2319
2320	// ForceSendFields is a list of field names (e.g. "LauncherActivity") to
2321	// unconditionally include in API requests. By default, fields with
2322	// empty values are omitted from API requests. However, any non-pointer,
2323	// non-interface field appearing in ForceSendFields will be sent to the
2324	// server regardless of whether the field is empty or not. This may be
2325	// used to include empty fields in Patch requests.
2326	ForceSendFields []string `json:"-"`
2327
2328	// NullFields is a list of field names (e.g. "LauncherActivity") to
2329	// include in API requests with the JSON null value. By default, fields
2330	// with empty values are omitted from API requests. However, any field
2331	// with an empty value appearing in NullFields will be sent to the
2332	// server as null. It is an error if a field in this list has a
2333	// non-empty value. This may be used to include null fields in Patch
2334	// requests.
2335	NullFields []string `json:"-"`
2336}
2337
2338func (s *RoboStartingIntent) MarshalJSON() ([]byte, error) {
2339	type NoMethod RoboStartingIntent
2340	raw := NoMethod(*s)
2341	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2342}
2343
2344// Shard: Output only. Details about the shard.
2345type Shard struct {
2346	// NumShards: Output only. The total number of shards.
2347	NumShards int64 `json:"numShards,omitempty"`
2348
2349	// ShardIndex: Output only. The index of the shard among all the shards.
2350	ShardIndex int64 `json:"shardIndex,omitempty"`
2351
2352	// TestTargetsForShard: Output only. Test targets for each shard.
2353	TestTargetsForShard *TestTargetsForShard `json:"testTargetsForShard,omitempty"`
2354
2355	// ForceSendFields is a list of field names (e.g. "NumShards") to
2356	// unconditionally include in API requests. By default, fields with
2357	// empty values are omitted from API requests. However, any non-pointer,
2358	// non-interface field appearing in ForceSendFields will be sent to the
2359	// server regardless of whether the field is empty or not. This may be
2360	// used to include empty fields in Patch requests.
2361	ForceSendFields []string `json:"-"`
2362
2363	// NullFields is a list of field names (e.g. "NumShards") to include in
2364	// API requests with the JSON null value. By default, fields with empty
2365	// values are omitted from API requests. However, any field with an
2366	// empty value appearing in NullFields will be sent to the server as
2367	// null. It is an error if a field in this list has a non-empty value.
2368	// This may be used to include null fields in Patch requests.
2369	NullFields []string `json:"-"`
2370}
2371
2372func (s *Shard) MarshalJSON() ([]byte, error) {
2373	type NoMethod Shard
2374	raw := NoMethod(*s)
2375	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2376}
2377
2378// ShardingOption: Options for enabling sharding.
2379type ShardingOption struct {
2380	// ManualSharding: Shards test cases into the specified groups of
2381	// packages, classes, and/or
2382	// methods.
2383	ManualSharding *ManualSharding `json:"manualSharding,omitempty"`
2384
2385	// UniformSharding: Uniformly shards test cases given a total number of
2386	// shards.
2387	UniformSharding *UniformSharding `json:"uniformSharding,omitempty"`
2388
2389	// ForceSendFields is a list of field names (e.g. "ManualSharding") to
2390	// unconditionally include in API requests. By default, fields with
2391	// empty values are omitted from API requests. However, any non-pointer,
2392	// non-interface field appearing in ForceSendFields will be sent to the
2393	// server regardless of whether the field is empty or not. This may be
2394	// used to include empty fields in Patch requests.
2395	ForceSendFields []string `json:"-"`
2396
2397	// NullFields is a list of field names (e.g. "ManualSharding") to
2398	// include in API requests with the JSON null value. By default, fields
2399	// with empty values are omitted from API requests. However, any field
2400	// with an empty value appearing in NullFields will be sent to the
2401	// server as null. It is an error if a field in this list has a
2402	// non-empty value. This may be used to include null fields in Patch
2403	// requests.
2404	NullFields []string `json:"-"`
2405}
2406
2407func (s *ShardingOption) MarshalJSON() ([]byte, error) {
2408	type NoMethod ShardingOption
2409	raw := NoMethod(*s)
2410	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2411}
2412
2413// StartActivityIntent: A starting intent specified by an action, uri,
2414// and categories.
2415type StartActivityIntent struct {
2416	// Action: Action name.
2417	// Required for START_ACTIVITY.
2418	Action string `json:"action,omitempty"`
2419
2420	// Categories: Intent categories to set on the intent.
2421	Categories []string `json:"categories,omitempty"`
2422
2423	// Uri: URI for the action.
2424	Uri string `json:"uri,omitempty"`
2425
2426	// ForceSendFields is a list of field names (e.g. "Action") to
2427	// unconditionally include in API requests. By default, fields with
2428	// empty values are omitted from API requests. However, any non-pointer,
2429	// non-interface field appearing in ForceSendFields will be sent to the
2430	// server regardless of whether the field is empty or not. This may be
2431	// used to include empty fields in Patch requests.
2432	ForceSendFields []string `json:"-"`
2433
2434	// NullFields is a list of field names (e.g. "Action") to include in API
2435	// requests with the JSON null value. By default, fields with empty
2436	// values are omitted from API requests. However, any field with an
2437	// empty value appearing in NullFields will be sent to the server as
2438	// null. It is an error if a field in this list has a non-empty value.
2439	// This may be used to include null fields in Patch requests.
2440	NullFields []string `json:"-"`
2441}
2442
2443func (s *StartActivityIntent) MarshalJSON() ([]byte, error) {
2444	type NoMethod StartActivityIntent
2445	raw := NoMethod(*s)
2446	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2447}
2448
2449type SystraceSetup struct {
2450	// DurationSeconds: Systrace duration in seconds.
2451	// Should be between 1 and 30 seconds. 0 disables systrace.
2452	DurationSeconds int64 `json:"durationSeconds,omitempty"`
2453
2454	// ForceSendFields is a list of field names (e.g. "DurationSeconds") to
2455	// unconditionally include in API requests. By default, fields with
2456	// empty values are omitted from API requests. However, any non-pointer,
2457	// non-interface field appearing in ForceSendFields will be sent to the
2458	// server regardless of whether the field is empty or not. This may be
2459	// used to include empty fields in Patch requests.
2460	ForceSendFields []string `json:"-"`
2461
2462	// NullFields is a list of field names (e.g. "DurationSeconds") to
2463	// include in API requests with the JSON null value. By default, fields
2464	// with empty values are omitted from API requests. However, any field
2465	// with an empty value appearing in NullFields will be sent to the
2466	// server as null. It is an error if a field in this list has a
2467	// non-empty value. This may be used to include null fields in Patch
2468	// requests.
2469	NullFields []string `json:"-"`
2470}
2471
2472func (s *SystraceSetup) MarshalJSON() ([]byte, error) {
2473	type NoMethod SystraceSetup
2474	raw := NoMethod(*s)
2475	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2476}
2477
2478// TestDetails: Additional details about the progress of the running
2479// test.
2480type TestDetails struct {
2481	// ErrorMessage: Output only. If the TestState is ERROR, then this
2482	// string will contain
2483	// human-readable details about the error.
2484	ErrorMessage string `json:"errorMessage,omitempty"`
2485
2486	// ProgressMessages: Output only. Human-readable, detailed descriptions
2487	// of the test's progress.
2488	// For example: "Provisioning a device", "Starting Test".
2489	//
2490	// During the course of execution new data may be appended
2491	// to the end of progress_messages.
2492	ProgressMessages []string `json:"progressMessages,omitempty"`
2493
2494	// ForceSendFields is a list of field names (e.g. "ErrorMessage") to
2495	// unconditionally include in API requests. By default, fields with
2496	// empty values are omitted from API requests. However, any non-pointer,
2497	// non-interface field appearing in ForceSendFields will be sent to the
2498	// server regardless of whether the field is empty or not. This may be
2499	// used to include empty fields in Patch requests.
2500	ForceSendFields []string `json:"-"`
2501
2502	// NullFields is a list of field names (e.g. "ErrorMessage") to include
2503	// in API requests with the JSON null value. By default, fields with
2504	// empty values are omitted from API requests. However, any field with
2505	// an empty value appearing in NullFields will be sent to the server as
2506	// null. It is an error if a field in this list has a non-empty value.
2507	// This may be used to include null fields in Patch requests.
2508	NullFields []string `json:"-"`
2509}
2510
2511func (s *TestDetails) MarshalJSON() ([]byte, error) {
2512	type NoMethod TestDetails
2513	raw := NoMethod(*s)
2514	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2515}
2516
2517// TestEnvironmentCatalog: A description of a test environment.
2518type TestEnvironmentCatalog struct {
2519	// AndroidDeviceCatalog: Supported Android devices.
2520	AndroidDeviceCatalog *AndroidDeviceCatalog `json:"androidDeviceCatalog,omitempty"`
2521
2522	// IosDeviceCatalog: Supported iOS devices.
2523	IosDeviceCatalog *IosDeviceCatalog `json:"iosDeviceCatalog,omitempty"`
2524
2525	// NetworkConfigurationCatalog: Supported network configurations.
2526	NetworkConfigurationCatalog *NetworkConfigurationCatalog `json:"networkConfigurationCatalog,omitempty"`
2527
2528	// SoftwareCatalog: The software test environment provided by
2529	// TestExecutionService.
2530	SoftwareCatalog *ProvidedSoftwareCatalog `json:"softwareCatalog,omitempty"`
2531
2532	// ServerResponse contains the HTTP response code and headers from the
2533	// server.
2534	googleapi.ServerResponse `json:"-"`
2535
2536	// ForceSendFields is a list of field names (e.g.
2537	// "AndroidDeviceCatalog") to unconditionally include in API requests.
2538	// By default, fields with empty values are omitted from API requests.
2539	// However, any non-pointer, non-interface field appearing in
2540	// ForceSendFields will be sent to the server regardless of whether the
2541	// field is empty or not. This may be used to include empty fields in
2542	// Patch requests.
2543	ForceSendFields []string `json:"-"`
2544
2545	// NullFields is a list of field names (e.g. "AndroidDeviceCatalog") to
2546	// include in API requests with the JSON null value. By default, fields
2547	// with empty values are omitted from API requests. However, any field
2548	// with an empty value appearing in NullFields will be sent to the
2549	// server as null. It is an error if a field in this list has a
2550	// non-empty value. This may be used to include null fields in Patch
2551	// requests.
2552	NullFields []string `json:"-"`
2553}
2554
2555func (s *TestEnvironmentCatalog) MarshalJSON() ([]byte, error) {
2556	type NoMethod TestEnvironmentCatalog
2557	raw := NoMethod(*s)
2558	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2559}
2560
2561// TestExecution: A single test executed in a single environment.
2562type TestExecution struct {
2563	// Environment: Output only. How the host machine(s) are configured.
2564	Environment *Environment `json:"environment,omitempty"`
2565
2566	// Id: Output only. Unique id set by the service.
2567	Id string `json:"id,omitempty"`
2568
2569	// MatrixId: Output only. Id of the containing TestMatrix.
2570	MatrixId string `json:"matrixId,omitempty"`
2571
2572	// ProjectId: Output only. The cloud project that owns the test
2573	// execution.
2574	ProjectId string `json:"projectId,omitempty"`
2575
2576	// Shard: Output only. Details about the shard.
2577	Shard *Shard `json:"shard,omitempty"`
2578
2579	// State: Output only. Indicates the current progress of the test
2580	// execution
2581	// (e.g., FINISHED).
2582	//
2583	// Possible values:
2584	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
2585	//   "VALIDATING" - The execution or matrix is being validated.
2586	//   "PENDING" - The execution or matrix is waiting for resources to
2587	// become available.
2588	//   "RUNNING" - The execution is currently being processed.
2589	//
2590	// Can only be set on an execution.
2591	//   "FINISHED" - The execution or matrix has terminated normally.
2592	//
2593	// On a matrix this means that the matrix level processing completed
2594	// normally,
2595	// but individual executions may be in an ERROR state.
2596	//   "ERROR" - The execution or matrix has stopped because it
2597	// encountered an
2598	// infrastructure failure.
2599	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
2600	// corresponds to a unsupported
2601	// environment.
2602	//
2603	// Can only be set on an execution.
2604	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
2605	// provided inputs are incompatible with
2606	// the requested environment.
2607	//
2608	// Example: requested AndroidVersion is lower than APK's
2609	// minSdkVersion
2610	//
2611	// Can only be set on an execution.
2612	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
2613	// provided inputs are incompatible with
2614	// the requested architecture.
2615	//
2616	// Example: requested device does not support running the native code
2617	// in
2618	// the supplied APK
2619	//
2620	// Can only be set on an execution.
2621	//   "CANCELLED" - The user cancelled the execution.
2622	//
2623	// Can only be set on an execution.
2624	//   "INVALID" - The execution or matrix was not run because the
2625	// provided inputs are not
2626	// valid.
2627	//
2628	// Examples: input file is not of the expected type, is
2629	// malformed/corrupt, or
2630	// was flagged as malware
2631	State string `json:"state,omitempty"`
2632
2633	// TestDetails: Output only. Additional details about the running test.
2634	TestDetails *TestDetails `json:"testDetails,omitempty"`
2635
2636	// TestSpecification: Output only. How to run the test.
2637	TestSpecification *TestSpecification `json:"testSpecification,omitempty"`
2638
2639	// Timestamp: Output only. The time this test execution was initially
2640	// created.
2641	Timestamp string `json:"timestamp,omitempty"`
2642
2643	// ToolResultsStep: Output only. Where the results for this execution
2644	// are written.
2645	ToolResultsStep *ToolResultsStep `json:"toolResultsStep,omitempty"`
2646
2647	// ForceSendFields is a list of field names (e.g. "Environment") to
2648	// unconditionally include in API requests. By default, fields with
2649	// empty values are omitted from API requests. However, any non-pointer,
2650	// non-interface field appearing in ForceSendFields will be sent to the
2651	// server regardless of whether the field is empty or not. This may be
2652	// used to include empty fields in Patch requests.
2653	ForceSendFields []string `json:"-"`
2654
2655	// NullFields is a list of field names (e.g. "Environment") to include
2656	// in API requests with the JSON null value. By default, fields with
2657	// empty values are omitted from API requests. However, any field with
2658	// an empty value appearing in NullFields will be sent to the server as
2659	// null. It is an error if a field in this list has a non-empty value.
2660	// This may be used to include null fields in Patch requests.
2661	NullFields []string `json:"-"`
2662}
2663
2664func (s *TestExecution) MarshalJSON() ([]byte, error) {
2665	type NoMethod TestExecution
2666	raw := NoMethod(*s)
2667	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2668}
2669
2670// TestMatrix: TestMatrix captures all details about a test. It contains
2671// the environment
2672// configuration, test specification, test executions and overall state
2673// and
2674// outcome.
2675type TestMatrix struct {
2676	// ClientInfo: Information about the client which invoked the test.
2677	ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
2678
2679	// EnvironmentMatrix: Required. The devices the tests are being executed
2680	// on.
2681	EnvironmentMatrix *EnvironmentMatrix `json:"environmentMatrix,omitempty"`
2682
2683	// FlakyTestAttempts: The number of times a TestExecution should be
2684	// re-attempted if one or more
2685	// of its test cases fail for any reason.
2686	// The maximum number of reruns allowed is 10.
2687	//
2688	// Default is 0, which implies no reruns.
2689	FlakyTestAttempts int64 `json:"flakyTestAttempts,omitempty"`
2690
2691	// InvalidMatrixDetails: Output only. Describes why the matrix is
2692	// considered invalid.
2693	// Only useful for matrices in the INVALID state.
2694	//
2695	// Possible values:
2696	//   "INVALID_MATRIX_DETAILS_UNSPECIFIED" - Do not use. For proto
2697	// versioning only.
2698	//   "DETAILS_UNAVAILABLE" - The matrix is INVALID, but there are no
2699	// further details available.
2700	//   "MALFORMED_APK" - The input app APK could not be parsed.
2701	//   "MALFORMED_TEST_APK" - The input test APK could not be parsed.
2702	//   "NO_MANIFEST" - The AndroidManifest.xml could not be found.
2703	//   "NO_PACKAGE_NAME" - The APK manifest does not declare a package
2704	// name.
2705	//   "INVALID_PACKAGE_NAME" - The APK application ID (aka package name)
2706	// is invalid.
2707	// See also
2708	// https://developer.android.com/studio/build/application-id
2709	//   "TEST_SAME_AS_APP" - The test package and app package are the same.
2710	//   "NO_INSTRUMENTATION" - The test apk does not declare an
2711	// instrumentation.
2712	//   "NO_SIGNATURE" - The input app apk does not have a signature.
2713	//   "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE" - The test runner class
2714	// specified by user or in the test APK's manifest file
2715	// is not compatible with Android Test Orchestrator.
2716	// Orchestrator is only compatible with AndroidJUnitRunner version 1.0
2717	// or
2718	// higher.
2719	// Orchestrator can be disabled by using
2720	// DO_NOT_USE_ORCHESTRATOR
2721	// OrchestratorOption.
2722	//   "NO_TEST_RUNNER_CLASS" - The test APK does not contain the test
2723	// runner class specified by user or in
2724	// the manifest file.
2725	// This can be caused by either of the following reasons:
2726	// - the user provided a runner class name that's incorrect, or
2727	// - the test runner isn't built into the test APK (might be in the app
2728	// APK
2729	// instead).
2730	//   "NO_LAUNCHER_ACTIVITY" - A main launcher activity could not be
2731	// found.
2732	//   "FORBIDDEN_PERMISSIONS" - The app declares one or more permissions
2733	// that are not allowed.
2734	//   "INVALID_ROBO_DIRECTIVES" - There is a conflict in the provided
2735	// robo_directives.
2736	//   "INVALID_RESOURCE_NAME" - There is at least one invalid resource
2737	// name in the provided
2738	// robo directives
2739	//   "INVALID_DIRECTIVE_ACTION" - Invalid definition of action in the
2740	// robo directives
2741	// (e.g. a click or ignore action includes an input text field)
2742	//   "TEST_LOOP_INTENT_FILTER_NOT_FOUND" - There is no test loop intent
2743	// filter, or the one that is given is
2744	// not formatted correctly.
2745	//   "SCENARIO_LABEL_NOT_DECLARED" - The request contains a scenario
2746	// label that was not declared in the
2747	// manifest.
2748	//   "SCENARIO_LABEL_MALFORMED" - There was an error when parsing a
2749	// label's value.
2750	//   "SCENARIO_NOT_DECLARED" - The request contains a scenario number
2751	// that was not declared in the
2752	// manifest.
2753	//   "DEVICE_ADMIN_RECEIVER" - Device administrator applications are not
2754	// allowed.
2755	//   "MALFORMED_XC_TEST_ZIP" - The zipped XCTest was malformed. The zip
2756	// did not contain a single
2757	// .xctestrun file and the contents of the
2758	// DerivedData/Build/Products
2759	// directory.
2760	//   "BUILT_FOR_IOS_SIMULATOR" - The zipped XCTest was built for the iOS
2761	// simulator rather than for a
2762	// physical device.
2763	//   "NO_TESTS_IN_XC_TEST_ZIP" - The .xctestrun file did not specify any
2764	// test targets.
2765	//   "USE_DESTINATION_ARTIFACTS" - One or more of the test targets
2766	// defined in the .xctestrun file specifies
2767	// "UseDestinationArtifacts", which is disallowed.
2768	//   "TEST_NOT_APP_HOSTED" - XC tests which run on physical devices must
2769	// have
2770	// "IsAppHostedTestBundle" == "true" in the xctestrun file.
2771	//   "PLIST_CANNOT_BE_PARSED" - An Info.plist file in the XCTest zip
2772	// could not be parsed.
2773	//   "TEST_ONLY_APK" - The APK is marked as "testOnly".
2774	// Deprecated and not currently used.
2775	//   "MALFORMED_IPA" - The input IPA could not be parsed.
2776	//   "MISSING_URL_SCHEME" - The application doesn't register the game
2777	// loop URL scheme.
2778	//   "MALFORMED_APP_BUNDLE" - The iOS application bundle (.app) couldn't
2779	// be processed.
2780	//   "NO_CODE_APK" - APK contains no code.
2781	// See
2782	// also
2783	// https://developer.android.com/guide/topics/manifest/application-e
2784	// lement.html#code
2785	//   "INVALID_INPUT_APK" - Either the provided input APK path was
2786	// malformed,
2787	// the APK file does not exist, or the user does not have permission
2788	// to
2789	// access the APK file.
2790	//   "INVALID_APK_PREVIEW_SDK" - APK is built for a preview SDK which is
2791	// unsupported
2792	InvalidMatrixDetails string `json:"invalidMatrixDetails,omitempty"`
2793
2794	// OutcomeSummary: Output Only. The overall outcome of the test.
2795	// Only set when the test matrix state is FINISHED.
2796	//
2797	// Possible values:
2798	//   "OUTCOME_SUMMARY_UNSPECIFIED" - Do not use. For proto versioning
2799	// only.
2800	//   "SUCCESS" - The test matrix run was successful, for instance:
2801	// - All the test cases passed.
2802	// - Robo did not detect a crash of the application under test.
2803	//   "FAILURE" - A run failed, for instance:
2804	// - One or more test case failed.
2805	// - A test timed out.
2806	// - The application under test crashed.
2807	//   "INCONCLUSIVE" - Something unexpected happened. The run should
2808	// still be considered
2809	// unsuccessful but this is likely a transient problem and re-running
2810	// the
2811	// test might be successful.
2812	//   "SKIPPED" - All tests were skipped, for instance:
2813	// - All device configurations were incompatible.
2814	OutcomeSummary string `json:"outcomeSummary,omitempty"`
2815
2816	// ProjectId: The cloud project that owns the test matrix.
2817	ProjectId string `json:"projectId,omitempty"`
2818
2819	// ResultStorage: Required. Where the results for the matrix are
2820	// written.
2821	ResultStorage *ResultStorage `json:"resultStorage,omitempty"`
2822
2823	// State: Output only. Indicates the current progress of the test
2824	// matrix.
2825	//
2826	// Possible values:
2827	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
2828	//   "VALIDATING" - The execution or matrix is being validated.
2829	//   "PENDING" - The execution or matrix is waiting for resources to
2830	// become available.
2831	//   "RUNNING" - The execution is currently being processed.
2832	//
2833	// Can only be set on an execution.
2834	//   "FINISHED" - The execution or matrix has terminated normally.
2835	//
2836	// On a matrix this means that the matrix level processing completed
2837	// normally,
2838	// but individual executions may be in an ERROR state.
2839	//   "ERROR" - The execution or matrix has stopped because it
2840	// encountered an
2841	// infrastructure failure.
2842	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
2843	// corresponds to a unsupported
2844	// environment.
2845	//
2846	// Can only be set on an execution.
2847	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
2848	// provided inputs are incompatible with
2849	// the requested environment.
2850	//
2851	// Example: requested AndroidVersion is lower than APK's
2852	// minSdkVersion
2853	//
2854	// Can only be set on an execution.
2855	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
2856	// provided inputs are incompatible with
2857	// the requested architecture.
2858	//
2859	// Example: requested device does not support running the native code
2860	// in
2861	// the supplied APK
2862	//
2863	// Can only be set on an execution.
2864	//   "CANCELLED" - The user cancelled the execution.
2865	//
2866	// Can only be set on an execution.
2867	//   "INVALID" - The execution or matrix was not run because the
2868	// provided inputs are not
2869	// valid.
2870	//
2871	// Examples: input file is not of the expected type, is
2872	// malformed/corrupt, or
2873	// was flagged as malware
2874	State string `json:"state,omitempty"`
2875
2876	// TestExecutions: Output only. The list of test executions that the
2877	// service creates for
2878	// this matrix.
2879	TestExecutions []*TestExecution `json:"testExecutions,omitempty"`
2880
2881	// TestMatrixId: Output only. Unique id set by the service.
2882	TestMatrixId string `json:"testMatrixId,omitempty"`
2883
2884	// TestSpecification: Required. How to run the test.
2885	TestSpecification *TestSpecification `json:"testSpecification,omitempty"`
2886
2887	// Timestamp: Output only. The time this test matrix was initially
2888	// created.
2889	Timestamp string `json:"timestamp,omitempty"`
2890
2891	// ServerResponse contains the HTTP response code and headers from the
2892	// server.
2893	googleapi.ServerResponse `json:"-"`
2894
2895	// ForceSendFields is a list of field names (e.g. "ClientInfo") to
2896	// unconditionally include in API requests. By default, fields with
2897	// empty values are omitted from API requests. However, any non-pointer,
2898	// non-interface field appearing in ForceSendFields will be sent to the
2899	// server regardless of whether the field is empty or not. This may be
2900	// used to include empty fields in Patch requests.
2901	ForceSendFields []string `json:"-"`
2902
2903	// NullFields is a list of field names (e.g. "ClientInfo") to include in
2904	// API requests with the JSON null value. By default, fields with empty
2905	// values are omitted from API requests. However, any field with an
2906	// empty value appearing in NullFields will be sent to the server as
2907	// null. It is an error if a field in this list has a non-empty value.
2908	// This may be used to include null fields in Patch requests.
2909	NullFields []string `json:"-"`
2910}
2911
2912func (s *TestMatrix) MarshalJSON() ([]byte, error) {
2913	type NoMethod TestMatrix
2914	raw := NoMethod(*s)
2915	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2916}
2917
2918// TestSetup: A description of how to set up the Android device prior to
2919// running the test.
2920type TestSetup struct {
2921	// Account: The device will be logged in on this account for the
2922	// duration of the test.
2923	Account *Account `json:"account,omitempty"`
2924
2925	// AdditionalApks: APKs to install in addition to those being directly
2926	// tested.
2927	// Currently capped at 100.
2928	AdditionalApks []*Apk `json:"additionalApks,omitempty"`
2929
2930	// DirectoriesToPull: List of directories on the device to upload to GCS
2931	// at the end of the test;
2932	// they must be absolute paths under /sdcard or /data/local/tmp.
2933	// Path names are restricted to characters a-z A-Z 0-9 _ - . + and
2934	// /
2935	//
2936	// Note: The paths /sdcard and /data will be made available and treated
2937	// as
2938	// implicit path substitutions. E.g. if /sdcard on a particular device
2939	// does
2940	// not map to external storage, the system will replace it with the
2941	// external
2942	// storage path prefix for that device.
2943	DirectoriesToPull []string `json:"directoriesToPull,omitempty"`
2944
2945	// EnvironmentVariables: Environment variables to set for the test (only
2946	// applicable for
2947	// instrumentation tests).
2948	EnvironmentVariables []*EnvironmentVariable `json:"environmentVariables,omitempty"`
2949
2950	// FilesToPush: List of files to push to the device before starting the
2951	// test.
2952	FilesToPush []*DeviceFile `json:"filesToPush,omitempty"`
2953
2954	// NetworkProfile: The network traffic profile used for running the
2955	// test.
2956	// Available network profiles can be queried by using
2957	// the
2958	// NETWORK_CONFIGURATION environment type when
2959	// calling
2960	// TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
2961	NetworkProfile string `json:"networkProfile,omitempty"`
2962
2963	// Systrace: Systrace configuration for the run.
2964	// If set a systrace will be taken, starting on test start and lasting
2965	// for the
2966	// configured duration. The systrace file thus obtained is put in the
2967	// results
2968	// bucket together with the other artifacts from the run.
2969	Systrace *SystraceSetup `json:"systrace,omitempty"`
2970
2971	// ForceSendFields is a list of field names (e.g. "Account") to
2972	// unconditionally include in API requests. By default, fields with
2973	// empty values are omitted from API requests. However, any non-pointer,
2974	// non-interface field appearing in ForceSendFields will be sent to the
2975	// server regardless of whether the field is empty or not. This may be
2976	// used to include empty fields in Patch requests.
2977	ForceSendFields []string `json:"-"`
2978
2979	// NullFields is a list of field names (e.g. "Account") to include in
2980	// API requests with the JSON null value. By default, fields with empty
2981	// values are omitted from API requests. However, any field with an
2982	// empty value appearing in NullFields will be sent to the server as
2983	// null. It is an error if a field in this list has a non-empty value.
2984	// This may be used to include null fields in Patch requests.
2985	NullFields []string `json:"-"`
2986}
2987
2988func (s *TestSetup) MarshalJSON() ([]byte, error) {
2989	type NoMethod TestSetup
2990	raw := NoMethod(*s)
2991	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2992}
2993
2994// TestSpecification: A description of how to run the test.
2995type TestSpecification struct {
2996	// AndroidInstrumentationTest: An Android instrumentation test.
2997	AndroidInstrumentationTest *AndroidInstrumentationTest `json:"androidInstrumentationTest,omitempty"`
2998
2999	// AndroidRoboTest: An Android robo test.
3000	AndroidRoboTest *AndroidRoboTest `json:"androidRoboTest,omitempty"`
3001
3002	// AndroidTestLoop: An Android Application with a Test Loop.
3003	AndroidTestLoop *AndroidTestLoop `json:"androidTestLoop,omitempty"`
3004
3005	// DisablePerformanceMetrics: Disables performance metrics recording.
3006	// May reduce test latency.
3007	DisablePerformanceMetrics bool `json:"disablePerformanceMetrics,omitempty"`
3008
3009	// DisableVideoRecording: Disables video recording. May reduce test
3010	// latency.
3011	DisableVideoRecording bool `json:"disableVideoRecording,omitempty"`
3012
3013	// IosTestLoop: An iOS application with a test loop.
3014	IosTestLoop *IosTestLoop `json:"iosTestLoop,omitempty"`
3015
3016	// IosTestSetup: Test setup requirements for iOS.
3017	IosTestSetup *IosTestSetup `json:"iosTestSetup,omitempty"`
3018
3019	// IosXcTest: An iOS XCTest, via an .xctestrun file.
3020	IosXcTest *IosXcTest `json:"iosXcTest,omitempty"`
3021
3022	// TestSetup: Test setup requirements for Android e.g. files to install,
3023	// bootstrap
3024	// scripts.
3025	TestSetup *TestSetup `json:"testSetup,omitempty"`
3026
3027	// TestTimeout: Max time a test execution is allowed to run before it
3028	// is
3029	// automatically cancelled.
3030	// The default value is 5 min.
3031	TestTimeout string `json:"testTimeout,omitempty"`
3032
3033	// ForceSendFields is a list of field names (e.g.
3034	// "AndroidInstrumentationTest") to unconditionally include in API
3035	// requests. By default, fields with empty values are omitted from API
3036	// requests. However, any non-pointer, non-interface field appearing in
3037	// ForceSendFields will be sent to the server regardless of whether the
3038	// field is empty or not. This may be used to include empty fields in
3039	// Patch requests.
3040	ForceSendFields []string `json:"-"`
3041
3042	// NullFields is a list of field names (e.g.
3043	// "AndroidInstrumentationTest") to include in API requests with the
3044	// JSON null value. By default, fields with empty values are omitted
3045	// from API requests. However, any field with an empty value appearing
3046	// in NullFields will be sent to the server as null. It is an error if a
3047	// field in this list has a non-empty value. This may be used to include
3048	// null fields in Patch requests.
3049	NullFields []string `json:"-"`
3050}
3051
3052func (s *TestSpecification) MarshalJSON() ([]byte, error) {
3053	type NoMethod TestSpecification
3054	raw := NoMethod(*s)
3055	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3056}
3057
3058// TestTargetsForShard: Test targets for a shard.
3059type TestTargetsForShard struct {
3060	// TestTargets: Group of packages, classes, and/or test methods to be
3061	// run for each shard.
3062	// The targets need to be specified in AndroidJUnitRunner argument
3063	// format. For
3064	// example, “package com.my.packages” “class
3065	// com.my.package.MyClass”.
3066	//
3067	// The number of shard_test_targets must be greater than 0.
3068	TestTargets []string `json:"testTargets,omitempty"`
3069
3070	// ForceSendFields is a list of field names (e.g. "TestTargets") to
3071	// unconditionally include in API requests. By default, fields with
3072	// empty values are omitted from API requests. However, any non-pointer,
3073	// non-interface field appearing in ForceSendFields will be sent to the
3074	// server regardless of whether the field is empty or not. This may be
3075	// used to include empty fields in Patch requests.
3076	ForceSendFields []string `json:"-"`
3077
3078	// NullFields is a list of field names (e.g. "TestTargets") to include
3079	// in API requests with the JSON null value. By default, fields with
3080	// empty values are omitted from API requests. However, any field with
3081	// an empty value appearing in NullFields will be sent to the server as
3082	// null. It is an error if a field in this list has a non-empty value.
3083	// This may be used to include null fields in Patch requests.
3084	NullFields []string `json:"-"`
3085}
3086
3087func (s *TestTargetsForShard) MarshalJSON() ([]byte, error) {
3088	type NoMethod TestTargetsForShard
3089	raw := NoMethod(*s)
3090	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3091}
3092
3093// ToolResultsExecution: Represents a tool results execution
3094// resource.
3095//
3096// This has the results of a TestMatrix.
3097type ToolResultsExecution struct {
3098	// ExecutionId: Output only. A tool results execution ID.
3099	ExecutionId string `json:"executionId,omitempty"`
3100
3101	// HistoryId: Output only. A tool results history ID.
3102	HistoryId string `json:"historyId,omitempty"`
3103
3104	// ProjectId: Output only. The cloud project that owns the tool results
3105	// execution.
3106	ProjectId string `json:"projectId,omitempty"`
3107
3108	// ForceSendFields is a list of field names (e.g. "ExecutionId") to
3109	// unconditionally include in API requests. By default, fields with
3110	// empty values are omitted from API requests. However, any non-pointer,
3111	// non-interface field appearing in ForceSendFields will be sent to the
3112	// server regardless of whether the field is empty or not. This may be
3113	// used to include empty fields in Patch requests.
3114	ForceSendFields []string `json:"-"`
3115
3116	// NullFields is a list of field names (e.g. "ExecutionId") to include
3117	// in API requests with the JSON null value. By default, fields with
3118	// empty values are omitted from API requests. However, any field with
3119	// an empty value appearing in NullFields will be sent to the server as
3120	// null. It is an error if a field in this list has a non-empty value.
3121	// This may be used to include null fields in Patch requests.
3122	NullFields []string `json:"-"`
3123}
3124
3125func (s *ToolResultsExecution) MarshalJSON() ([]byte, error) {
3126	type NoMethod ToolResultsExecution
3127	raw := NoMethod(*s)
3128	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3129}
3130
3131// ToolResultsHistory: Represents a tool results history resource.
3132type ToolResultsHistory struct {
3133	// HistoryId: Required. A tool results history ID.
3134	HistoryId string `json:"historyId,omitempty"`
3135
3136	// ProjectId: Required. The cloud project that owns the tool results
3137	// history.
3138	ProjectId string `json:"projectId,omitempty"`
3139
3140	// ForceSendFields is a list of field names (e.g. "HistoryId") to
3141	// unconditionally include in API requests. By default, fields with
3142	// empty values are omitted from API requests. However, any non-pointer,
3143	// non-interface field appearing in ForceSendFields will be sent to the
3144	// server regardless of whether the field is empty or not. This may be
3145	// used to include empty fields in Patch requests.
3146	ForceSendFields []string `json:"-"`
3147
3148	// NullFields is a list of field names (e.g. "HistoryId") to include in
3149	// API requests with the JSON null value. By default, fields with empty
3150	// values are omitted from API requests. However, any field with an
3151	// empty value appearing in NullFields will be sent to the server as
3152	// null. It is an error if a field in this list has a non-empty value.
3153	// This may be used to include null fields in Patch requests.
3154	NullFields []string `json:"-"`
3155}
3156
3157func (s *ToolResultsHistory) MarshalJSON() ([]byte, error) {
3158	type NoMethod ToolResultsHistory
3159	raw := NoMethod(*s)
3160	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3161}
3162
3163// ToolResultsStep: Represents a tool results step resource.
3164//
3165// This has the results of a TestExecution.
3166type ToolResultsStep struct {
3167	// ExecutionId: Output only. A tool results execution ID.
3168	ExecutionId string `json:"executionId,omitempty"`
3169
3170	// HistoryId: Output only. A tool results history ID.
3171	HistoryId string `json:"historyId,omitempty"`
3172
3173	// ProjectId: Output only. The cloud project that owns the tool results
3174	// step.
3175	ProjectId string `json:"projectId,omitempty"`
3176
3177	// StepId: Output only. A tool results step ID.
3178	StepId string `json:"stepId,omitempty"`
3179
3180	// ForceSendFields is a list of field names (e.g. "ExecutionId") to
3181	// unconditionally include in API requests. By default, fields with
3182	// empty values are omitted from API requests. However, any non-pointer,
3183	// non-interface field appearing in ForceSendFields will be sent to the
3184	// server regardless of whether the field is empty or not. This may be
3185	// used to include empty fields in Patch requests.
3186	ForceSendFields []string `json:"-"`
3187
3188	// NullFields is a list of field names (e.g. "ExecutionId") to include
3189	// in API requests with the JSON null value. By default, fields with
3190	// empty values are omitted from API requests. However, any field with
3191	// an empty value appearing in NullFields will be sent to the server as
3192	// null. It is an error if a field in this list has a non-empty value.
3193	// This may be used to include null fields in Patch requests.
3194	NullFields []string `json:"-"`
3195}
3196
3197func (s *ToolResultsStep) MarshalJSON() ([]byte, error) {
3198	type NoMethod ToolResultsStep
3199	raw := NoMethod(*s)
3200	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3201}
3202
3203// TrafficRule: Network emulation parameters.
3204type TrafficRule struct {
3205	// Bandwidth: Bandwidth in kbits/second.
3206	Bandwidth float64 `json:"bandwidth,omitempty"`
3207
3208	// Burst: Burst size in kbits.
3209	Burst float64 `json:"burst,omitempty"`
3210
3211	// Delay: Packet delay, must be >= 0.
3212	Delay string `json:"delay,omitempty"`
3213
3214	// PacketDuplicationRatio: Packet duplication ratio (0.0 - 1.0).
3215	PacketDuplicationRatio float64 `json:"packetDuplicationRatio,omitempty"`
3216
3217	// PacketLossRatio: Packet loss ratio (0.0 - 1.0).
3218	PacketLossRatio float64 `json:"packetLossRatio,omitempty"`
3219
3220	// ForceSendFields is a list of field names (e.g. "Bandwidth") to
3221	// unconditionally include in API requests. By default, fields with
3222	// empty values are omitted from API requests. However, any non-pointer,
3223	// non-interface field appearing in ForceSendFields will be sent to the
3224	// server regardless of whether the field is empty or not. This may be
3225	// used to include empty fields in Patch requests.
3226	ForceSendFields []string `json:"-"`
3227
3228	// NullFields is a list of field names (e.g. "Bandwidth") to include in
3229	// API requests with the JSON null value. By default, fields with empty
3230	// values are omitted from API requests. However, any field with an
3231	// empty value appearing in NullFields will be sent to the server as
3232	// null. It is an error if a field in this list has a non-empty value.
3233	// This may be used to include null fields in Patch requests.
3234	NullFields []string `json:"-"`
3235}
3236
3237func (s *TrafficRule) MarshalJSON() ([]byte, error) {
3238	type NoMethod TrafficRule
3239	raw := NoMethod(*s)
3240	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3241}
3242
3243func (s *TrafficRule) UnmarshalJSON(data []byte) error {
3244	type NoMethod TrafficRule
3245	var s1 struct {
3246		Bandwidth              gensupport.JSONFloat64 `json:"bandwidth"`
3247		Burst                  gensupport.JSONFloat64 `json:"burst"`
3248		PacketDuplicationRatio gensupport.JSONFloat64 `json:"packetDuplicationRatio"`
3249		PacketLossRatio        gensupport.JSONFloat64 `json:"packetLossRatio"`
3250		*NoMethod
3251	}
3252	s1.NoMethod = (*NoMethod)(s)
3253	if err := json.Unmarshal(data, &s1); err != nil {
3254		return err
3255	}
3256	s.Bandwidth = float64(s1.Bandwidth)
3257	s.Burst = float64(s1.Burst)
3258	s.PacketDuplicationRatio = float64(s1.PacketDuplicationRatio)
3259	s.PacketLossRatio = float64(s1.PacketLossRatio)
3260	return nil
3261}
3262
3263// UniformSharding: Uniformly shards test cases given a total number of
3264// shards.
3265//
3266// For Instrumentation test, it will be translated to “-e numShard”
3267// “-e
3268// shardIndex” AndroidJUnitRunner arguments. With uniform sharding
3269// enabled,
3270// specifying these sharding arguments via environment_variables is
3271// invalid.
3272type UniformSharding struct {
3273	// NumShards: Required. Total number of shards. The number must be >= 1
3274	// and <= 50.
3275	NumShards int64 `json:"numShards,omitempty"`
3276
3277	// ForceSendFields is a list of field names (e.g. "NumShards") to
3278	// unconditionally include in API requests. By default, fields with
3279	// empty values are omitted from API requests. However, any non-pointer,
3280	// non-interface field appearing in ForceSendFields will be sent to the
3281	// server regardless of whether the field is empty or not. This may be
3282	// used to include empty fields in Patch requests.
3283	ForceSendFields []string `json:"-"`
3284
3285	// NullFields is a list of field names (e.g. "NumShards") to include in
3286	// API requests with the JSON null value. By default, fields with empty
3287	// values are omitted from API requests. However, any field with an
3288	// empty value appearing in NullFields will be sent to the server as
3289	// null. It is an error if a field in this list has a non-empty value.
3290	// This may be used to include null fields in Patch requests.
3291	NullFields []string `json:"-"`
3292}
3293
3294func (s *UniformSharding) MarshalJSON() ([]byte, error) {
3295	type NoMethod UniformSharding
3296	raw := NoMethod(*s)
3297	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3298}
3299
3300// XcodeVersion: An Xcode version that an iOS version is compatible
3301// with.
3302type XcodeVersion struct {
3303	// Tags: Tags for this Xcode version.
3304	// Example: "default".
3305	Tags []string `json:"tags,omitempty"`
3306
3307	// Version: The id for this version.
3308	// Example: "9.2".
3309	Version string `json:"version,omitempty"`
3310
3311	// ForceSendFields is a list of field names (e.g. "Tags") to
3312	// unconditionally include in API requests. By default, fields with
3313	// empty values are omitted from API requests. However, any non-pointer,
3314	// non-interface field appearing in ForceSendFields will be sent to the
3315	// server regardless of whether the field is empty or not. This may be
3316	// used to include empty fields in Patch requests.
3317	ForceSendFields []string `json:"-"`
3318
3319	// NullFields is a list of field names (e.g. "Tags") to include in API
3320	// requests with the JSON null value. By default, fields with empty
3321	// values are omitted from API requests. However, any field with an
3322	// empty value appearing in NullFields will be sent to the server as
3323	// null. It is an error if a field in this list has a non-empty value.
3324	// This may be used to include null fields in Patch requests.
3325	NullFields []string `json:"-"`
3326}
3327
3328func (s *XcodeVersion) MarshalJSON() ([]byte, error) {
3329	type NoMethod XcodeVersion
3330	raw := NoMethod(*s)
3331	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3332}
3333
3334// method id "testing.applicationDetailService.getApkDetails":
3335
3336type ApplicationDetailServiceGetApkDetailsCall struct {
3337	s             *Service
3338	filereference *FileReference
3339	urlParams_    gensupport.URLParams
3340	ctx_          context.Context
3341	header_       http.Header
3342}
3343
3344// GetApkDetails: Gets the details of an Android application APK.
3345func (r *ApplicationDetailServiceService) GetApkDetails(filereference *FileReference) *ApplicationDetailServiceGetApkDetailsCall {
3346	c := &ApplicationDetailServiceGetApkDetailsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3347	c.filereference = filereference
3348	return c
3349}
3350
3351// Fields allows partial responses to be retrieved. See
3352// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3353// for more information.
3354func (c *ApplicationDetailServiceGetApkDetailsCall) Fields(s ...googleapi.Field) *ApplicationDetailServiceGetApkDetailsCall {
3355	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3356	return c
3357}
3358
3359// Context sets the context to be used in this call's Do method. Any
3360// pending HTTP request will be aborted if the provided context is
3361// canceled.
3362func (c *ApplicationDetailServiceGetApkDetailsCall) Context(ctx context.Context) *ApplicationDetailServiceGetApkDetailsCall {
3363	c.ctx_ = ctx
3364	return c
3365}
3366
3367// Header returns an http.Header that can be modified by the caller to
3368// add HTTP headers to the request.
3369func (c *ApplicationDetailServiceGetApkDetailsCall) Header() http.Header {
3370	if c.header_ == nil {
3371		c.header_ = make(http.Header)
3372	}
3373	return c.header_
3374}
3375
3376func (c *ApplicationDetailServiceGetApkDetailsCall) doRequest(alt string) (*http.Response, error) {
3377	reqHeaders := make(http.Header)
3378	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
3379	for k, v := range c.header_ {
3380		reqHeaders[k] = v
3381	}
3382	reqHeaders.Set("User-Agent", c.s.userAgent())
3383	var body io.Reader = nil
3384	body, err := googleapi.WithoutDataWrapper.JSONReader(c.filereference)
3385	if err != nil {
3386		return nil, err
3387	}
3388	reqHeaders.Set("Content-Type", "application/json")
3389	c.urlParams_.Set("alt", alt)
3390	c.urlParams_.Set("prettyPrint", "false")
3391	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/applicationDetailService/getApkDetails")
3392	urls += "?" + c.urlParams_.Encode()
3393	req, err := http.NewRequest("POST", urls, body)
3394	if err != nil {
3395		return nil, err
3396	}
3397	req.Header = reqHeaders
3398	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3399}
3400
3401// Do executes the "testing.applicationDetailService.getApkDetails" call.
3402// Exactly one of *GetApkDetailsResponse or error will be non-nil. Any
3403// non-2xx status code is an error. Response headers are in either
3404// *GetApkDetailsResponse.ServerResponse.Header or (if a response was
3405// returned at all) in error.(*googleapi.Error).Header. Use
3406// googleapi.IsNotModified to check whether the returned error was
3407// because http.StatusNotModified was returned.
3408func (c *ApplicationDetailServiceGetApkDetailsCall) Do(opts ...googleapi.CallOption) (*GetApkDetailsResponse, error) {
3409	gensupport.SetOptions(c.urlParams_, opts...)
3410	res, err := c.doRequest("json")
3411	if res != nil && res.StatusCode == http.StatusNotModified {
3412		if res.Body != nil {
3413			res.Body.Close()
3414		}
3415		return nil, &googleapi.Error{
3416			Code:   res.StatusCode,
3417			Header: res.Header,
3418		}
3419	}
3420	if err != nil {
3421		return nil, err
3422	}
3423	defer googleapi.CloseBody(res)
3424	if err := googleapi.CheckResponse(res); err != nil {
3425		return nil, err
3426	}
3427	ret := &GetApkDetailsResponse{
3428		ServerResponse: googleapi.ServerResponse{
3429			Header:         res.Header,
3430			HTTPStatusCode: res.StatusCode,
3431		},
3432	}
3433	target := &ret
3434	if err := gensupport.DecodeResponse(target, res); err != nil {
3435		return nil, err
3436	}
3437	return ret, nil
3438	// {
3439	//   "description": "Gets the details of an Android application APK.",
3440	//   "flatPath": "v1/applicationDetailService/getApkDetails",
3441	//   "httpMethod": "POST",
3442	//   "id": "testing.applicationDetailService.getApkDetails",
3443	//   "parameterOrder": [],
3444	//   "parameters": {},
3445	//   "path": "v1/applicationDetailService/getApkDetails",
3446	//   "request": {
3447	//     "$ref": "FileReference"
3448	//   },
3449	//   "response": {
3450	//     "$ref": "GetApkDetailsResponse"
3451	//   },
3452	//   "scopes": [
3453	//     "https://www.googleapis.com/auth/cloud-platform"
3454	//   ]
3455	// }
3456
3457}
3458
3459// method id "testing.projects.testMatrices.cancel":
3460
3461type ProjectsTestMatricesCancelCall struct {
3462	s            *Service
3463	projectId    string
3464	testMatrixId string
3465	urlParams_   gensupport.URLParams
3466	ctx_         context.Context
3467	header_      http.Header
3468}
3469
3470// Cancel: Cancels unfinished test executions in a test matrix.
3471// This call returns immediately and cancellation proceeds
3472// asychronously.
3473// If the matrix is already final, this operation will have no
3474// effect.
3475//
3476// May return any of the following canonical error codes:
3477//
3478// - PERMISSION_DENIED - if the user is not authorized to read project
3479// - INVALID_ARGUMENT - if the request is malformed
3480// - NOT_FOUND - if the Test Matrix does not exist
3481func (r *ProjectsTestMatricesService) Cancel(projectId string, testMatrixId string) *ProjectsTestMatricesCancelCall {
3482	c := &ProjectsTestMatricesCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3483	c.projectId = projectId
3484	c.testMatrixId = testMatrixId
3485	return c
3486}
3487
3488// Fields allows partial responses to be retrieved. See
3489// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3490// for more information.
3491func (c *ProjectsTestMatricesCancelCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesCancelCall {
3492	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3493	return c
3494}
3495
3496// Context sets the context to be used in this call's Do method. Any
3497// pending HTTP request will be aborted if the provided context is
3498// canceled.
3499func (c *ProjectsTestMatricesCancelCall) Context(ctx context.Context) *ProjectsTestMatricesCancelCall {
3500	c.ctx_ = ctx
3501	return c
3502}
3503
3504// Header returns an http.Header that can be modified by the caller to
3505// add HTTP headers to the request.
3506func (c *ProjectsTestMatricesCancelCall) Header() http.Header {
3507	if c.header_ == nil {
3508		c.header_ = make(http.Header)
3509	}
3510	return c.header_
3511}
3512
3513func (c *ProjectsTestMatricesCancelCall) doRequest(alt string) (*http.Response, error) {
3514	reqHeaders := make(http.Header)
3515	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
3516	for k, v := range c.header_ {
3517		reqHeaders[k] = v
3518	}
3519	reqHeaders.Set("User-Agent", c.s.userAgent())
3520	var body io.Reader = nil
3521	c.urlParams_.Set("alt", alt)
3522	c.urlParams_.Set("prettyPrint", "false")
3523	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel")
3524	urls += "?" + c.urlParams_.Encode()
3525	req, err := http.NewRequest("POST", urls, body)
3526	if err != nil {
3527		return nil, err
3528	}
3529	req.Header = reqHeaders
3530	googleapi.Expand(req.URL, map[string]string{
3531		"projectId":    c.projectId,
3532		"testMatrixId": c.testMatrixId,
3533	})
3534	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3535}
3536
3537// Do executes the "testing.projects.testMatrices.cancel" call.
3538// Exactly one of *CancelTestMatrixResponse or error will be non-nil.
3539// Any non-2xx status code is an error. Response headers are in either
3540// *CancelTestMatrixResponse.ServerResponse.Header or (if a response was
3541// returned at all) in error.(*googleapi.Error).Header. Use
3542// googleapi.IsNotModified to check whether the returned error was
3543// because http.StatusNotModified was returned.
3544func (c *ProjectsTestMatricesCancelCall) Do(opts ...googleapi.CallOption) (*CancelTestMatrixResponse, error) {
3545	gensupport.SetOptions(c.urlParams_, opts...)
3546	res, err := c.doRequest("json")
3547	if res != nil && res.StatusCode == http.StatusNotModified {
3548		if res.Body != nil {
3549			res.Body.Close()
3550		}
3551		return nil, &googleapi.Error{
3552			Code:   res.StatusCode,
3553			Header: res.Header,
3554		}
3555	}
3556	if err != nil {
3557		return nil, err
3558	}
3559	defer googleapi.CloseBody(res)
3560	if err := googleapi.CheckResponse(res); err != nil {
3561		return nil, err
3562	}
3563	ret := &CancelTestMatrixResponse{
3564		ServerResponse: googleapi.ServerResponse{
3565			Header:         res.Header,
3566			HTTPStatusCode: res.StatusCode,
3567		},
3568	}
3569	target := &ret
3570	if err := gensupport.DecodeResponse(target, res); err != nil {
3571		return nil, err
3572	}
3573	return ret, nil
3574	// {
3575	//   "description": "Cancels unfinished test executions in a test matrix.\nThis call returns immediately and cancellation proceeds asychronously.\nIf the matrix is already final, this operation will have no effect.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
3576	//   "flatPath": "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel",
3577	//   "httpMethod": "POST",
3578	//   "id": "testing.projects.testMatrices.cancel",
3579	//   "parameterOrder": [
3580	//     "projectId",
3581	//     "testMatrixId"
3582	//   ],
3583	//   "parameters": {
3584	//     "projectId": {
3585	//       "description": "Cloud project that owns the test.",
3586	//       "location": "path",
3587	//       "required": true,
3588	//       "type": "string"
3589	//     },
3590	//     "testMatrixId": {
3591	//       "description": "Test matrix that will be canceled.",
3592	//       "location": "path",
3593	//       "required": true,
3594	//       "type": "string"
3595	//     }
3596	//   },
3597	//   "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel",
3598	//   "response": {
3599	//     "$ref": "CancelTestMatrixResponse"
3600	//   },
3601	//   "scopes": [
3602	//     "https://www.googleapis.com/auth/cloud-platform"
3603	//   ]
3604	// }
3605
3606}
3607
3608// method id "testing.projects.testMatrices.create":
3609
3610type ProjectsTestMatricesCreateCall struct {
3611	s          *Service
3612	projectId  string
3613	testmatrix *TestMatrix
3614	urlParams_ gensupport.URLParams
3615	ctx_       context.Context
3616	header_    http.Header
3617}
3618
3619// Create: Creates and runs a matrix of tests according to the given
3620// specifications.
3621// Unsupported environments will be returned in the state
3622// UNSUPPORTED.
3623// Matrices are limited to at most 200 supported executions.
3624//
3625// May return any of the following canonical error codes:
3626//
3627// - PERMISSION_DENIED - if the user is not authorized to write to
3628// project
3629// - INVALID_ARGUMENT - if the request is malformed or if the matrix
3630// expands
3631//                      to more than 200 supported executions
3632func (r *ProjectsTestMatricesService) Create(projectId string, testmatrix *TestMatrix) *ProjectsTestMatricesCreateCall {
3633	c := &ProjectsTestMatricesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3634	c.projectId = projectId
3635	c.testmatrix = testmatrix
3636	return c
3637}
3638
3639// RequestId sets the optional parameter "requestId": A string id used
3640// to detect duplicated requests.
3641// Ids are automatically scoped to a project, so
3642// users should ensure the ID is unique per-project.
3643// A UUID is recommended.
3644//
3645// Optional, but strongly recommended.
3646func (c *ProjectsTestMatricesCreateCall) RequestId(requestId string) *ProjectsTestMatricesCreateCall {
3647	c.urlParams_.Set("requestId", requestId)
3648	return c
3649}
3650
3651// Fields allows partial responses to be retrieved. See
3652// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3653// for more information.
3654func (c *ProjectsTestMatricesCreateCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesCreateCall {
3655	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3656	return c
3657}
3658
3659// Context sets the context to be used in this call's Do method. Any
3660// pending HTTP request will be aborted if the provided context is
3661// canceled.
3662func (c *ProjectsTestMatricesCreateCall) Context(ctx context.Context) *ProjectsTestMatricesCreateCall {
3663	c.ctx_ = ctx
3664	return c
3665}
3666
3667// Header returns an http.Header that can be modified by the caller to
3668// add HTTP headers to the request.
3669func (c *ProjectsTestMatricesCreateCall) Header() http.Header {
3670	if c.header_ == nil {
3671		c.header_ = make(http.Header)
3672	}
3673	return c.header_
3674}
3675
3676func (c *ProjectsTestMatricesCreateCall) doRequest(alt string) (*http.Response, error) {
3677	reqHeaders := make(http.Header)
3678	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
3679	for k, v := range c.header_ {
3680		reqHeaders[k] = v
3681	}
3682	reqHeaders.Set("User-Agent", c.s.userAgent())
3683	var body io.Reader = nil
3684	body, err := googleapi.WithoutDataWrapper.JSONReader(c.testmatrix)
3685	if err != nil {
3686		return nil, err
3687	}
3688	reqHeaders.Set("Content-Type", "application/json")
3689	c.urlParams_.Set("alt", alt)
3690	c.urlParams_.Set("prettyPrint", "false")
3691	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices")
3692	urls += "?" + c.urlParams_.Encode()
3693	req, err := http.NewRequest("POST", urls, body)
3694	if err != nil {
3695		return nil, err
3696	}
3697	req.Header = reqHeaders
3698	googleapi.Expand(req.URL, map[string]string{
3699		"projectId": c.projectId,
3700	})
3701	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3702}
3703
3704// Do executes the "testing.projects.testMatrices.create" call.
3705// Exactly one of *TestMatrix or error will be non-nil. Any non-2xx
3706// status code is an error. Response headers are in either
3707// *TestMatrix.ServerResponse.Header or (if a response was returned at
3708// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
3709// to check whether the returned error was because
3710// http.StatusNotModified was returned.
3711func (c *ProjectsTestMatricesCreateCall) Do(opts ...googleapi.CallOption) (*TestMatrix, error) {
3712	gensupport.SetOptions(c.urlParams_, opts...)
3713	res, err := c.doRequest("json")
3714	if res != nil && res.StatusCode == http.StatusNotModified {
3715		if res.Body != nil {
3716			res.Body.Close()
3717		}
3718		return nil, &googleapi.Error{
3719			Code:   res.StatusCode,
3720			Header: res.Header,
3721		}
3722	}
3723	if err != nil {
3724		return nil, err
3725	}
3726	defer googleapi.CloseBody(res)
3727	if err := googleapi.CheckResponse(res); err != nil {
3728		return nil, err
3729	}
3730	ret := &TestMatrix{
3731		ServerResponse: googleapi.ServerResponse{
3732			Header:         res.Header,
3733			HTTPStatusCode: res.StatusCode,
3734		},
3735	}
3736	target := &ret
3737	if err := gensupport.DecodeResponse(target, res); err != nil {
3738		return nil, err
3739	}
3740	return ret, nil
3741	// {
3742	//   "description": "Creates and runs a matrix of tests according to the given specifications.\nUnsupported environments will be returned in the state UNSUPPORTED.\nMatrices are limited to at most 200 supported executions.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to write to project\n- INVALID_ARGUMENT - if the request is malformed or if the matrix expands\n                     to more than 200 supported executions",
3743	//   "flatPath": "v1/projects/{projectId}/testMatrices",
3744	//   "httpMethod": "POST",
3745	//   "id": "testing.projects.testMatrices.create",
3746	//   "parameterOrder": [
3747	//     "projectId"
3748	//   ],
3749	//   "parameters": {
3750	//     "projectId": {
3751	//       "description": "The GCE project under which this job will run.",
3752	//       "location": "path",
3753	//       "required": true,
3754	//       "type": "string"
3755	//     },
3756	//     "requestId": {
3757	//       "description": "A string id used to detect duplicated requests.\nIds are automatically scoped to a project, so\nusers should ensure the ID is unique per-project.\nA UUID is recommended.\n\nOptional, but strongly recommended.",
3758	//       "location": "query",
3759	//       "type": "string"
3760	//     }
3761	//   },
3762	//   "path": "v1/projects/{projectId}/testMatrices",
3763	//   "request": {
3764	//     "$ref": "TestMatrix"
3765	//   },
3766	//   "response": {
3767	//     "$ref": "TestMatrix"
3768	//   },
3769	//   "scopes": [
3770	//     "https://www.googleapis.com/auth/cloud-platform"
3771	//   ]
3772	// }
3773
3774}
3775
3776// method id "testing.projects.testMatrices.get":
3777
3778type ProjectsTestMatricesGetCall struct {
3779	s            *Service
3780	projectId    string
3781	testMatrixId string
3782	urlParams_   gensupport.URLParams
3783	ifNoneMatch_ string
3784	ctx_         context.Context
3785	header_      http.Header
3786}
3787
3788// Get: Checks the status of a test matrix.
3789//
3790// May return any of the following canonical error codes:
3791//
3792// - PERMISSION_DENIED - if the user is not authorized to read project
3793// - INVALID_ARGUMENT - if the request is malformed
3794// - NOT_FOUND - if the Test Matrix does not exist
3795func (r *ProjectsTestMatricesService) Get(projectId string, testMatrixId string) *ProjectsTestMatricesGetCall {
3796	c := &ProjectsTestMatricesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3797	c.projectId = projectId
3798	c.testMatrixId = testMatrixId
3799	return c
3800}
3801
3802// Fields allows partial responses to be retrieved. See
3803// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3804// for more information.
3805func (c *ProjectsTestMatricesGetCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesGetCall {
3806	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3807	return c
3808}
3809
3810// IfNoneMatch sets the optional parameter which makes the operation
3811// fail if the object's ETag matches the given value. This is useful for
3812// getting updates only after the object has changed since the last
3813// request. Use googleapi.IsNotModified to check whether the response
3814// error from Do is the result of In-None-Match.
3815func (c *ProjectsTestMatricesGetCall) IfNoneMatch(entityTag string) *ProjectsTestMatricesGetCall {
3816	c.ifNoneMatch_ = entityTag
3817	return c
3818}
3819
3820// Context sets the context to be used in this call's Do method. Any
3821// pending HTTP request will be aborted if the provided context is
3822// canceled.
3823func (c *ProjectsTestMatricesGetCall) Context(ctx context.Context) *ProjectsTestMatricesGetCall {
3824	c.ctx_ = ctx
3825	return c
3826}
3827
3828// Header returns an http.Header that can be modified by the caller to
3829// add HTTP headers to the request.
3830func (c *ProjectsTestMatricesGetCall) Header() http.Header {
3831	if c.header_ == nil {
3832		c.header_ = make(http.Header)
3833	}
3834	return c.header_
3835}
3836
3837func (c *ProjectsTestMatricesGetCall) doRequest(alt string) (*http.Response, error) {
3838	reqHeaders := make(http.Header)
3839	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
3840	for k, v := range c.header_ {
3841		reqHeaders[k] = v
3842	}
3843	reqHeaders.Set("User-Agent", c.s.userAgent())
3844	if c.ifNoneMatch_ != "" {
3845		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
3846	}
3847	var body io.Reader = nil
3848	c.urlParams_.Set("alt", alt)
3849	c.urlParams_.Set("prettyPrint", "false")
3850	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices/{testMatrixId}")
3851	urls += "?" + c.urlParams_.Encode()
3852	req, err := http.NewRequest("GET", urls, body)
3853	if err != nil {
3854		return nil, err
3855	}
3856	req.Header = reqHeaders
3857	googleapi.Expand(req.URL, map[string]string{
3858		"projectId":    c.projectId,
3859		"testMatrixId": c.testMatrixId,
3860	})
3861	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3862}
3863
3864// Do executes the "testing.projects.testMatrices.get" call.
3865// Exactly one of *TestMatrix or error will be non-nil. Any non-2xx
3866// status code is an error. Response headers are in either
3867// *TestMatrix.ServerResponse.Header or (if a response was returned at
3868// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
3869// to check whether the returned error was because
3870// http.StatusNotModified was returned.
3871func (c *ProjectsTestMatricesGetCall) Do(opts ...googleapi.CallOption) (*TestMatrix, error) {
3872	gensupport.SetOptions(c.urlParams_, opts...)
3873	res, err := c.doRequest("json")
3874	if res != nil && res.StatusCode == http.StatusNotModified {
3875		if res.Body != nil {
3876			res.Body.Close()
3877		}
3878		return nil, &googleapi.Error{
3879			Code:   res.StatusCode,
3880			Header: res.Header,
3881		}
3882	}
3883	if err != nil {
3884		return nil, err
3885	}
3886	defer googleapi.CloseBody(res)
3887	if err := googleapi.CheckResponse(res); err != nil {
3888		return nil, err
3889	}
3890	ret := &TestMatrix{
3891		ServerResponse: googleapi.ServerResponse{
3892			Header:         res.Header,
3893			HTTPStatusCode: res.StatusCode,
3894		},
3895	}
3896	target := &ret
3897	if err := gensupport.DecodeResponse(target, res); err != nil {
3898		return nil, err
3899	}
3900	return ret, nil
3901	// {
3902	//   "description": "Checks the status of a test matrix.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
3903	//   "flatPath": "v1/projects/{projectId}/testMatrices/{testMatrixId}",
3904	//   "httpMethod": "GET",
3905	//   "id": "testing.projects.testMatrices.get",
3906	//   "parameterOrder": [
3907	//     "projectId",
3908	//     "testMatrixId"
3909	//   ],
3910	//   "parameters": {
3911	//     "projectId": {
3912	//       "description": "Cloud project that owns the test matrix.",
3913	//       "location": "path",
3914	//       "required": true,
3915	//       "type": "string"
3916	//     },
3917	//     "testMatrixId": {
3918	//       "description": "Unique test matrix id which was assigned by the service.",
3919	//       "location": "path",
3920	//       "required": true,
3921	//       "type": "string"
3922	//     }
3923	//   },
3924	//   "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}",
3925	//   "response": {
3926	//     "$ref": "TestMatrix"
3927	//   },
3928	//   "scopes": [
3929	//     "https://www.googleapis.com/auth/cloud-platform",
3930	//     "https://www.googleapis.com/auth/cloud-platform.read-only"
3931	//   ]
3932	// }
3933
3934}
3935
3936// method id "testing.testEnvironmentCatalog.get":
3937
3938type TestEnvironmentCatalogGetCall struct {
3939	s               *Service
3940	environmentType string
3941	urlParams_      gensupport.URLParams
3942	ifNoneMatch_    string
3943	ctx_            context.Context
3944	header_         http.Header
3945}
3946
3947// Get: Gets the catalog of supported test environments.
3948//
3949// May return any of the following canonical error codes:
3950//
3951// - INVALID_ARGUMENT - if the request is malformed
3952// - NOT_FOUND - if the environment type does not exist
3953// - INTERNAL - if an internal error occurred
3954func (r *TestEnvironmentCatalogService) Get(environmentType string) *TestEnvironmentCatalogGetCall {
3955	c := &TestEnvironmentCatalogGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3956	c.environmentType = environmentType
3957	return c
3958}
3959
3960// ProjectId sets the optional parameter "projectId": For authorization,
3961// the cloud project requesting the TestEnvironmentCatalog.
3962func (c *TestEnvironmentCatalogGetCall) ProjectId(projectId string) *TestEnvironmentCatalogGetCall {
3963	c.urlParams_.Set("projectId", projectId)
3964	return c
3965}
3966
3967// Fields allows partial responses to be retrieved. See
3968// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3969// for more information.
3970func (c *TestEnvironmentCatalogGetCall) Fields(s ...googleapi.Field) *TestEnvironmentCatalogGetCall {
3971	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3972	return c
3973}
3974
3975// IfNoneMatch sets the optional parameter which makes the operation
3976// fail if the object's ETag matches the given value. This is useful for
3977// getting updates only after the object has changed since the last
3978// request. Use googleapi.IsNotModified to check whether the response
3979// error from Do is the result of In-None-Match.
3980func (c *TestEnvironmentCatalogGetCall) IfNoneMatch(entityTag string) *TestEnvironmentCatalogGetCall {
3981	c.ifNoneMatch_ = entityTag
3982	return c
3983}
3984
3985// Context sets the context to be used in this call's Do method. Any
3986// pending HTTP request will be aborted if the provided context is
3987// canceled.
3988func (c *TestEnvironmentCatalogGetCall) Context(ctx context.Context) *TestEnvironmentCatalogGetCall {
3989	c.ctx_ = ctx
3990	return c
3991}
3992
3993// Header returns an http.Header that can be modified by the caller to
3994// add HTTP headers to the request.
3995func (c *TestEnvironmentCatalogGetCall) Header() http.Header {
3996	if c.header_ == nil {
3997		c.header_ = make(http.Header)
3998	}
3999	return c.header_
4000}
4001
4002func (c *TestEnvironmentCatalogGetCall) doRequest(alt string) (*http.Response, error) {
4003	reqHeaders := make(http.Header)
4004	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
4005	for k, v := range c.header_ {
4006		reqHeaders[k] = v
4007	}
4008	reqHeaders.Set("User-Agent", c.s.userAgent())
4009	if c.ifNoneMatch_ != "" {
4010		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4011	}
4012	var body io.Reader = nil
4013	c.urlParams_.Set("alt", alt)
4014	c.urlParams_.Set("prettyPrint", "false")
4015	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/testEnvironmentCatalog/{environmentType}")
4016	urls += "?" + c.urlParams_.Encode()
4017	req, err := http.NewRequest("GET", urls, body)
4018	if err != nil {
4019		return nil, err
4020	}
4021	req.Header = reqHeaders
4022	googleapi.Expand(req.URL, map[string]string{
4023		"environmentType": c.environmentType,
4024	})
4025	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4026}
4027
4028// Do executes the "testing.testEnvironmentCatalog.get" call.
4029// Exactly one of *TestEnvironmentCatalog or error will be non-nil. Any
4030// non-2xx status code is an error. Response headers are in either
4031// *TestEnvironmentCatalog.ServerResponse.Header or (if a response was
4032// returned at all) in error.(*googleapi.Error).Header. Use
4033// googleapi.IsNotModified to check whether the returned error was
4034// because http.StatusNotModified was returned.
4035func (c *TestEnvironmentCatalogGetCall) Do(opts ...googleapi.CallOption) (*TestEnvironmentCatalog, error) {
4036	gensupport.SetOptions(c.urlParams_, opts...)
4037	res, err := c.doRequest("json")
4038	if res != nil && res.StatusCode == http.StatusNotModified {
4039		if res.Body != nil {
4040			res.Body.Close()
4041		}
4042		return nil, &googleapi.Error{
4043			Code:   res.StatusCode,
4044			Header: res.Header,
4045		}
4046	}
4047	if err != nil {
4048		return nil, err
4049	}
4050	defer googleapi.CloseBody(res)
4051	if err := googleapi.CheckResponse(res); err != nil {
4052		return nil, err
4053	}
4054	ret := &TestEnvironmentCatalog{
4055		ServerResponse: googleapi.ServerResponse{
4056			Header:         res.Header,
4057			HTTPStatusCode: res.StatusCode,
4058		},
4059	}
4060	target := &ret
4061	if err := gensupport.DecodeResponse(target, res); err != nil {
4062		return nil, err
4063	}
4064	return ret, nil
4065	// {
4066	//   "description": "Gets the catalog of supported test environments.\n\nMay return any of the following canonical error codes:\n\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the environment type does not exist\n- INTERNAL - if an internal error occurred",
4067	//   "flatPath": "v1/testEnvironmentCatalog/{environmentType}",
4068	//   "httpMethod": "GET",
4069	//   "id": "testing.testEnvironmentCatalog.get",
4070	//   "parameterOrder": [
4071	//     "environmentType"
4072	//   ],
4073	//   "parameters": {
4074	//     "environmentType": {
4075	//       "description": "Required. The type of environment that should be listed.",
4076	//       "enum": [
4077	//         "ENVIRONMENT_TYPE_UNSPECIFIED",
4078	//         "ANDROID",
4079	//         "IOS",
4080	//         "NETWORK_CONFIGURATION",
4081	//         "PROVIDED_SOFTWARE"
4082	//       ],
4083	//       "location": "path",
4084	//       "required": true,
4085	//       "type": "string"
4086	//     },
4087	//     "projectId": {
4088	//       "description": "For authorization, the cloud project requesting the TestEnvironmentCatalog.",
4089	//       "location": "query",
4090	//       "type": "string"
4091	//     }
4092	//   },
4093	//   "path": "v1/testEnvironmentCatalog/{environmentType}",
4094	//   "response": {
4095	//     "$ref": "TestEnvironmentCatalog"
4096	//   },
4097	//   "scopes": [
4098	//     "https://www.googleapis.com/auth/cloud-platform",
4099	//     "https://www.googleapis.com/auth/cloud-platform.read-only"
4100	//   ]
4101	// }
4102
4103}
4104